発想(ARC093D - Grid Components)
これ昔参加したコンテストで、ツイッターに流れてくる解法を見て天才か!?ってなったので印象に残っている
最も感動した問題の一つ。なので永遠に記憶が消えないと思うからACしておこう。
カラクリはとても簡単で、連続した領域の数を調節するには、半分白半分黒にしておいて、その中に適切に一ますのもう片方の色を散りばめればいいだけ。すごい。
#include<cstdio> #include<math.h> #include<algorithm> #include<vector> #include<queue> #include<string> #include<set> #include<cstring> using namespace std; #define rep(i,n) for(int i=0;i<n;i++) #define INF 1001001001 #define LLINF 1001001001001001001 #define mp make_pair #define pb push_back #define LLIandI pair<long long int , int> #define ll long long int main(void){ int A,B; scanf("%d %d",&A,&B); char map[100][100]; rep(i,100){ rep(j,100){ if(i<50){ map[i][j]='.'; if(i%2==0&&j%2==0&&B-1-(i/2)*50-(j/2)>0)map[i][j]='#'; }else{ map[i][j]='#'; if(i%2==1&&j%2==1&&A-1-((99-i)/2)*50-(j/2)>0)map[i][j]='.'; } } } printf("100 100\n"); rep(i,100){ rep(j,100){ printf("%c",map[i][j]); } printf("\n"); } }