2020.7.7比賽總結

題目鏈接
感受:首先是有道題一開始想麻煩了,耽誤了很長時間,然後回顧了一下以前比賽時候類似這種題的做法,發現這種情況已經不是一次兩次了,經常出現,總是會想麻煩,一開始就偏離了正確做法,導致時間花費很多。而我又感覺到有些題(不是指這一次比賽)能夠很快的想出正確做法,我總結一下我總是卡住的題型和很快做出的題型,發現:類似於一些純數學問題總是會卡那麼一下,感覺自己的數學沒有這麼差吧。另一類就是像那種想一些結論性的東西能很快做出來,具體爲什麼我也不清楚,再打幾場比賽找找自己的原因吧
這些題編碼難度都不高,難的就是思維,自己的思維能力老是提不上來,總是看着題解會,自己做的時候就會瞎想,總的來講還是思考方向把喔不準。
下面總結一下所有題的思路。

A題

題目大意:給你一棵樹,每個節點都有一個取值範圍,只要有一個節點的值變了就說這棵樹變了。求所有數的值的和。(值的定義是這樣的:H=s=1n1i=snhiH=\sum_{s=1}^{n-1}\sum_{i=s}^{n}h_{i})
想了沒思路,這道題搜了一下要用線段樹+樹鏈剖分+dp,嗯嗯。。等我再學學以後來補吧。。

B題

題目大意:你有一個m個人的小隊,每個人都有一個敏捷度a值,現在要吧他們從0領到n+1(在水平軸上),你可以單獨走,可以前進後退,每次只能走一格,花費一秒。你的小隊的人只能跟着你走。很不幸,這條座標軸上有陷阱,給出每個陷阱的參數,l,r,d。表示陷阱i在li位置,敏捷度低於di的人不能通過,如果要解除這個陷阱你就必須要走到ri(你無視陷阱)。求最多可以帶多少個人到n+1上。
思路:二分答案然後模擬這個過程。
整個模擬過程每次都只需要考慮敏捷度最低的那個人的值,然後教練帶着從0走到限制我們的第一個陷阱的前一個格li-1,然後教練去拆掉這個陷阱,算出拆掉陷阱的時間t,要乘二,因爲是來回兩遍,然後讓隊伍走到下一個有效的限制陷阱的前一個格,最後答案就是整個路段拆掉陷阱的時間加上n+1.
judge函數內容:

bool judge(int x)
{
    if(x==0) return 1;
    ll mi=a[m-x+1],cnt=0;
    ll tt=0;
    for(int i=1;i<=k;i++)
    {
        if(b[i].d>mi) c[++cnt]=i;
    }
    int now=0;
    for(int i=1;i<=cnt;i++)
    {
        if(now>=b[c[i]].r) continue;
        now=max(now,b[c[i]].l-1);//保證當前到達的位置是最大的
        tt+=(b[c[i]].r-now)<<1;
        now=b[c[i]].r;
    }
    tt=tt+n+1;
    if(tt>t) return false;
    else return true;
}

C題

題目大意:給你兩個數c和sum分別表示目前有的,和需要的。最後結果是把目前的sum分成若干部分,一個部分的值k最終產生的值是k2k^{2},將每一部分的值相加,要求最小。
思路:如果c>=sum的話直接每一份都分成1,最後結果就是sum。否則,把sum分成c份,sum/c向下取整,然後求出m=sum%c結果就是m*(num+1) * (num+1)+(c-m) * (num*num)。

D題

題目大意:你有一個朋友,他想當冠軍,但他實力有限,有n個選手,下標代表一個人的實力,ai代表如果賄賂他需要花費的錢。求最少花費多少錢能讓朋友奪冠。
還沒太想透,等想透再來整理一遍思路。

E題

題目大意:給你三個數r,b,k。從0開始如果遇到r的倍數就給她塗成紅色,遇到b的倍數塗成藍色,遇到他們兩個的公倍數,可以任意塗紅藍之間的顏色,如果最後出現了連續k個相同的顏色,則失敗。
思路:爲了簡化情況,可以使得r<=b。當r=b時直接成功。r<b時需要得到在連續兩個b的倍數之間最多能插入多少個r的倍數。設從xb開始,第一個r的倍數距離xb爲t,那麼
xb+t=yr.xbyr=t.使gcdbrtxb+t=yr.化簡得xb-yr=-t.爲了使這個方程有解,那麼gcd(b,r)|t也就是說t>=gcd(b,r)。從xb到(x+1)b這個區間的長度是b-1.那麼能插入的r的倍數的數量是b1tr+1\frac{b-1-t}{r}+1爲了使這個值最大,那麼t就必須要最小,即gcd(b,r),那麼最終一個區間裏r的倍數的數量最多爲b1gcd(b,r)r+1\frac{b-1-gcd(b,r)}{r}+1然後和k比較即可。

F題

題目大意:給你兩個數a,b。每次可以執行一個操作,任意選擇一個整數x,讓a-=x,b-=2 *x或者a-=2 *x,b-=x。問能否使得ab同時爲零。
思路:簡化情況使得a<=b
考慮到每次操作都是一比二,所有無論選擇什麼數,都可以看成以1和2或2和1爲基礎,那麼每次操作都會使得a+b的總和減去3,如果能夠同時爲0那麼a+b一定爲三的倍數。考慮1 3這種情況2 *a<b就算每次讓a減1b減2,當a爲0時b也不會爲零,所以這種情況也是不可以的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章