Codeforces Round #566 (Div. 2)
作者:互联网
A. Filling Shapes
题意:给你三角形,填充3*n的图;
n为奇数肯定不行,n每增加一个,填充的办法就为上次的两倍;
#include <bits/stdc++.h> using namespace std; const int maxn=1e5+10; int main() { int n; cin>>n; if(n%2) { cout<<0<<endl; } else { int ans=1; for(int i=1;i<=n/2;i++) { ans*=2; } cout<<ans<<endl; } return 0; }View Code
题意:给你一个图,让你找是不是只有一个‘+’号;
思路:记录所有*号,总的为cnt,然后找到符合加号的位置,遍历上下左右四个方向走,是*号就cnt--;遍历完判断一下就行了(当时打的时候沙雕了,wa了9发,日!)
#include <bits/stdc++.h> using namespace std; const int maxn=510; int main() { int n,m; cin>>n>>m; char a[maxn][maxn]; int cnt=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; if(a[i][j]=='*') cnt++; } } int flagx=0,flagy=0,flag=0; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ if(a[i][j]=='*'&&a[i+1][j]=='*'&&a[i-1][j]=='*'&&a[i][j+1]=='*'&&a[i][j-1]=='*'){ flagx=i; flagy=j; flag=1; break; } } if(flag==1)break; } //cout<<"flag="<<flag<<"flagx="<<flagx<<"flagy="<<flagy<<endl; //cout<<"cnt="<<cnt<<endl; if(flag==0){ cout<<"NO"<<endl; return 0; } else{ for(int i=flagx-1;i>=1;i--){ if(a[i][flagy]=='.')break; if(a[i][flagy]=='*') cnt--; } for(int i=flagx+1;i<=n;i++){ if(a[i][flagy]=='.')break; if(a[i][flagy]=='*') cnt--; } for(int i=flagy-1;i>=1;i--){ if(a[flagx][i]=='.')break; if(a[flagx][i]=='*') cnt--; } for(int i=flagy+1;i<=m;i++){ if(a[flagx][i]=='.')break; if(a[flagx][i]=='*'){ cnt--; } } if(cnt==1) cout<<"YES"<<endl; else cout<<"NO"<<endl; } return 0; }View Code
模拟题.....
标签:cnt,题意,int,Codeforces,566,maxn,Div,flagy,flagx 来源: https://www.cnblogs.com/lin1874/p/11173326.html