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

时间:2022-05-13 04:22:56

题目链接:

  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[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=;i<n;i++)
printf("%s",a[i]);
puts("");
}
bool work()
{
int i,j,k;
for(k=;k<;k++)
{
for(i=;i<=m;i++)
{
j=q[i].x;
q[i].x=q[i].y;
q[i].y=n-j-;
}
sort(q+,q+m+,cmp);
for(i=;i<=m;i++)
{
if(a[q[i].x][q[i].y])return ;
a[q[i].x][q[i].y]=c[cas++];
}
}
for(i=;i<n;i++)
for(j=;j<n;j++)
if(!a[i][j])return ;
return ;
}
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,);cas=;m=;
for(i=;i<n;i++)
scanf("%s",s[i]);
scanf("%s",c);
if(n==)
{
puts("invalid grille");
continue;
}
for(i=;i<n;i++)
for(j=;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 ;
}
/*
// //
*/

【模拟】ECNA 2015 I What's on the Grille? (Codeforces GYM 100825)的更多相关文章

  1. 【最大流】ECNA 2015 F Transportation Delegation &lpar;Codeforces GYM 100825&rpar;

    题目链接: http://codeforces.com/gym/100825 题目大意: N(N<=600)个点,每个点有个名字Si,R(R<=200)个生产商在R个点上,F(F<= ...

  2. 【宽搜】ECNA 2015 D Rings &lpar;Codeforces GYM 100825&rpar;

    题目链接: http://codeforces.com/gym/100825 题目大意: 给你一张N*N(N<=100)的图表示一个树桩,'T'为年轮,'.'为空,求每个'T'属于哪一圈年轮,空 ...

  3. 【宽搜】ECNA 2015 E Squawk Virus &lpar;Codeforces GYM 100825&rpar;

    题目链接: http://codeforces.com/gym/100825 题目大意: N个点M条无向边,(N<=100,M<=N(N-1)/2),起始感染源S,时间T(T<10) ...

  4. 【模拟】NEERC15 G Generators&lpar;2015-2016 ACM-ICPC&rpar;&lpar;Codeforces GYM 100851&rpar;

    题目链接: http://codeforces.com/gym/100851 题目大意: n个序列.每个序列有4个值x,a,b,c,之后按照x=(a*x+b)%c扩展无穷项. 求每个序列各取一个数之后 ...

  5. 【模拟】NEERC15 J Jump&lpar;2015-2016 ACM-ICPC&rpar;&lpar;Codeforces GYM 100851&rpar;

    题目链接: http://codeforces.com/gym/100851 题目大意: 系统里生成一个字符串C,一开始告诉你字符串的长度N(偶数).接着你需要在n+500次内猜出这个字符串是什么. ...

  6. 【模拟】NEERC15 E Easy Problemset &lpar;2015-2016 ACM-ICPC&rpar;&lpar;Codeforces GYM 100851&rpar;

    题目链接: http://codeforces.com/gym/100851 题目大意: N个人,每个人有pi个物品,每个物品价值为0~49.每次从1~n顺序选当前这个人的物品,如果这个物品的价值&g ...

  7. 【模拟】NEERC15 A Adjustment Office &lpar;2015-2016 ACM-ICPC&rpar;&lpar;Codeforces GYM 100851&rpar;

    题目链接: http://codeforces.com/gym/100851 题目大意: 一个N*N的矩阵A,Ai,j=i+j,Q次操作,每次分两种,R r取出第r行还未被取的所有数,并输出和.C c ...

  8. 【模拟】BAPC2014 G Growling Gears &lpar;Codeforces GYM 100526&rpar;

    题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...

  9. Codeforces Gym 100269B Ballot Analyzing Device 模拟题

    Ballot Analyzing Device 题目连接: http://codeforces.com/gym/100269/attachments Description Election comm ...

随机推荐

  1. 选择CRM

    第一:可扩展和定制 选择CRM系统一定要注意系统扩展性,要用发展的眼光去审视公司的CRM需求,所以CRM系统必须具有一定的扩展性,从而满足不断变化的公司需求.而那些看起来功能和强大不能扩展看起来貌似也 ...

  2. Maven打包排除不需要的文件。

    pom.xml <!-- package打包排除掉一些配置文件 --> <plugin> <groupId>org.apache.maven.plugins< ...

  3. &lbrack;LeetCode&rsqb; Binary Tree Preorder&sol;Inorder&sol;Postorder Traversal

    前中后遍历 递归版 /* Recursive solution */ class Solution { public: vector<int> preorderTraversal(Tree ...

  4. angular--todomvc

    类名:ng-class="{completed:todo.completed}" ng-repeat="todo in todoData" ng-model=& ...

  5. Linux下librdkafka客户端的编译运行

    Linux下librdkafka客户端的编译运行 librdkafka是一个开源的Kafka客户端C/C++实现,提供了Kafka生产者.消费者接口. 由于项目需要,我要将Kafka生产者接口封装起来 ...

  6. Oracle游标

    转自:http://www.cnblogs.com/fjfzhkb/archive/2007/09/12/891031.html 游标-----内存中的一块区域,存放的是select 的结果      ...

  7. ORACLE ROWNUM解析

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp53 [align=middle;" align="le ...

  8. getRequestDispatcher&lpar;&rpar;和response&period;sendRedirect&lpar;&rpar;

    request.getRequestDispatcher()是请求转发,前后页面共享一个request   response.sendRedirect()是重新定向,前后页面不是一个request.

  9. Python内置函数&lpar;45&rpar;——ascii

    英文文档: ascii(object) As repr(), return a string containing a printable representation of an object, b ...

  10. PHP二维数组去重(指定键名)

    本例对二维数组中某个指定键名进行去重,发现网上大多使用array_unique或是foreach遍历等方式去重,效果不佳且较为繁琐. 本文以二维数组去重为引,介绍array_column函数的三种用法 ...