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 ...
随机推荐
- python浅学【网络服务中间件】之Celery
一.关于Celery: 什么是任务队列: 任务队列一般用于线程或计算机之间分配工作的一种机制. 任务队列的输入是一个称为任务的工作单元,有专门的工作进行不断的监视任务队列,进行执行新的任务工作. 什么 ...
- Ajax-使用教程
运行环境 ajax一定的是运行在网站服务器里面,因此你需要自己配置nodejs服务器 导学:传统的问题还有代理人ajax 传统的http中是又浏览器来做.它在发生和响应的时候网页是不能进行其他操作的 ...
- 本地不安装Oracle时,PLSQL的配置
这篇我在csdn上写过的,文章地址:https://blog.csdn.net/weixin_40404606/article/details/101940542
- LeetCode#1047-Remove All Adjacent Duplicates In String-删除字符串中的所有相邻重复项
一.题目 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们. 在 S 上反复执行重复项删除操作,直到无法继续删除. 在完成所有重复项删除操作后返回最终的字符串.答案 ...
- Ubuntu下已安装Anaconda但出现conda: command not found错误解决办法
原因:环境未配置 执行[vim ~/.bashrc]命令,进入配置文件,在最后一行按'o'插入一行,并添加语句: export PATH=/home/duanyongchun/anaconda3/bi ...
- Java实现3次找到假球
前言 之前老师让写一个程序,就写了写. 正文 题目要求 程序要求 10个铅球中有一个假球(比其他铅球的重量要轻),用天平三次称出假球. 程序设计思路 第一次使用天平分别称5个球,判断轻的一边有假球:拿 ...
- python学习第四节 迭代器 生成器
1:什么是迭代 可以直接作用于for循环的对象统称为可迭代对象(Iterable). 可以被next()函数调用并不断返回下一个值的对象称为迭代器(Iterator). 所有的Iterable均可以通 ...
- 使用mpvue开发小程序如何定义全局变量
我们创建好mpvue项目之后,找到src/main.js打开在后面添加一行代码 (注意:不能在const app = new Vue(App) 之前添加) Vue.prototype.globalDa ...
- Mysql 临时表+视图
原文地址:http://www.cnblogs.com/mrdz/p/6195878.html 学习内容: 临时表和视图的基本操作... 临时表与视图的使用范围... 1.临时表 临时表:临时表, ...
- Vue-CLI 3.x 自动部署项目至服务器
前言 平时部署前端项目流程是:先部署到测试环境ok后再发布到生产环境上,部署到测试环境用 xshell 连上服务器,然后用 xftp 连接服务器,然后本地 build 项目,接着把 build 好的文 ...