【模拟】ECNA 2015 I What's on the Grille? (Codeforces GYM 100825)

来源:互联网 发布:vegas13是电脑软件 编辑:程序博客网 时间:2024/05/22 04:24

题目链接:

  http://codeforces.com/gym/100825

题目大意:

  栅栏密码。给定N(N<=10),密钥为一个N*N的矩阵,'.'代表空格可以看到,'X'代表被遮挡,还有密文字符串S,长度为N*N

  每次将这个矩阵顺时针旋转90°,把矩阵中空格对应的位置按照从上到下从左到右的顺序依次填充上密文字符,求最终这个密文字符能否填满N*N的矩阵,能按顺序输出得到的答案,不能输出"invalid grille"

题目思路:

  【模拟】

  直接模拟即可。旋转的坐标公式很好推。




////by coolxxx//#include<bits/stdc++.h>#include<iostream>#include<algorithm>#include<string>#include<iomanip>#include<map>#include<stack>#include<queue>#include<set>#include<bitset>#include<memory.h>#include<time.h>#include<stdio.h>#include<stdlib.h>#include<string.h>//#include<stdbool.h>#include<math.h>#define min(a,b) ((a)<(b)?(a):(b))#define max(a,b) ((a)>(b)?(a):(b))#define abs(a) ((a)>0?(a):(-(a)))#define lowbit(a) (a&(-a))#define sqr(a) ((a)*(a))#define swap(a,b) ((a)^=(b),(b)^=(a),(a)^=(b))#define mem(a,b) memset(a,b,sizeof(a))#define eps (1e-10)#define J 10000#define mod 1000000007#define MAX 0x7f7f7f7f#define PI 3.14159265358979323#define N 14#define M 104using namespace std;typedef long long LL;double anss;LL aans;int cas,cass;int n,m,lll,ans;struct xxx{int x,y;}q[M];char s[N][N],a[N][N];char c[M];bool cmp(xxx aa,xxx bb){if(aa.x!=bb.x)return aa.x<bb.x;return aa.y<bb.y;}void print(){int i,j;for(i=0;i<n;i++)printf("%s",a[i]);puts("");}bool work(){int i,j,k;for(k=1;k<4;k++){for(i=1;i<=m;i++){j=q[i].x;q[i].x=q[i].y;q[i].y=n-j-1;}sort(q+1,q+m+1,cmp);for(i=1;i<=m;i++){if(a[q[i].x][q[i].y])return 0;a[q[i].x][q[i].y]=c[cas++];}}for(i=0;i<n;i++)for(j=0;j<n;j++)if(!a[i][j])return 0;return 1;}int main(){#ifndef ONLINE_JUDGE//freopen("1.txt","r",stdin);//freopen("2.txt","w",stdout);#endifint i,j,k;int x,y,z;//init();//for(scanf("%d",&cass);cass;cass--)//for(scanf("%d",&cas),cass=1;cass<=cas;cass++)//while(~scanf("%s",s))while(~scanf("%d",&n)){mem(a,0);cas=0;m=0;for(i=0;i<n;i++)scanf("%s",s[i]);scanf("%s",c);if(n==1){puts("invalid grille");continue;}for(i=0;i<n;i++)for(j=0;j<n;j++)if(s[i][j]=='.'){a[i][j]=c[cas++];q[++m].x=i,q[m].y=j;}if(!work())puts("invalid grille");else print();}return 0;}/*////*/


0 0
原创粉丝点击