bzoj2375 疯狂的涂色
瘋狂的涂色
Time Limit: 5 Sec Memory Limit: 128 MB
Description
小t非常喜愛(ài)畫畫,但是他還是一個(gè)初學(xué)者。他最近費(fèi)盡千辛萬(wàn)苦才拜到已仙逝的達(dá)芬奇為師(神仙?妖怪?謝謝)。達(dá)芬奇果然是畫雞蛋長(zhǎng)大的,讓小t一入門就拿著一張白紙條瘋狂地涂色。假設(shè)紙條被劃分成了n個(gè)區(qū)域,用1~n的整數(shù)從左到右順序編號(hào),達(dá)芬奇總共下達(dá)了m條指令。第I條指令是讓小t把編號(hào)為(Ip+q)mod n+1與(Iq+p)mod n+1(p,q為常整數(shù))之間的區(qū)域(連續(xù)的一段區(qū)域)涂成第I種顏色。你可以假設(shè)達(dá)芬奇家中顏料的顏色數(shù)足夠多(達(dá)芬奇是畫雞蛋長(zhǎng)大的)。
現(xiàn)在由于達(dá)芬奇下達(dá)的指令過(guò)多,小t一時(shí)應(yīng)付不過(guò)來(lái)。達(dá)芬奇只讓他回答每一個(gè)區(qū)域最后的顏色。趁達(dá)芬奇還在“五谷輪回之所”忙碌時(shí),小t偷偷的請(qǐng)讓你這個(gè)計(jì)算機(jī)高手幫他算出最后的顏色狀態(tài),并告訴他。時(shí)間緊迫,要快喲!(達(dá)芬奇的指令次數(shù)多到惡心)
Input
為四個(gè)整數(shù)n,m,p,q。
Output
n行,第I行代表最后第I個(gè)格子的顏色。白色編號(hào)為0。
Sample Input
1000 999 341 547
(樣例自己腦補(bǔ)。。。。。)
和bzoj一起水一道題233.。。。
#include<cstdio> #include<algorithm> using namespace std; int fa[1000011],ans[1000011]; inline int find(int i) { return fa[i]==i ? i : fa[i]=find(fa[i]); } int main() {int n,m,p,q,l,r,tmp;scanf("%d%d%d%d", &n, &m, &p, &q);for(int i=1;i<=n+1;i++) fa[i]=i;for(int i=m;i;i--){l=(i*p+q)%n+1; r=(i*q+p)%n+1; if(l>r) swap(l,r); for(int j=find(l);j<=r;j=tmp){ans[j]=i;tmp=find(j+1);fa[j]=tmp;}if(find(1)==n+1) break;}for(int i=1;i<=n;i++) printf("%d\n",ans[i]);return 0; }轉(zhuǎn)載于:https://www.cnblogs.com/LLppdd/p/8673270.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的bzoj2375 疯狂的涂色的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Redis配置文件配置
- 下一篇: 【RabbitMQ】2、心得总结,资料汇