遊記 2019杭電單人ACM

2021-09-24 18:15:43 字數 3499 閱讀 1339

竟然一定要單人參加,還好不是英文啊qwq

4個小時9道題,我jio的4道題差不多了

簽到題交了5發,有點自閉;樹形dp調不對,有點自閉

封榜的時候,發現乙個bug,竟然還可以看別人的提交記錄233

結束之後,真的只有4道題啊qwq

這裡放一下,別的題不放了

這是杭州電子科技大學第九十屆程式設計競賽。以往每個選手在解鎖電腦時都需要將信封裡的密碼條拿出來,將上面的密碼輸入到電腦中。這回不太一樣,學校剛安裝了一批電子鎖,選手只需要將密碼條放在電腦的攝像頭前,電腦就會自動識別出上面的密碼。

每個選手的密碼都是乙個僅由大小寫英文本母和數字』0』到』9』組成的字串。

你是這場比賽的技術人員,就在比賽即將開始前的幾分鐘,你發現列印的密碼條上數字』0』和大寫字母』o』,以及小寫字母』l』和大寫字母』i』過於相似。你對學校新引進的電子鎖不太放心,於是決定修改識別部分的邏輯,使得』0』和』o』、』l』和』i』也算匹配。

比賽馬上就要開始了,抓緊時間吧!

簽到題,然而我交了好多遍

原因是:數字0->大寫字母o,小寫字母l->大寫字母i,打錯了=-=

#include#include#include#include#include#include#includeusing namespace std;

int t,n,***;

char st[50],c;

int main()

if(***)puts("no");

else puts("ok");

}return 0;

}

相信交通燈對於你來說並不陌生,交通燈分為紅色和綠色兩個階段,這兩個階段互相更替,保障著道路的安全。

在杭州一共有n個路口,編號依次為1到n。這些路口之間連線著m條雙向道路,每條道路連線著兩個不同的路口,且任意兩個路口之間最多連線著一條道路。每條道路**都設定著乙個交通燈。

為了保障道路的安全,對於任意兩條道路,如果它們連線了同乙個路口,那麼它們不能同色。

你的朋友正乘著飛機從杭州的上空飛過,並拍了一張杭州的**。在**裡,每條道路的交通燈的顏色都清晰可辨。

你並不知道你的朋友是在什麼時候按下的快門,於是你想統計出有多少種可能的方案。每個方案可以用乙個顏色序列col1,col2,…,colm(coli∈)來描述,表示每個交通燈的顏色。

這道題是真的坑,一開始上手了這道題,打了個樹形dp,炸了,調了半個小時,沒調出來,就先去做其他題目了

把能做的幾道題做完後,又回到了這道題,想了一下,如果單純的把邊的顏色放到點上是會炸掉的

於是又開始調,先寫了個初始顏色放在度為1的邊上,後來又發現有一些點可能是孤立的,答案會莫名乘上個2

然後還是調,在提交了n次之後,終於過了,具體實現就看**吧

#include#include#include#include#include#include#includeusing namespace std;

const int mod=1e9+7;

struct edgea[200010];

int t,n,m,x,y,head[100010],cnt,vis[100010],***,du[100010],used[200010],dep[100010];

long long ans,color[100010][2];

void add()

,head[x]=cnt;

a[++cnt]=,head[y]=cnt;

}void dfs(int u)

}void dfsx(int u,int fa)

vis[u]=1,dep[u]=dep[fa]+1;

for(int i=head[u];i!=-1;i=a[i].next)

if(!used[i])used[i]=1,used[i|1]=1,dfsx(a[i].to,u);

}//環如果長度為奇數,答案就是0

//每乙個環也會貢獻乙個2倍

void check()

//檢查有沒有環

int main()

return 0;

}

你的對手太壞了!在每年的年度三色抽卡遊戲錦標賽上,你的對手總是能打敗你,他的秘訣是什麼?

在每局三色抽卡遊戲中,有n個卡組,每個卡組裡所有卡片的顏色都相同,且顏色只會是紅(r)、綠(g)、藍(b)中的一種。第i個卡組有vi張卡片。

對決雙方每次只能選擇乙個還未抽完卡的卡組,從中拿走若干張卡片,可以全拿走,但不能一張都不拿。你只能選擇顏色為紅或者綠的卡組,而對手只能選擇顏色為藍或者綠的卡組。

你是先手,你和對手輪流行動,誰不能操作了就輸了。

因為你的對手每次總是能打敗你,你決定寫乙個程式來幫助你做出決策。

給定遊戲剛開始時的卡組情況,你的程式需要判斷假設雙方都按照最優策略操作,那麼你是否會贏?

一開始沒想出來,後來仔細一想,將綠色看成乙個沒有限制條件的取石子,那先手獲勝的判斷方法就是異或和是否為0

如果先手能在取綠色中獲勝,那只要紅色數量大於等於藍色數量,先手必勝

如果先手不能在取綠色中獲勝,那就需要紅色數量大於藍色數量才能使先手必勝

#include#include#include#include#include#include#includeusing namespace std;

int t,n,x,a,b,c;

char ch;

int main()

if(c)a++;

if(a>b)puts("yes");

else puts("no");

}return 0;

}

乙個正整數x是質數,當且僅當x≥2且x不是任何乙個[2,x?1]的數的倍數。

乙個數字串是」質數串」,當且僅當它的每個非空連續子串表示的數字都是質數。

例子1:」373″是質數串,它的子串有」3″、」37″、」373″、」7″、」73″、」3″,這些串表示的數字都是質數。

例子2:」55″不是質數串,因為」55″這個子串表示的數字不是質數。

相信聰明的你一定已經發現了乙個事實,那就是質數串的限制很緊,所以質數串的數量其實非常稀少。

給定乙個長度為n的數字串s,請統計它有多少個非空連續子串是質數串。注意兩個子串如果位置不同也算不同,比如」373373″中,」373″要算入答案兩次。

看起來很難,其實推一下就知道了

一位的,只能是2 3 5 7

兩位的,只能是23 53 37 73

三位的,只能是373

好了木有了,是不是很簡單233

#include#include#include#include#include#include#includeusing namespace std;

int t,n,a[100010],b[100010],ans,cek[5],ccekk[5];

void check(int i)

int main()

if(a[i]!=a[i+1])

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

}return 0;

}

杭電 acm 2019 數列有序!

問題 problem description 有n n 100 個整數,已經按照從小到大順序排列好,現在另外給乙個整數x,請將該數插入到序列中,並使新的序列仍然有序。input 輸入資料報含多個測試例項,每組資料由兩行組成,第一行是n和m,第二行是已經有序的n個數的數列。n和m同時為0標示輸入資料的...

2017杭電ACM集訓隊單人排位賽 6

2017杭電acm集訓隊單人排位賽 6 排名1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010591 xx11 xx01 xxdp i 表示到串長度為i時的最大愉悅值 列舉以i為回文串中心,串為奇數時候,為中心,偶數時,為偏左部分的中心點.d...

杭電ACM題目分類

基礎題 1000 1001 1004 1005 1008 1012 1013 1014 1017 1019 1021 1028 1029 1032 1037 1040 1048 1056 1058 1061 1070 1076 1089 1090 1091 1092 1093 1094 1095 1...