暑期集訓補題系列Day2 模擬 暴力求解高階

2021-08-28 06:27:06 字數 1798 閱讀 6469

e - string typing codeforces 954b

substr用法: s.substr(i,j)表示從下標為i的位置開始擷取j位

#include

using namespace std;

intmain()

i - game of robots codeforces 670b

題意:n 個機器(標號唯一)人站一列按照一定的規則進行報號遊戲,問報出的第 k 個編號是什麼

#include

const

int mydd=

1e5+

1103

;int robot[mydd]

;int

main()

\ printf

("%d\n"

,robot[k]);

}return0;

}

j - xor-paths codeforces 1006f

題意:從左上走到右下,每次只能向右或下走,問走到右下角時路徑異或和為k的路徑數

直接暴力dfs的話複雜度為240

所以我們用雙向dfs 複雜度為2*220=221

用map記錄路徑異或和

從左上跑一半,右下跑一半

跑到相同點時將答案傳回

先貼出我的dfs**,顯然超時了

#include

using namespace std;

int g[21]

[21];

int n, m, k, ans;

void

dfs(

int x,

int y,

int xorsum)

return;}

if((x +1)

<= n && y <= m)

if(x <= n &&

(y +1)

<= m)

}int

main()

}dfs(1

,1, g[1]

[1])

;printf

("%d\n"

, ans)

;//fclose(stdin);

return0;

}

下面是正解

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

typedef

long

long ll;

int n,m;

ll k;

ll a[25]

[25];

map dp[25]

;void

dfs(

int x,

int y,ll s)

dfs(x+

1,y,s^a[x]

[y])

;dfs

(x,y+

1,s^a[x]

[y]);}

ll solve

(int x,

int y,ll s)

intmain()

暑期集訓補題系列Day 3樹 佇列 棧

a.useful decomposition codeforces 981c 題意 給你一棵n個結點的樹,然後輸入n 1條邊。要求將該樹拆成若干條簡單路徑,並且這些路徑都經過乙個公共節點。給出任意乙個解決方案,如不存在輸出no 思路 鄰接表存圖建雙向邊,如果乙個點的出度 2,那麼他就是那個共享的點,...

暴搜 中山紀念中學暑期遊Day2 佳餚

考的不好,但是評講過後發現 都!好!水!啊!還是那句自己的老話 佳餚就是非常美味的菜的意思,佳餚最關鍵的是選擇好原料。現在有n種原料,每種原料都有酸度s和苦度b兩個屬性,當選擇多種原料時,總酸度為每種原料的酸度之積,總苦度為每種原料的苦度之和。正如大家所知,佳餚是既不酸也不苦的,因為要保證所選的原料...

省隊集訓DAY2

假設我們列舉數列中長度為len的區間,那麼如何判斷兩個數列可以匹配呢?對於提取的數列從小到大排序,從大到小排序,然後兩兩配對,如果所有的都滿足 h 那麼就可以匹配。應該算是貪心吧。這樣做的時間複雜度是o n le n loglen 還是上面的思想,我們如何快速判斷呢?假設我們確定了提取出的區間數列,...