CF Round605比賽總結

2021-10-01 14:43:51 字數 3095 閱讀 9271

a:three friends

題意:給出三個點的座標,每乙個點可以進行左移或者右移單位1,或者不移動,問最後三個點之間的相對距離最小值是多少。

解題思路:

因為每乙個點最多三種情況,所以列舉一下即可。

**如下:

#include

using

namespace std;

typedef

long

long ll;

const

int n=

1e5+10;

int n,m,k,t;

ll a,b,c,d;

ll num[3]

=;void

solve()

}}cout<}int

main()

return0;

}

b:snow walking robot

題意:給出一段機器指令,你可以刪去一些指令,使最後剩餘的指令操作之後回到原點,且這個過程中不能經過相同點,問最多可以剩下多少指令。

解題思路:

分析可知,要回到原點,所以向上的操作次數等於向下的操作次數,向左的操作次數等於向右的操作次數,這個地方可以統計取min,對於可行的操作方案,只需要用剩餘的操作按照左上右下畫乙個正方形即可。還需要注意一點,當向左向右的操作次數為0時,向上和向下只能為1,反之亦然。

**如下:

#include

using

namespace std;

typedef

long

long ll;

const

int n=

1e5+10;

int n,m,k,t;

int a,b,c,d,e,f;

string s;

void

solve()

e=min(a,b)

; f=

min(c,d);if

((e==

0&&f>1)

||(e>

1&&f==0)

) cout<<

(e+f)*2

int i=

0;i)cout<<

"l";

for(

int i=

0;i)cout<<

"u";

for(

int i=

0;i)cout<<

"r";

for(

int i=

0;i)cout<<

"d";

cout<}int

main()

return0;

}

c:yet another broken keyboard

題意:給出一段字串,其中一些字元你打不出來,為其他字元你可以打出來的子串個數最多為多少。

解題思路:

可以統計連續的可以打出的字元的長度,假設為n那麼此段區間的答案貢獻是n*(n+1)/2,累加一下即可。

**如下:

#include

using

namespace std;

typedef

long

long ll;

const

int n=

2e5+10;

int n,m,k,t;

int vis[27]

;char c;

string s;

void

solve()

cout<}int

main()

d:remove one element

題意:給出一段正整數序列,你可以選擇移除乙個,問序列中最長嚴格遞增子段長度是多少。

解題思路:

可以用dp方程進行轉移,dp[i][0]代表以i為結尾不採用移除的最長子段,dp[i][1]代表採用移除可以達到的最大字段。

**如下:

#include

using

namespace std;

typedef

long

long ll;

const

int n=

2e5+10;

int n,m,k,t;

int a[n]

,dp[n][2

];void

solve()

else

ans=

max(ans,

max(dp[i][0

],dp[i][1

]));

}printf

("%d\n"

,ans);}

intmain()

e:nearest opposite parity

題意:給出一段整數序列,你可以在第i個位置向左或者向右移動a[i]個單元格,如果不越界,問在第i個位置移動到與它奇偶性不同的單元格的最小步數為多少。

解題思路:

這道題理解的還不是很理解,解題過程是先把能到達的兩個點反向建一條邊,如果這兩個點奇偶性不同,則將當前點加入到佇列中,再用這個點來更新奇偶性相同的點。

**如下:

#include

using

namespace std;

typedef

long

long ll;

const

int n=

2e5+10;

int n,m,k,t;

int a[n]

,ans[n]

,vis[n]

;vector<

int>v[n]

;queue<

int>q;

void

solve()

} now=i+a[i];if

(now<=n)}}

while

(!q.

empty()

)}}for

(int i=

1;i<=n;i++)}

intmain()

2015 8 15比賽總結

在總結之前,我必須膜拜一下某個切完提高組來省賽組虐場的犇。今天的比賽,失策還是有的,今天的問題如下 打 不小心,打錯了乙個小細節,導致最終答案錯誤。有的題目a了樣例我就以為可以了,或者是打的對拍也錯了 打題前沒有想清楚,最後對拍時才發現錯誤。第一題 這是道二分的題目,我在做比賽時就想到了正解,就是用...

8 17比賽總結

這次比賽考得一般般,這回的題是前段時間學的圖論演算法的測試題 100 52.2 40 12.5。1 位圖 這題是很簡單的圖論,用bfs 加優化簡單 o nm 過了。正解 這題將所有更新的點記錄在乙個佇列裡 初始的時候都是1 的看為更新的 然後每次將這些點往四周擴散,如果可以擴散,那麼 ans x,y...

8 18 比賽總結

這次比賽很不錯,排名第一 100 100 0 100 300。1 跳格仔 這題在比賽的時候做就很淼,直接dp 就可以了。正解 dp。2 2048 這題是一道純模擬題,只需要模擬2048 執行的步驟來進行迴圈和合併,由於 比較複雜,所以要精細做,考試的時候在除錯一小時後終於將這道題做了出來。正解 同上...