Wannafly挑戰賽28
阿新 • • 發佈:2018-11-09
總結-
A-開始覺得是找規律,最開始模擬當時我覺得如果L達到1e9的範圍的話,豈不是要加1e9次,模擬也就沒有認真寫,現在想來,後面由於加的不再是1,而是我前面的值,這樣相當了一個斐波那契的型別,而斐波那契的增子速度是非常快的,因此時間複雜度並不是太高。
1 #include<iostream> 2 #include<stdio.h> 3 #include<algorithm> 4 #include<string.h> 5 #define ll long long 6 using namespace std;View Code7 int flag[3]; 8 int cnt=0; 9 int l; 10 void cmp(int x,int y,int z){ 11 if (x>l){ 12 flag[cnt++]=z; 13 return; 14 }else { 15 if (x>=y){ 16 cmp(y+x,x,!z); 17 }else if (x<y){ 18 if (y%x==0){ 19 cmp(y+y,x,!z); 20 }else { 21 cmp(y+(y/x+1)*x,x,!z); 22 } 23 } 24 } 25 } 26 int main(){ 27 int a,b; 28 while(~scanf("%d%d%d",&a,&b,&l)){ 29 cnt=0; 30 cmp(a,b,0); 31 cmp(b,a,1); 32 if (flag[0]==0)printf("Yes "); 33 else printf("No "); 34 if (flag[1]==0)printf("Yes\n"); 35 else printf("No\n"); 36 } 37 38 return 0; 39 }
B-
B題感覺有數位DP的意思,又有點組合數學的意思。
這個選擇不重合的意思在我看來就是我選出組成msc 和 mcc的位置不能重合,我們可以這麼想,我們要
出現組成msc和mcc的問題,那麼如何進行操作???選擇一段區間,裡面一定有大於等於2個m,大於一個s
大於等於3個c,想辦法搞搞。。。
或者說,區間內部。。。不過暫時沒有想出來,暫時留坑。