[比賽鏈接](http://codeforces.com/contest/952) 感覺可能比洛谷的題目正常一點 就當學英語了吧 A Quirky Quantifiers比較正常,不是什麼很坑的題目。 判斷奇偶性即可 Code: B A Map of the Cat 給你兩種貓的被膜的感受,判斷是哪 ...
[比賽鏈接](http://codeforces.com/contest/952)
感覺可能比洛谷的題目正常一點
就當學英語了吧
A Quirky Quantifiers
比較正常,不是什麼很坑的題目。
判斷奇偶性即可
Code:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 int main() 5 { 6 scanf("%d",&n); 7 printf("%d\n",n%2); 8 return 0; 9 }
B A Map of the Cat
給你兩種貓的被膜的感受,判斷是哪種貓
可以發現no兩種貓都有,great、not bad、cool、don't think so、don't touch me只有普通的貓有,根據這個來判斷。
Code:
1 #include<bits/stdc++.h> 2 using namespace std; 3 string s; 4 int main() 5 { 6 for (int i=0;i<=9;i++) 7 { 8 printf("%d\n",i); 9 getline(cin,s); 10 if (s=="no") continue; 11 if (s=="great"||s=="not bad"||s=="cool"||s=="don't think so"||s=="don't touch me") 12 printf("normal\n"); 13 else 14 printf("grumpy\n"); 15 } 16 return 0; 17 }
C Ravioli Sort
這道題介紹了麵條排序。這種排序好像還有很多的名字,叫珠排序或是餡餅排序等等什麼的。
主要就是將每個數字具體化為長度一定的麵條,然後做自由落體看哪根先落地即可。
O(n+物理引擎模擬) 即可 非常高效(搞笑)
但這和這道題沒什麼關係。**這道題是讓你判斷相鄰兩根麵條長度差是否小於2,從而來優化這個麵條排序。
Code:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n; 4 int num[11]; 5 int main() 6 { 7 scanf("%d",&n); 8 for (int i=1;i<=n;i++) 9 scanf("%d",&num[i]); 10 for (int i=1;i<n;i++) 11 if (abs(num[i]-num[i+1])>=2) 12 { 13 printf("NO\n"); 14 return 0; 15 } 16 printf("YES\n"); 17 return 0; 18 }
D I'm Feeling Lucky!
如果你去過首家上線的線上澳門賭場,那你這道題能迅速理解。
(如果你看見過的話 自覺面壁)
這道題目就是一個歐非測試機,你可以選擇green,black,red,odd,even來猜測這個珠子最後停留在哪裡。
如果你是個歐皇,你可以用綠色一遍過這道題。綠色幾率是1/19,並且要兩次都贏才算通過。
Code:
無
E Cheese Board
這道題我沒看出來題目名字和要求有什麼聯繫……我還看了半天WiKi
cheese board本意是乾酪板,和chess board很像……就沒了
這道題要求是給出最小的矩陣大小,能放下所有的乳酪。硬的和軟的要交替放置,可以空著,但軟硬相同的不能放一起。
暴力枚舉,棋盤分為兩部分,一部分為(n^2+1)/2,另一部分為(n^2)/2 只要滿足軟硬中少的比第二個小,大的比第一個小即可。
:
Code:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int n,s1,s2,ans,s3,s4; 4 string str1,str2; 5 int main() 6 { 7 scanf("%d",&n); 8 for (int i=1;i<=n;i++) 9 { 10 cin>>str1>>str2; 11 if (str2=="soft") s1++; 12 else s2++; 13 } 14 s3=min(s1,s2); 15 s4=max(s1,s2); 16 while (true) 17 { 18 int cnt1=0,cnt2=0; 19 ans++; 20 cnt1=(ans*ans+1)/2; 21 cnt2=ans*ans-cnt1; 22 if (s4<=cnt1&&s3<=cnt2) break; 23 } 24 printf("%d\n",ans); 25 return 0; 26 }
F 2+2!=4
這道是腦洞題,絕壁是
好像是之前某個出題人犯了這個錯誤,現在挖出來嘲諷了。。
第二個樣例 2+2=-46 乍一看直接懵逼
關鍵點就是要發現其中的玄機,這個運算把符號當作數字給運算掉了。比如2+2中,第二個“2”,其實是('+'-'0')×10+('2'-'0')=-48
特別神奇,然後'-'也同理。
然後回去看第一個樣例,可以發現出題人是多麼煞費苦心用心險惡地找了這組數據
Code:
1 #include<bits/stdc++.h> 2 using namespace std; 3 char c; 4 int num1,num2; 5 char op=' '; 6 int main() 7 { 8 c=getchar(); 9 while (c!='\n') 10 { 11 if (c>='0'&&c<='9'&&op==' ') 12 num1=num1*10+c-'0'; 13 else if (c>='0'&&c<='9') 14 num2=num2*10+c-'0'; 15 if (c=='+'&&op=='+') 16 num1=num1+num2,num2=-5; 17 else if (c=='+'&&op=='-') 18 num1=num1-num2,num2=-5,op='+'; 19 else if (c=='+') 20 num2=-5,op='+'; 21 else if (c=='-'&&op=='+') 22 num1=num1+num2,num2=-3,op='-'; 23 else if (c=='-'&&op=='-') 24 num1=num1-num2,num2=-3; 25 else if (c=='-') 26 num2=-3,op='-'; 27 c=getchar(); 28 } 29 if (op=='-') num1-=num2; 30 else num1+=num2; 31 printf("%d\n",num1); 32 return 0; 33 }
G Puzzling Language
剛打開這道題時,我是懵逼的。
這道題涉及到一個語言,叫做**“BrainFuck"(艹腦)**
這種語言有八個運算符,
看起來就像彙編一樣。
有人做了一個可以詳細解釋這種語言的小工具 叫Brainfuck Visualizer
https://fatiherikli.github.io/brainfuck-visualizer/
這道題意就是給你一個字元串,讓你輸出一個加密後的**BrainFuck**程式來輸出這個字元串。
規則:
.......X.......
......XXX......
.....XXXXX.....
....XXXXXXX....
...XXXXXXXXX...
..XXXXXXXXXXX..
.XXXXXXXXXXXXX.
...............
X.............X
X..............
X..............
X..............
這坨東西,就等於
-
>+<
>+++<
>+++++<
>+++++++<
>+++++++++<
>+++++++++++<
< >
.
.
.
結果就是輸出三個$(這個程式貌似指針會越界,就假裝他越界就不動吧)
然後想了好久沒想出來,主要‘+’好像會對上面的格子產生影響。
最後找到了一個奇妙的解法,是某位外國友人提供的。
對於一個指針,它值為0時減去1就會變為255。
而'-'號有一個好處就是不會影響隔壁幾個的意義。
所以每次每位減一減一,來達到目的。
之後輸出即可
舉個慄子 比如你要輸出ASCII碼為253的字元就可以這樣打:
...
.X.
...
.X.
...
.X.
...
.X.
.X.
這樣就可以AC了
Code:
1 #include<bits/stdc++.h> 2 using namespace std; 3 int len; 4 string s; 5 int main () 6 { 7 cin>>s; 8 s='\000'+s; 9 len=s.length()-1; 10 for (int i=1;i<=len;i++) 11 { 12 int cnt=(int)(s[i-1]-s[i]); 13 cnt=(cnt+256)%256; 14 if (cnt==0) cnt=256; 15 printf("...\n"); 16 for (int j=1;j<=cnt-1;j++) 17 { 18 printf("...\n"); 19 printf(".X.\n"); 20 printf("...\n"); 21 } 22 printf("...\n"); 23 printf(".X.\n"); 24 printf(".X.\n"); 25 printf("...\n"); 26 } 27 return 0; 28 }