Codeforces Round #460 (Div. 2)題目題解
阿新 • • 發佈:2018-12-24
B.Perfect Number (水題:打表)#include <iostream> #include <stdio.h> #include <string.h> #include <math.h> #include <algorithm> using namespace std; int main() { int N,M; double ans = 99999999; while(~scanf("%d%d",&N,&M)) { double a,b; for(int i = 1; i <= N; i++) { scanf("%lf%lf",&a,&b); ans = min(ans,a*M/b); } printf("%.8lf\n",ans); } return 0; }
C.Seat Arrangements (水題模擬)#include <iostream> #include <stdio.h> #include <string.h> #include <math.h> #include <algorithm> using namespace std; int arr[10005]; void createTable() { int cnt = 1,sum; for(int i = 1; i <= 11000000; i++) { sum = 0; int temp = i; while(temp) { sum += temp%10; temp = temp/10; } if(sum == 10) { arr[cnt++] = i; } } } int main() { createTable(); int k; while(~scanf("%d",&k)) { printf("%d\n",arr[k]); } return 0; }
第一次提交的時候,自己測試資料過了,但是被別人hack了,發現了程式碼漏洞,攻擊成功,才發現程式碼k=1的情況過不去,
然後重新改了改,提交過了。
#include <iostream> #include <stdio.h> #include <string.h> #include <math.h> #include <algorithm> using namespace std; char Map[2002][2002]; int main() { int N,M,k; while(~scanf("%d%d%d",&N,&M,&k)) { for(int i = 0; i < N; i++) { scanf("%s",Map[i]); } int ans=0,cnt; if(k == 1) { for(int i = 0; i < N; i++) { for(int j = 0; j < M; j++) { if(Map[i][j] == '.') { ans++; } } } printf("%d\n",ans); continue; } for(int i = 0; i < N; i++) { cnt = 0; for(int j = 0; j < M; j++) { if(Map[i][j] == '.') { if(cnt == 0) { cnt++; } else if(Map[i][j-1] == '.') { cnt++; } else { if(cnt>=k) { ans += (cnt-k+1); } cnt = 1; } } else { if(cnt >= k) { ans += (cnt-k+1); } cnt = 0; } } if(cnt>=k) { ans += (cnt-k+1); } } for(int i = 0; i < M; i++) { cnt = 0; for(int j = 0; j < N; j++) { if(Map[j][i]=='.') { if(cnt == 0) { cnt++; } else if(Map[j-1][i] == '.') { cnt++; } else { if(cnt>=k) { ans += (cnt-k+1); } cnt = 1; } } else { if(cnt >= k) { ans += (cnt-k+1); } cnt = 0; } } if(cnt>=k) { ans += (cnt-k+1); } } printf("%d\n",ans); } return 0; }