【模拟】ECNA 2015 I What's on the Grille? (Codeforces GYM 100825)
2016-09-07 18:43
459 查看
题目链接:
http://codeforces.com/gym/100825
题目大意:
栅栏密码。给定N(N<=10),密钥为一个N*N的矩阵,'.'代表空格可以看到,'X'代表被遮挡,还有密文字符串S,长度为N*N
每次将这个矩阵顺时针旋转90°,把矩阵中空格对应的位置按照从上到下从左到右的顺序依次填充上密文字符,求最终这个密文字符能否填满N*N的矩阵,能按顺序输出得到的答案,不能输出"invalid grille"
题目思路:
【模拟】
直接模拟即可。旋转的坐标公式很好推。
View Code
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 104 using 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 ,a ; 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); #endif int 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; } /* // // */
View Code
相关文章推荐
- 【模拟】ECNA 2015 I What's on the Grille? (Codeforces GYM 100825)
- 【最大流】ECNA 2015 F Transportation Delegation (Codeforces GYM 100825)
- 【最大流】ECNA 2015 F Transportation Delegation (Codeforces GYM 100825)
- 【宽搜】ECNA 2015 E Squawk Virus (Codeforces GYM 100825)
- 【宽搜】ECNA 2015 D Rings (Codeforces GYM 100825)
- 【宽搜】ECNA 2015 D Rings (Codeforces GYM 100825)
- 【宽搜】ECNA 2015 E Squawk Virus (Codeforces GYM 100825)
- 【模拟】NEERC15 J Jump(2015-2016 ACM-ICPC)(Codeforces GYM 100851)
- 【模拟】NEERC15 A Adjustment Office (2015-2016 ACM-ICPC)(Codeforces GYM 100851)
- codeforces gym 100286 H - Hell on the Markets (贪心算法)
- Codeforces Gym H. Hell on the Markets 贪心
- 【模拟】NEERC15 G Generators(2015-2016 ACM-ICPC)(Codeforces GYM 100851)
- 【模拟】NEERC15 E Easy Problemset (2015-2016 ACM-ICPC)(Codeforces GYM 100851)
- 【模拟】NEERC15 E Easy Problemset (Codeforces GYM 100851)
- Codeforces Gym 2015 ACM Arabella Collegiate Programming Contest
- 【模拟】BAPC2014 G Growling Gears (Codeforces GYM 100526)
- 【最短路】NEERC15 F Froggy Ford(2015-2016 ACM-ICPC)(Codeforces GYM 100851)
- 【模拟】NEERC15 A Adjustment Office (Codeforces GYM 100851)
- Codeforces #325 Div2 C Gennady the Dentist(模拟、细节)
- Educational Codeforces Round 1 B.Queries on a String(模拟)