题意:

输入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的更多相关文章

  1. 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 ...

  2. Sonya and Matrix CodeForces - 1004D (数学,构造)

    http://codeforces.com/contest/1004/problem/D 题意:网格图给定到中心点的曼哈顿距离数组, 求该图n,m及中心点位置 首先可以观察到距离最大值mx一定在某个角 ...

  3. 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 ...

  4. Maximal Binary Matrix CodeForces - 803A (贪心+实现)

    题目链接 题意有点坑: 给你一个N*N的矩阵,让你填入K个1,使之整个矩阵关于左上到右下的对角线对称,并且这个要求这个矩阵的字典序最大. 对矩阵的字典序的定义是从每一行的第一个元素开始比较,大着为字典 ...

  5. Clear The Matrix CodeForces - 903F (状压)

    大意: 给定4行的棋盘以及4种大小的正方形方块, 每种各有一定花费, 每次可以选一种方块放在棋盘上, 棋盘对应格子全变为'.', 求最少花费使得棋盘全部变成'.' 状压基本操作练习, 状态取12位, ...

  6. Vasya and Magic Matrix CodeForces - 1042E (概率dp)

    大意:给定n*m矩阵, 初始位置(r,c), 每一步随机移动到权值小于当前点的位置, 得分为移动距离的平方, 求得分期望. 直接暴力dp的话复杂度是O(n^4), 把距离平方拆开化简一下, 可以O(n ...

  7. codeforces400C

    Inna and Huge Candy Matrix CodeForces - 400C Inna and Dima decided to surprise Sereja. They brought ...

  8. # CodeCraft-20 (Div. 2)

    CodeCraft-20 (Div. 2) A. Grade Allocation 思路 : 无脑水题 代码 #include<iostream> #include<algorith ...

  9. CodeForces 313C Ilya and Matrix

    Ilya and Matrix Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Su ...

随机推荐

  1. SSI服务器端包含注入

    服务器端嵌入:Server Side Include,是一种类似于ASP的基于服务器的网页制作技术.大多数(尤其是基于Unix平台)的WEB服务器如Netscape Enterprise Server ...

  2. spring 请求静态资源文件

    在springMVC项目中使用restful风格写,需要到web.xml配置全拦截. <servlet>        <servlet-name>springmvc</ ...

  3. linux入门系列20--Web服务之LNMP架构实战

    作为本入门系列最后一篇文章,将演示如何在CentOS7环境下搭建LNMP环境来构建个人博客网站. 常见搭建网站的方式有LAMP.LNMP.IIS.Nginx.Tomcat等等,本文演示比较流行的基于L ...

  4. 学习Angular1

    教程: 参考教程: https://www.runoob.com/angularjs/angularjs-tutorial.html 一.angular的简介AngularJS 是一个 JavaScr ...

  5. iOS 重构AppDelegate

    一.Massive AppDelegate AppDelegate 是应用程序的根对象,它连接应用程序和系统,确保应用程序与系统以及其他应用程序正确的交互,通常被认为是每个 iOS 项目的核心. 随着 ...

  6. Ubuntu查看文件格式(后缀名)

    在文件目录执行: $ file filename #filename表示要查看的文件名

  7. Codeforces Round #625 (1A - 1D)

      A - Journey Planning 题意: 有一列共 n 个城市, 每个城市有美丽值 b[i], 要访问一个子序列的城市, 这个子序列相邻项的原项数之差等于美丽值之差, 求最大的美丽值总和. ...

  8. win10下vue-devtools的安装和使用

    网上关于vue-devtools的安装数不胜数,但是自己操作起来却总是遇到问题. 写下这篇随笔,以防以后忘记. vue-devtools是一款基于chrome游览器的插件,用于调试vue应用,这可以极 ...

  9. layui经典模块化前端UI框架初识

    layui产生背景 layui相对于vue来说确实稍有逊色,但是官网提供的入门文档以及完善的框架结构,使的很多人开始用layui来开发前端页面,那么什么人会去使用layui呢? 针对后端开发人员,在对 ...

  10. orm层面的删除的注意事项

    orm层面的删除 当两张表的外键约束设置为RESTRICT or ACTION时,在sql的层面上想要删除父级表的数据时吗,mysql会拒绝删除,但是 使用orm的delete还是会删除父级表的数据. ...