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 ...
随机推荐
- [AI开发]零代码公式让你明白神经网络的输入输出
这篇文章的标题比较奇怪,网上可能很少类似专门介绍神经网络的输入输出相关文章.在我实际工作和学习过程中,发现很有必要对神经网络的输入和输出做一个比较全面地介绍.跟之前博客一样,本篇文章不会出现相关代码或 ...
- [ex-kmp] HDU 2019 Multi-University Training Contest 5-string matching
string matching Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others ...
- display:flex 简单记录
1.有写了 display:flex:这个就是 采用了 flex布局的 元素 这个元素可以 写 6个属性: flex-direction : row | column | row-reverse ...
- Building Applications with Force.com and VisualForce (DEV401) (二五):Visualforce Controller
Dev401-026:Visualforce Pages: Visualforce Controller Module Objectives1.Identify the functionality ...
- SpringBoot 集成多数据源
一个项目中怎么划分数据库,可以通过具体业务需求. 项目中数据源怎么如何划分,通过注解的方式@Datasource(ref="") 在方法上指定,会连接指定的数据源,这种方式比较繁琐 ...
- Java 获取 IP
/** * 获取访问者IP. * 在一般情况下使用 Request.getRemoteAddr() 即可,但是经过 nginx 等反向代理软件后,这个方法会失效. */ private String ...
- .Net微服务实践(二):Ocelot介绍和快速开始
目录 介绍 基本原理 集成方式 快速开始 创建订单服务 创建产品服务 创建网关 运行验证 最后 上篇.Net微服务实践(一):微服务框架选型 我们对微服务框架整体做了介绍,接下来我们从网关Ocelot ...
- js实现 多级联动
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
- 1066 Root of AVL Tree (25分)(AVL树的实现)
An AVL tree is a self-balancing binary search tree. In an AVL tree, the heights of the two child sub ...
- 中阶 d06.1 cookie && session && jsp介绍
##Cookie > 饼干. 其实是一份小数据, 是服务器给客户端,并且存储在客户端上的一份小数据 ### 应用场景 > 自动登录.浏览记录.购物车. ###为什么要有这个Cookie & ...