【题解】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 ...
随机推荐
- C# for循环创建多线程
这里仅讨论Task多线程编程,不讨论其他可以使用多线程的情况,比如Beginxxx,Thread等 一般情况下,如果有多个线程需要同是启动,且每个线程中使用了集合collection中的序号. 比如参 ...
- 第九十九篇:JS闭包
好家伙,总是要来的,去面对那些晦涩难懂的原理,它就在那里,等着我去搞定它 首先我要去补充一些最基本的概念, 1.什么是内存? 新华字典永远的神, 但这个解释显然不够 去看看百度百科: 内存: CP ...
- Unity-编辑器拓展之GUILayout,EditorGUILayout布局 { }
Unity 脚本 API 中文版 链接: https://docs.unity3d.com/cn/2019.4/ScriptReference/ 创建自定义窗口 public class MyWind ...
- Nginx几种负载均衡方式介绍
Nginx几种负载均衡方式介绍 前言 负载均衡就是Nginx将请求分摊到不同的服务器中,保证服务的可用性,缓解服务压力,保证服务的响应速度,即使某一个应用服务不可用,也可以保证业务的正常进行,并且方便 ...
- 系统无法启动inaccessible boot device
近日有一台Windows 2016遇到了系统无法启动的问题,出现错误inaccessible boot device.发现系统可以进入故障恢复模式,看来问题还不大.因为进入故障恢复模式的时候自动识别的 ...
- Memlab,一款分析 JavaScript 堆并查找浏览器和 Node.js 中内存泄漏的开源框架
Memlab 是一款 E2E 测试和分析框架,用于发现 JavaScript 内存泄漏和优化机会. Memlab 是 JavaScript 的内存测试框架.它支持定义一个测试场景(使用 Puppete ...
- 5.第四篇 Etcd存储组件高可用部署
文章转载自:https://mp.weixin.qq.com/s?__biz=MzI1MDgwNzQ1MQ==&mid=2247483792&idx=1&sn=b991443c ...
- 使用 APM 中的 Service Map 了解和调试应用程序
文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/118667839
- 不停机为虚拟机添加主机磁盘(以VMware Workstation为例)
VMware Workstation软件上安装的centos7系统,新增磁盘后使用fdisk -l命令查看不到新增的磁盘,有没有办法在不重启的情况下添加上新磁盘? 有办法 具体如下: # 查看主机总线 ...
- 在Portainer上管理其他docker主机(这只是其中一种方式),另一种方式看这个文档:使用Portainer管理其他主机的docker应用有两种方式
其他主机开启远程连接docker端口 需要设置一下2375端口的监听.通过修改docker配置文件方式进行监听. 修改配置文件修改监听端口 使用Centos7安装的docker,所以下面的配置是适用于 ...