T - Nash Matrix CodeForces - 1316D
题意:
输入n行数,没行由2*n个数,表示一个坐标(x,y)。
如果x和y==-1表示从该点(i,j)出发,按照构造的前移动不会停下。
否则就要到点(x,y)处停下。
题解:
首先处理-1 枚举每个-1的坐标,判断四个方向是否存在-1的情况。如果不存在就可以结束了,否则就将移动方向保存到棋盘中。
然后处理x 如果(i,j)=(x,y),说明此处(i,j)一定时x。注意,如果输入了非-1的数据,那么只少要存在一个x。
然后从每个x出发,dfs向四个方向跑, 注意可以跑的前提时这四个方向必须是要到x。
最后如果有某个点没有枚举到,那么也没有答案。
#include<bits/stdc++.h>
using namespace std;
const int N=+;
char ans[N][N];
struct stu {
int a,b;
}mp[N][N];
bool flag=-;
int n;
int d[][]={,,,,-,,,-};
void dfs(int x,int y,int x1,int y1){
for(int i=;i<;i++){
int dx=x+d[i][];
int dy=y+d[i][];
if(dx>=&&dy>=&&dx<=n&&dy<=n&&mp[dx][dy].a==x1&&mp[dx][dy].b==y1&&ans[dx][dy]==''){
if(i==) {
ans[dx][dy]='U';
dfs(dx,dy,x1,y1);
}
else if(i==){
ans[dx][dy]='L';
dfs(dx,dy,x1,y1);
}
else if(i==){
ans[dx][dy]='D';
dfs(dx,dy,x1,y1);
}
else {
ans[dx][dy]='R';
dfs(dx,dy,x1,y1);
}
}
}
}
bool judge(int i,int j)
{
if(i+<=n&&mp[i+][j].a==-) {
ans[i][j]='D';
return true;
}
else if(j+<=n&&mp[i][j+].a==-){
ans[i][j]='R';
return true;
}
else if(i->=&&mp[i-][j].a==-){
ans[i][j]='U';
return true;
}
else if(j->=&&mp[i][j-].a==-){
ans[i][j]='L';
return true;
}
else return false;
}
int main()
{
ios::sync_with_stdio();
cin>>n;
int cnt=;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
int x,y;
cin>>x>>y;
if(x!=-) cnt++;
mp[i][j]={x,y};
ans[i][j]='';
}
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++){
if(mp[i][j].a==-){
if(!judge(i,j)){
cout<<"INVALID"<<endl;
return ;
}
}
}
int sum=;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(mp[i][j].a==i&&mp[i][j].b==j){
ans[i][j]='X';
sum++;
}
}
}
if(cnt!=&&sum==){
cout<<"INVALID"<<endl;
return ;
}
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(ans[i][j]=='X'){
dfs(i,j,i,j);
}
}
}
for(int i=;i<=n;i++){
for(int j=;j<=n;j++){
if(ans[i][j]=='') {
cout<<"INVALID"<<endl;
return ;
}
}
}
cout<<"VALID"<<endl;
for(int i=;i<=n;i++){
for(int j=;j<=n;j++)
cout<<ans[i][j];
cout<<endl;
}
return ;
}
T - Nash Matrix CodeForces - 1316D的更多相关文章
- Code force-CodeCraft-20 (Div. 2) D. Nash Matrix 详解(DFS构造)
D. Nash Matrix time limit per test2 seconds memory limit per test256 megabytes inputstandard input o ...
- Sonya and Matrix CodeForces - 1004D (数学,构造)
http://codeforces.com/contest/1004/problem/D 题意:网格图给定到中心点的曼哈顿距离数组, 求该图n,m及中心点位置 首先可以观察到距离最大值mx一定在某个角 ...
- Vasya And The Matrix CodeForces - 1016D (思维+构造)
Now Vasya is taking an exam in mathematics. In order to get a good mark, Vasya needs to guess the ma ...
- Maximal Binary Matrix CodeForces - 803A (贪心+实现)
题目链接 题意有点坑: 给你一个N*N的矩阵,让你填入K个1,使之整个矩阵关于左上到右下的对角线对称,并且这个要求这个矩阵的字典序最大. 对矩阵的字典序的定义是从每一行的第一个元素开始比较,大着为字典 ...
- Clear The Matrix CodeForces - 903F (状压)
大意: 给定4行的棋盘以及4种大小的正方形方块, 每种各有一定花费, 每次可以选一种方块放在棋盘上, 棋盘对应格子全变为'.', 求最少花费使得棋盘全部变成'.' 状压基本操作练习, 状态取12位, ...
- Vasya and Magic Matrix CodeForces - 1042E (概率dp)
大意:给定n*m矩阵, 初始位置(r,c), 每一步随机移动到权值小于当前点的位置, 得分为移动距离的平方, 求得分期望. 直接暴力dp的话复杂度是O(n^4), 把距离平方拆开化简一下, 可以O(n ...
- codeforces400C
Inna and Huge Candy Matrix CodeForces - 400C Inna and Dima decided to surprise Sereja. They brought ...
- # CodeCraft-20 (Div. 2)
CodeCraft-20 (Div. 2) A. Grade Allocation 思路 : 无脑水题 代码 #include<iostream> #include<algorith ...
- CodeForces 313C Ilya and Matrix
Ilya and Matrix Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Su ...
随机推荐
- 洛谷 P1891 疯狂LCM 题解
原题链接 享受推式子的乐趣吧 数论真有趣! 庆祝:数论紫题第 \(3\) 道. \[\sum_{i=1}^n \operatorname{lcm}(i,n) \] \[= \sum_{i=1}^n \ ...
- windows10 64位 安装mysql服务端 并使用navicat客户端链接 掉的一堆坑
1.目的 安装mysql服务端 并使用navicat客户端链接 2.过程 1)下载mysql服务端 下载过程(参考https://blog.csdn.net/youxianzide/article/d ...
- Contest 157
2019-10-06 12:15:28 总体感受:总体难度一般,dfs和dp题花了点时间,最后一题dp有思路,但是实现上不够好. 注意点:首先是hard问题的覆盖度依然是很大的问题,其次是要注意审题. ...
- 文献名:Repeat-Preserving Decoy Database for False Discovery Rate Estimation in Peptide Identication (用于肽段鉴定中错误发生率估计的能体现重复性的诱饵数据库)
文献名:Repeat-Preserving Decoy Database for False Discovery Rate Estimation in Peptide Identication (用于 ...
- eNSP上NAT的配置
NAT介绍: 早在20世纪90年代初,有关RFC文档就提出了IP地址耗尽的可能性.IPv6技术的提出虽然可以从根本上解决地址短缺的问题,但是也无法立刻替换现有成熟且广泛应用的IPv4网络.既然不能 立 ...
- 使用PostgreSQL注意事项
一.大小写特别敏感 大写字段需要用“”引号(pg字段名使用“”,MySQL字段名使用``) ******表名以及字段名如果是小写但是为关键字,比如name,则也需使用"": 二.分 ...
- Python python对象 enumerate
""" enumerate(iterable[, start]) -> iterator for index, value of iterable Return a ...
- sql select sql查询
select 一.课上练习代码 1 查询所有学生信息 select * from tb_student; select * from tb_teacher; 2 查询所有课程名称及学分(投影和别名) ...
- 【API知识】SpringBoot项目中@EnableXXX的原理
@EnableXX注解的使用场景 SpringBoot为开发人员提供了很多便利,例如如果想要定时功能,只要添加@EnableSchedule,即可配合@Schedule注解实现定时任务功能,不需要额外 ...
- 相见恨晚的 Git 命令动画演示,一看就懂!
虽然 Git 是一个强大的工具,但是我觉得大部分人都会同意我说的:它也可以是一个--噩梦!我一直觉得,使用 Git 的时候把操作过程在脑海里视觉化会非常有用:当我执行某个命令的时候,分支之间是如何交互 ...