Atcoder Beginner Contest176題解
阿新 • • 發佈:2020-09-11
##A.Takoyaki
1 #include <bits/stdc++.h> 2 using namespace std; 3 signed main(void){ 4 int n,x,t; 5 scanf("%d%d%d",&n,&x,&t); 6 if(n%x==0) printf("%d",n/x*t); 7 else printf("%d",(n/x+1)*t); 8 return 0; 9 }
##B.Multiple of 9
1 #include <bits/stdc++.h> 2 usingnamespace std; 3 signed main(void){ 4 string s; 5 int tot=0; 6 cin>>s; 7 for(int i=0;i<s.size();i++) tot+=int(s[i]-'0'); 8 if(tot%9==0) cout<<"Yes"<<endl; 9 else cout<<"No"<<endl; 10 return 0; 11 }
##C.Step
1 #include <bits/stdc++.h> 2#define int long long 3 using namespace std; 4 signed main(void){ 5 int n,now,ans=0; 6 scanf("%lld",&n); 7 int a[n]; 8 for(int i=0;i<n;i++) scanf("%lld",&a[i]); 9 now=a[0]; 10 for(int i=1;i<n;i++){ 11 if(a[i]>=now) now=a[i]; 12 else ans+=now-a[i];13 } 14 cout<<ans<<endl; 15 return 0; 16 }
##D.Wizard in Maze
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N=1e3+5; 4 char S[N][N]; 5 int f[N][N],dr[4][2]={{1,0},{-1,0},{0,1},{0,-1}},que[N*N],s,t,h,w,sx,sy,tx,ty; 6 signed main(void){ 7 cin>>h>>w>>sx>>sy>>tx>>ty; 8 for(int i=0;i<h;i++) { 9 cin>>S[i]; 10 for(int j=0;j<w;j++) 11 f[i][j]=S[i][j]=='#'; 12 } 13 f[--sx][--sy]=1; 14 tx--,ty--; 15 que[t++]=sx*N+sy; 16 while(s<t){ 17 int s1=s; 18 while(s<t){ 19 int x=que[s++],y=x%N; 20 x/=N; 21 for(int i=0;i<4;i++){ 22 int x1=x+dr[i][0],y1=y+dr[i][1]; 23 if((unsigned)x1>=h||(unsigned)y1>=w||f[x1][y1]) 24 continue; 25 f[x1][y1]=f[x][y]; 26 que[t++]=x1*N+y1; 27 } 28 } 29 while(s1<s){ 30 int x=que[s1++],y=x%N; 31 x/=N; 32 for (int i=-2;i<3;i++) { 33 for (int j=-2;j<3;j++) { 34 int x1=x+i,y1=y+j; 35 if((unsigned)x1>=h||(unsigned)y1>=w||f[x1][y1]) 36 continue; 37 f[x1][y1]=f[x][y]+1; 38 que[t++]=x1*N+y1; 39 } 40 } 41 } 42 } 43 cout<<(f[tx][ty]?f[tx][ty]-1:-1); 44 return 0; 45 }
##E.Bomber
1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn=3e5+10; 4 struct point { 5 int x,y; 6 }p[maxn]; 7 map<int,int> xcnt,ycnt; 8 signed main(void){ 9 int n,m,k; 10 cin>>n>>m>>k; 11 int x,y,maxr=0,maxc=0; 12 for(int i=0;i<k;i++){ 13 cin>>x>>y; 14 p[i]={x,y}; 15 xcnt[x]++,ycnt[y]++; 16 maxr=max(maxr,xcnt[x]),maxc=max(maxc,ycnt[y]); 17 } 18 int num1=0,num2=0; 19 for(auto tmp:xcnt) 20 if(tmp.second==maxr) 21 num1++; 22 for(auto tmp:ycnt) 23 if(tmp.second==maxc) 24 num2++; 25 int cnt=0; 26 for(int i=0;i<k;i++){ 27 x=p[i].x,y=p[i].y; 28 if(xcnt[x]==maxr&&ycnt[y]==maxc)cnt++; 29 } 30 if(cnt==num1*num2) 31 cout<<(maxc+maxr-1)<<endl; 32 else 33 cout<<(maxc+maxr)<<endl; 34 return 0; 35 }