Codeforces Round #441 (Div. 2)【A、B、C、D】
阿新 • • 發佈:2017-10-17
algorithm amp puts spa splay http con 無法 是否
Codeforces Round #441 (Div. 2)
codeforces 876 A. Trip For Meal(水題)
題意:R、O、E三點互連,給出任意兩點間距離,你在R點,每次只能去相鄰點,要走過n個點,求走過的最短距離。
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int main() { 6 int n, a, b, c; 7 scanf("%d%d%d%d30ms", &n, &a, &b, &c); 8 if(n==1) puts("0"); 9 else printf("%d\n", (n-2) * min(a, min(b,c)) + min(a,b)); 10 return 0; 11 }
codeforces 876 B. Divisiblity of Differences(水題)
題意:有N個數,要從中選出K個,要求選出的數相減後都能整除m,求能都選出K個數,並輸出選出的數。
題解:容易發現選出的數一定是 對m取余相同 的一類數,將每類數存起來,大於K個則輸出這一類。
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 #include<vector> 5 using namespace std; 6 typedef long long ll; 7 const int N = 100005; 8 int a[N]; 9 vector<int>c[N]; 10 int main() { 11 int n, k, m, i, j, f = 0; 12 for(i = 0; i < N; ++i) c[i].clear();61ms13 scanf("%d%d%d", &n, &k, &m); 14 for(i = 1; i <= n; ++i) { 15 scanf("%d", &a[i]); 16 c[a[i]%m].push_back(i); 17 } 18 for(i = 0; i < m; ++i) { 19 if(c[i].size() >= k) { 20 puts("Yes"); f = 1; 21 for(j = 0; j < k-1; ++j) printf("%d ", a[c[i][j]]); 22 printf("%d\n", a[c[i][k-1]]); 23 break; 24 } 25 } 26 if(!f) puts("No"); 27 return 0; 28 }
codeforces 875 A. Classroom Watch(暴力)
題意:給你n要求有幾個x滿足 x加上x的各個數位之和等於n,比如:x=100a+10b+c,n=x+a+b+c。
題解:暴力,枚舉i(各個數位之和),令x=n-i再檢驗x是否滿足題意。
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 int a[105]; 6 int main() { 7 int n, i, j, x, y, cnt = 0; 8 scanf("%d", &n); 9 for(i = min(n-1,100); i >= 1; --i) { 10 x = n - i; y = 0; 11 while(x) {y += x%10; x /= 10;} 12 if(y == i) a[cnt++] = n-i; 13 } 14 printf("%d\n", cnt); 15 for(i = 0; i < cnt; ++i) printf("%d\n", a[i]); 16 return 0; 17 }15ms
codeforces 875 B. Sorting the Coins(模擬)
題意:一排n個位置,每次操作在p[i]位置放硬幣,從左往右看,如果第i個位置有硬幣,第i+1位置沒有,則交換硬幣(可以看看題目Note就好懂了,X0X0->0X0X是換了兩次硬幣,但這是一步,從左往右看一次是一步),直到無法再交換位置,求每次操作要幾步。
1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using namespace std; 5 const int N = 300005; 6 int a[N]; 7 int main() { 8 int n, i, x; 9 scanf("%d", &n); 10 int m = n + 1; 11 printf("1"); 12 for(i = 1; i <= n; ++i) { 13 scanf("%d", &x); 14 a[x] = 1; 15 while(a[m-1]) m--; 16 printf(" %d", i-n+m); 17 } 18 return 0; 19 }155ms
不補題了,看不透英語。。。
Codeforces Round #441 (Div. 2)【A、B、C、D】