【题解】CF1503B 3-Coloring
题面传送门
解决思路
讲一下 \(\text{VP}\) 时的思路。
首先想到,只要能将棋盘中红色或蓝色部分全部填成同一个数,那么剩下的就不会受限了(可行有两个,限制只有一个):
但考虑到交互库可能有点坑,比如第一个给了 \(1\),你钦定了红色块全填 \(2\),但后面他可能一直给 \(2\) 。这样的话,你只能再钦定蓝色块全填 \(1\) 。所以需要 “双线并行” ,直到填满其中一种为止。
可以证明,是一定存在这样的一组可行解的。
注意:随意填时填的数不能和给出的数相同。为了找出这个错误笔者甚至写了一个简陋的交互库。。。
具体解释可以看代码。
AC Code
#include<bits/stdc++.h>
#define IOS ios::sync_with_stdio(false)
#define TIE cin.tie(0),cout.tie(0)
using namespace std;
int n,ans[105][105],t1,t2,op,cnt1,cnt2;
int tot1,tot2;
struct node{
int x,y;
}a1[10005],a2[10005];
bool fl;
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
if((i+j)%2==0) a1[++tot1].x=i,a1[tot1].y=j;
else a2[++tot2].x=i,a2[tot2].y=j;
}
}
//预处理红色块、蓝色块的位置
cin>>op;
if(op==1) cout<<2<<' ',t1=2;
if(op==2) cout<<3<<' ',t1=3;
if(op==3) cout<<1<<' ',t1=1;
cnt1++;
cout<<a1[cnt1].x<<' '<<a1[cnt1].y<<endl;
//钦定红色块全填什么
for(int i=1;i<=n*n-1;i++){
cin>>op;
if(op==t1&&!fl){
if(op==1) cout<<2<<' ',t2=2;
if(op==2) cout<<3<<' ',t2=3;
if(op==3) cout<<1<<' ',t2=1;
cnt2++;
cout<<a2[cnt2].x<<' '<<a2[cnt2].y<<endl;
fl=1;
}
//钦定蓝色块全填什么
else if(op==t1&&cnt2<tot2){
cout<<t2<<' ';
cnt2++;
cout<<a2[cnt2].x<<' '<<a2[cnt2].y<<endl;
}
//往蓝色块填数
else if(op==t1){
for(int z=1;z<=3;z++){
if(z!=t1&&z!=t2){
cout<<z<<' ';
break;
}
}
cnt1++;
cout<<a1[cnt1].x<<' '<<a1[cnt1].y<<endl;
}
//蓝色块填满了就往红色块填可行数
else if(cnt1<tot1){
cout<<t1<<' ';
cnt1++;
cout<<a1[cnt1].x<<' '<<a1[cnt1].y<<endl;
}
//往红色块填数
else{
for(int z=1;z<=3;z++){
if(z!=t1&&z!=op){ //注意这里不能与输入的数相同
cout<<z<<' ';
break;
}
}
cnt2++;
cout<<a2[cnt2].x<<' '<<a2[cnt2].y<<endl;
}
//红色块填满了就往蓝色块填可行数
}
return 0;
}
【题解】CF1503B 3-Coloring的更多相关文章
- AGC025简要题解
AGC025简要题解 B RGB Coloring 一道简单题,枚举即可. C Interval Game 考虑可以进行的操作只有两种,即左拉和右拉,连续进行两次相同的操作是没有用的. 左拉时肯定会选 ...
- 题解 洛谷P3936 Coloring
考虑搜索,发现复杂度爆炸 贪心,正确性过低(~~实测爆炸~~) 于是,~~发现~~这题是模拟退火 这里不讲解退火的定义了,初学退火可以去平衡点 退火本身维护一个答案图像,答案的q,当前图 ...
- Codeforces Round #369 (Div. 2) C. Coloring Trees DP
C. Coloring Trees ZS the Coder and Chris the Baboon has arrived at Udayland! They walked in the pa ...
- Codeforces Round #369 (Div. 2) C. Coloring Trees(dp)
Coloring Trees Problem Description: ZS the Coder and Chris the Baboon has arrived at Udayland! They ...
- Codeforces Round #369 (Div. 2) C. Coloring Trees (DP)
C. Coloring Trees time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
- AGC030 简要题解
A - Poisonous Cookies 题意 有\(A\)个能解毒的普通饼干,\(B\)个能解毒的美味饼干,\(C\)个有毒的美味饼干,求最多能吃多少个美味饼干,每次吃完有毒的饼干后要解毒后才能继 ...
- 【arc073e】Ball Coloring(线段树,贪心)
[arc073e]Ball Coloring(线段树,贪心) 题面 AtCoder 洛谷 题解 大型翻车现场,菊队完美压中男神的模拟题 首先钦定全局最小值为红色,剩下的袋子按照其中较大值排序. 枚举前 ...
- CODE FESTIVAL 2017 qual A 题解
补一发A的题解. A - Snuke's favorite YAKINIKU 题意: 输入字符串S,如果以YAKI开头输出Yes,否则输出No. #include<bits/stdc++.h&g ...
- 【AtCoder】AGC026 题解
A - Colorful Slimes 2 找相同颜色的一段,然后答案加上段长除2下取整 代码 #include <iostream> #include <cstdio> us ...
随机推荐
- 第八十八篇:Vue keep-alive的使用 让组件"活下去""
好家伙, 1.关于keep-alive 这是一个用于阻止组件自行销毁的插件 <!-- keep-alive可以把内部组件进行缓存,而不是销毁组件 --> 那么我们什么时候会用到他呢? 举个 ...
- 【设计模式】Java设计模式 -工厂模式
[设计模式]Java设计模式 -工厂模式 不断学习才是王道 继续踏上学习之路,学之分享笔记 总有一天我也能像各位大佬一样 一个有梦有戏的人 @怒放吧德德 分享学习心得,欢迎指正,大家一起学习成长! 目 ...
- SpringBoot_事务总结
Springboot 事务 1. 打印SQL 日志的两种配置方式 [1]通过配置包的log等级来打印SQL日志,但这种不会打印出事务日志 logging.level.com.grady.mybatis ...
- Java中一些必须要知道的东西
直接打印数组名称,得到的是数组对应的内存地址--哈希值.
- CentOS7下的lvm(逻辑卷)在线扩容
扩展前该lvm分区为14GB 关闭系统,给sdb硬盘扩展6GB,然后重新进入CentOS.(或者是原有磁盘还有剩余未使用的空间) 对sdb进行分区: [root@converter ~]# fdisk ...
- U盘插入电脑后图标是灰色的,打开提示“请将磁盘插入驱动器”
问题描述: U盘插到win10电脑上后,U盘图标显示灰色,双击打开提示:请将磁盘插入驱动器,无法格式化,在U盘点右键/属性,显示为容量等为0. 解决办法如下: 1.首先要下载一个U盘芯片检测工具chi ...
- 【前端必会】webpack 插件,前进路绕不过的障碍
背景 webpack的使用中我们会遇到各种各样的插件.loader. webpack的功力主要体现在能理解各个插件.loader的数量上.理解的越多功力越深 开始 https://webpack.do ...
- EFCore分表实现
实现原理 当我们new一个上下文DbContext 后, 每次执行CURD方式时 ,都会依次调用OnConfiguring(),OnModelCreating()两个方法. OnConfiguring ...
- PAT (Basic Level) Practice 1014 福尔摩斯的约会 分数 20
大侦探福尔摩斯接到一张奇怪的字条: 我们约会吧! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm 大侦探很快就明白了,字 ...
- Linux+Wine玩GTA5指南
如果你的系统没有Wine先装Wine和winetricks,Wine在各大发行版的源都能找到.记住32位和64位的Wine都要装 安装wget后,输入指令 sudo -s cd /opt mkdir ...