2020牛客多校訓練第3場ABC

2022-08-22 09:27:09 字數 1483 閱讀 5701

題目大意:有n個階段,每個階段可能是4種狀態的一種。

1:沒魚沒飼料;

2:沒魚有飼料;

3:有魚沒飼料;

4:有魚有飼料。

對於每個階段:

我們可以用飼料做魚餌,

或者用魚餌釣魚,

或者在該狀態有魚的時候直接把魚抓起來。

解題思路:在3.4狀態是,我們必然是直接把有的魚抓起來就可以了。

在第1種狀態,如果我們手裡有魚餌就可以釣一條魚。

在第3種狀態,如果後面的1的數量比當前存的魚餌量多或等於,就繼續存魚餌,反之釣魚。

*/

#includeusing namespace std;

int main()

int food=0,fish=0;

for(int i=0;i=1)food--,fish++;

}else if(s[i]=='1')

}else fish++;

}printf("%d\n",fish);

}return 0;

}

/*題目大意:給你乙個字串,n次操作。

m表示把前面k個字元挪後面,或把後面-k(k為負數)個挪前面。

a表示詢問,第k個字母是什麼。

解題思路:首位相連,看成乙個環以後,所謂的挪動其實就是改動把那個字母看成頭,然後這題就沒了。

*/

#includeusing namespace std;

int main()

return 0;

}

/*題目大意:給出左手和右手的二維座標表示法。可能會旋轉平移,逆時針或順時針給出,不會改變大小,問是左手還是右手。

解題思路:先確定是逆時針還是順時針。然後找出長度為10的那條邊,看它接下來的邊的長度就可以確定是左手還是右手了。

在判斷是否相等的過程中需要注意精度問題,有時候結果可能是個小數,需要四捨五入到int型進行判斷

*/

#includeusing namespace std;

struct point

point (double x,double y):x(x),y(y){}

point operator + (point b)

point operator - (point b)

};typedef point vector;

double cross(vector a,vector b)

point p[24];

double parea(int n)

p[21]=p[1];

if(parea(20)<0)

if(dis(p[(i+1)%20],p[(i+2)%20])==6)cout<<"right"

else

if(dis(p[(i+1)%20],p[(i+2)%20])==6)cout<<"left"

}return 0;

}

牛客暑期多校訓練營2020第4場

題意 給乙個以1為根的樹,定義乙個點的 ancient distance 祖先距離 為該點到最近的被標記的祖先的距離。對於i 1 i n 1 le i le n 1 i n 求標記i個點時,整棵樹上的 ancient distance 的最大值的最小值 設為xi 輸出xi的和。思路 假設已知整棵樹上...

2020牛客暑期多校訓練營(第五場)

總結 f題添老師一發ac,i 題起初不會做在想怎麼化簡那個式子,後來就直接畫出了最優的圖,然後猜了一發2 3過了。ef 一級目錄 一級目錄 一級目錄 乙個包括n個音符的陣列,音符按下標1 n排列,表示音符由低到高。有兩個操作 drop 2 將第二高的音符移到最低的位置 即將倒數第二個移到第乙個。in...

2020牛客暑假多校訓練第十場題解

題目描述 給出乙個素數p,要求你找出乙個1 p 1的排列滿足對於任意乙個i x i 1 2x i mo dp x 或者xi 1 3 xi m odp x equiv2x i pmod p x 或者 x 3x modp xi 1 2xi mod p x或 者xi 1 3 xi modp 題解 其實就是...