NOIP2020 T3移球遊戲

2022-07-02 10:18:09 字數 914 閱讀 2423

\(n\)個柱子,每個柱子上面\(m\)個大小相同、顏色不同的球,尋找一種移球方案使得每個柱子上面的球顏色相同。

這題思維難度比較高,**實現難度不大,考場打了乙個假掉的做法,看了正解以後感覺非常之妙。

做法挺自然的,首先考慮只有兩種顏色的情況:

對於\(n>2\)的情況,可以考慮分治,將所有球染為黑白兩色,同顏色的也染為同顏色,然後給這些球各自分配一半的柱子,然後繼續遞迴下去就可以解決了。大概計算一下,總共的移球次數是在\(800000\)左右。

#include#include#include#define n 60

#define m 500

using namespace std;

int n,m,i,j,c[n][m],ans,ans1[1000000][3],num,id[m],cnt[n];

int read()

return x;

}void move(int x,int y,int num)

}void dfs(int l,int r)

else

} move(n+1,x,s2);

move(y,x,s1);

move(n+1,y,s1);

} for (i=1;i<=num-1;i++)

if (s1==m||s1==0) continue;

if (s1+s2>m)

else

} dfs(l,mid);dfs(mid+1,r);

}int main()

dfs(1,n);

printf("%d\n",ans);

for (i=1;i<=ans;i++) printf("%d %d\n",ans1[i][1],ans1[i][2]);

return 0;

}

NOIP2020 移球遊戲

題目鏈結 考慮乙個基本操作,如果有兩個柱子 x,y 是滿的,z 是空的,這 2m 個球中有 m 個關鍵球,要把所有的關鍵球移到同一根柱子上。設 x 柱上有 a 個關鍵球,操作如下 1 把 y 柱頂部的 a 個球移到 z 柱。2 把 x 柱上的球依次移走,如果是關鍵球就移到 y 柱,否則移到 z 柱。...

CSP S 2020 T3函式呼叫

這道題的難度大概是這次提高組最難的一題了,考試時一直在想線段樹合併,發現時間過不了以後就放棄打了暴力。關於這道題,可以容易發現,對於乘法操作,直接最後乘上即可,對於加法操作,只需要將加的數乘上後面乘的數就行了。所以可以得出乙個做法 首先可以考慮反著做一次拓撲排序,求出每次操作中包含了多少次乘法操作。...

NOIP模擬(20171024)T3 數學

求滿足方程ax xa mod2n 的解的個數 n 30,a 109詢問組數t 1000 引理一 若a,b 均為奇數,且a2 k 1 b2k 1 mod2n 則a b mod2n 證明 a 2k 1 b2k 1 mod2n a 2k 1 b2k 1 0 mod2n a b a2k a2k 1b a2k...