P6585 中子衰变
我们偶数的时候只要对称操作。
奇数的话,我们定义\(1\)的相反数为\(-1\),\(0\)相反数为\(0\)。
我们维护最长的两边的相反串,中间一段除了一个端点,其他均被染成同色。
那么如果对方染端点,那么我们两个端点相邻必有一个可染上相同颜色,此时相反串长度减1.
如果对方染和端点相邻,那么我们直接染端点。此时相反串长度减1。
否则我们在对称点上染上相反颜色。
#include<iostream>
#include<cstdio>
#define ll long long
#define N ((1 << 10) + 10)
ll num[N];
ll n,id;
int main(){
scanf("%lld%lld",&n,&id);
if(n & 1){
std::cout<<1<<std::endl;//选择后手
ll l = (n / 2),r = (n / 2),z = 0;//维护中间段
ll x,y;
ll m = (n - 1) / 2;
while(scanf("%lld%lld",&x,&y) == 2){
ll r = (n - m),l = m + 1;
num[x] = y;
if(x == l || x == r){
z = y;
if(!num[l - 1] && (num[l - 2] == 0 || num[l - 2] == y))
std::cout<<l - 1<<" "<<y<<std::endl,num[l - 1] = y,m --;
else
std::cout<<r + 1<<" "<<y<<std::endl,num[r + 1] = y,m --;
}else
if(((x == l + 1 && !num[l]) || (x == r + 1 && !num[r])) && y == z){
if(x == l + 1)
std::cout<<l<<" "<<y<<std::endl,num[l] = y;
if(x == r + 1)
std::cout<<r<<" "<<y<<std::endl,num[r] = y;
m -- ;
}
else
std::cout<<(n - x + 1)<<" "<<((y == 1) ? -1 : 1)<<std::endl,num[n - x + 1] = (y == 1) ? -1 : 1;
fflush(stdout);
}
}else{
ll x,y;
std::cout<<1<<std::endl;//选择后手。
while(scanf("%lld%lld",&x,&y) == 2){
std::cout<<(n - x + 1)<<" "<<y<<std::endl;
fflush(stdout);
}
}
}
P6585 中子衰变的更多相关文章
- iOS开发——UI高级OC篇&自定义控件之调整按钮中子控件(图片和文字)的位置
自定义控件之调整按钮中子控件(图片和文字)的位置 其实还有一种是在storyBoard中实现的,只需要设置对应空间的左右间距: 这里实现前面两种自定义的方式 一:imageRectForContent ...
- exists查询中子表可以是
exists查询中子表可以是’或则具体某一列 ,查询结果一致,因为exists只会返回 true或者false,一个boolean型的值
- 在C#中子线程如何操作主窗口线程上的控件
在C#中子线程怎样操作主线程中窗口上控件 在C#中,直接在子线程中对窗口上的控件操作是会出现异常,这是因为子线程和运行窗口的线程是不同的空间,因此想要在子线程来操作窗口上的控件.是不可能简单的通过控件 ...
- 解决TabActivity中子页面不通过导航跳转到还有一个页面的问题
问题:当你的导航在TabActivity中 而子页面的一个button须要切换到当中的某一个导航页面 转载请注明出处:http://blog.csdn.net/x605940745 demo下载地址: ...
- EasyUI tree 选中父节点子节点全部选中,选中子节点父节点不选中
需求:EasyUI tree 选中父节点子节点全部选中,选中子节点父节点不选中 效果: /** * 给树增加onCheck事件,首先使用cascadeCheck:false属性禁止全选, ...
- MVC中子页面如何引用模板页中的jquery脚本
MVC中子页面如何引用模板页中的jquery脚本 最近在学习mvc,遇到了一个问题:在html页面中写js代码,都是引用mvc5自带的jquery脚本,虽然一拖(将指定的jquery脚本如 jquer ...
- Vue中子组件调用父组件的方法
Vue中子组件调用父组件的方法 相关Html: <!DOCTYPE html> <html lang="en"> <head> <meta ...
- Android中子线程真的不能更新UI吗?
Android的UI访问是没有加锁的,这样在多个线程访问UI是不安全的.所以Android中规定只能在UI线程中访问UI. 但是有没有极端的情况?使得我们在子线程中访问UI也可以使程序跑起来呢?接下来 ...
- mkdir-无法创建目录(单层目录中子目录的个数默认为32000个)
今天运行在一台机器上的脚本突然通知无法创建目录了,上去执行shell脚本,也出现同样的错误,如下: $ mkdir test mkdir: 无法创建目录"test": 过多的连接 ...
随机推荐
- CAM 模板样式表
视图 模板类型 模板子类型 类型 子类型 刀具类型 刀具子类型 加工工序 mill_planar FACE_MILLING_AREA 100 261 加工工序 mill_planar FACE ...
- easyDialog 简单、实用的弹出层组件
easyDialog 简单.实用的弹出层组件 使用背景 在完成导师需求时,导师要求寻找比一个layer弹出层组件体积小得多的.最好能嵌入在进HTML代码中而非src引用的弹出层组件,在这个需求下,我找 ...
- ST表 ----kzsn考挂后有感
ST表,一个十分神奇的东西,需要O(nlogn)的时间预处理,但是他查询只需要O(1). 看似与线段树等数据结构时间复杂度一样,但是ST表的复杂度只在于预处理,预处理之后可以当做不耗时! 而想线段树这 ...
- 2021.10.7 NKOJ周赛总结
Ⅰ. 自描述序列 问题描述: 序列 1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,... 看似毫无规律,但若我们将相邻的数字合并 : 1,22,11,2,1,22,1 ...
- Hash算法:双重散列
双重散列是线性开型寻址散列(开放寻址法)中的冲突解决技术.双重散列使用在发生冲突时将第二个散列函数应用于键的想法. 此算法使用: (hash1(key) + i * hash2(key)) % TAB ...
- 转:VCS仿真vivado IP的方法
vivado中的仿真库和模型与ISE中的是不一样的,因此在vivado中使用VCS进行仿真的方法也与ISE中不一样. VCS可以通过两种方法对XILINX的器件进行功能仿真和门级仿真,这两种方法是 P ...
- linux下软链接文件的拷贝
最近在编译libnl库准备拷贝到其他机器中使用的时候出现无法拷贝问题,原因是sd卡是fat32文件系统格式,这种文件系统不支持linux下的ln软链接文件, void@void-ThinkPad-E4 ...
- Kill杀死Linux中的defunct进程(僵尸进程)
一.什么是defunct进程(僵尸进程)? 在 Linux 系统中,一个进程结束了,但是他的父进程没有等待(调用wait / waitpid)他,那么他将变成一个僵尸进程.当用ps命令观察进程的执行状 ...
- clone-graph leetcode C++
Clone an undirected graph. Each node in the graph contains alabeland a list of itsneighbors. OJ's un ...
- 六. Go并发编程--WaitGroup
一. 序言 WaitGroup是Golang应用开发过程中经常使用的并发控制技术. WaitGroup,可理解为Wait-Goroutine-Group,即等待一组goroutine结束.比如某个go ...