【NOIP2017提高A组模拟9.17】信仰是为了虚无之人
【NOIP2017提高A组模拟9.17】信仰是为了虚无之人
Description

Input

Output

Sample Input
3 3 0
1 1 7
1 1 6
1 3 2
Sample Output
1
0
1
7
0
5
Data Constraint

题解
判断真假考虑并查集,设\(g[i]\)表示从当前这棵树的根到\(i\)的前缀异或值,那么对于当前这个区间,\(l-1\)和\(r\)讨论
设\(f1\)是\(l-1\)的根,\(f2\)是\(r\)的根
- 如果\(f1=f2\),说明是同一棵树,那么只有\(k=g[r]\ xor\ g[l-1]\)成立的时候才是真
- 如果\(f1!=f2\),肯定是真,然后考虑合两棵树并,把\(f1\)和\(f2\)里较大的接到较小的,然后\(g[f2]=g[f2]\ xor\ g[l-1]\ xor\ g[r]\ xor\ k\),因为要使接上去之后异或值是\(k\)
在并查集\(find\)的时候同时更新\(g[i]\)
设\(s[i]\)表示\(1\)~\(i-1\)的最小异或值
求最小值时,如果当前这个点是祖先,说明这个点的取值没有限制,自然取0最优:\(s[i]=s[i-1]\)。如果不是祖先,那么这个点要填的就是\(g[i]\),\(s[i]=s[find(i)]^\ xor\ g[i]\)
输出\(s[i]\ xor\ s[i-1]\)
Code
#include<cstdio>
#include<algorithm>
using namespace std;
int n,m,pd,l,r,k,last,f1,f2,x,f[200001],g[200001],sum[200001];
int read()
{
int res=0,fh=1;char ch=getchar();
while ((ch<'0'||ch>'9')&&ch!='-') ch=getchar();
if (ch=='-') fh=-1,ch=getchar();
while (ch>='0'&&ch<='9') res=(res<<1)+(res<<3)+(ch-'0'),ch=getchar();
return res*fh;
}
int find(int x)
{
if (f[x]==x) return x;
int xx=find(f[x]);
g[x]^=g[f[x]];
return f[x]=xx;
}
int main()
{
freopen("sanae.in","r",stdin);
freopen("sanae.out","w",stdout);
n=read();m=read();pd=read();
for (int i=1;i<=n;++i)
f[i]=i;
while (m--)
{
l=read();r=read();k=read();
if (pd) l^=last,r^=last,k^=last;
f1=find(l-1);f2=find(r);
if (f1==f2)
{
if ((g[l-1]^g[r])==k) last=1;
else last=0;
printf("%d\n",last);
}
else
{
if (f1>f2) swap(f1,f2);
f[f2]=f1;
g[f2]^=g[l-1]^g[r]^k;
last=1;
printf("%d\n",last);
}
}
for (int i=1;i<=n;++i)
{
x=find(i);
if (i==x) sum[i]=sum[i-1];
else sum[i]=sum[x]^g[i];
printf("%d\n",sum[i]^sum[i-1]);
}
fclose(stdin);
fclose(stdout);
return 0;
}
【NOIP2017提高A组模拟9.17】信仰是为了虚无之人的更多相关文章
- 【NOIP2017提高A组模拟9.17】猫
[NOIP2017提高A组模拟9.17]猫 题目 Description 信息组最近猫成灾了! 隔壁物理组也拿猫没办法. 信息组组长只好去请神刀手来帮他们消灭猫.信息组现在共有n 只猫(n 为正整数) ...
- 【NOIP2017提高A组模拟9.17】组合数问题
[NOIP2017提高A组模拟9.17]组合数问题 题目 Description 定义"组合数"S(n,m)代表将n 个不同的元素拆分成m 个非空集合的方案数. 举个例子,将{1,2,3}拆分成2 个 ...
- JZOJ5373【NOIP2017提高A组模拟9.17】信仰是为了虚无之人
题目 分析 我们发现,如果[l,r]的异或和为k是真要求,有且仅当不存在[l,i]和[i,r]两个区间的异或和不为k. 我们用带权并查集了维护这些,但是,由于区间不连续,我们将点权移到边上,对于区间[ ...
- JZOJ 100029. 【NOIP2017提高A组模拟7.8】陪审团
100029. [NOIP2017提高A组模拟7.8]陪审团 Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits Got ...
- JZOJ 5328. 【NOIP2017提高A组模拟8.22】世界线
5328. [NOIP2017提高A组模拟8.22]世界线 (File IO): input:worldline.in output:worldline.out Time Limits: 1500 m ...
- JZOJ 5329. 【NOIP2017提高A组模拟8.22】时间机器
5329. [NOIP2017提高A组模拟8.22]时间机器 (File IO): input:machine.in output:machine.out Time Limits: 2000 ms M ...
- JZOJ 5307. 【NOIP2017提高A组模拟8.18】偷窃 (Standard IO)
5307. [NOIP2017提高A组模拟8.18]偷窃 (Standard IO) Time Limits: 1000 ms Memory Limits: 262144 KB Description ...
- JZOJ 5286. 【NOIP2017提高A组模拟8.16】花花的森林 (Standard IO)
5286. [NOIP2017提高A组模拟8.16]花花的森林 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Descript ...
- JZOJ 5305. 【NOIP2017提高A组模拟8.18】C (Standard IO)
5305. [NOIP2017提高A组模拟8.18]C (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Description ...
随机推荐
- 微信小程序-TodoList
TodoList 博客班级 https://edu.cnblogs.com/campus/zjcsxy/SE2020 作业要求 https://edu.cnblogs.com/campus/zjcsx ...
- 选择API管理平台之前要考虑的5个因素
API(应用程序编程接口)经济的飞速增长导致对API管理平台的需求相应增加. 这些解决方案可在整个生命周期内帮助创建,实施,监控,分析,保护和管理API. 据一些估计,全球API管理市场预计在2018 ...
- 重拾python所要知道的一些主干知识点
前言:因为有一段时间没有用python了,最近需要用到,只能回头过去看B站视频补一补,因为语言都是相通的,而且一些细节都可以去查表解决,所以呢,我们只需要知道一些python与其他语言的不同和常见的优 ...
- Unknown CMake command
Unknown CMake command "add_clang_library".等 在官网上照着打 发现上面错误 结果是版本问题 选好版本和选项catkin还是rosbuild
- 论文解读 - Relational Pooling for Graph Representations
1 简介 本文着眼于对Weisfeiler-Lehman算法(WL Test)和WL-GNN模型的分析,针对于WL测试以及WL-GNN所不能解决的环形跳跃连接图(circulant skip link ...
- 解决无法访问 Github
可以正常使用Google,但无法打开Github. 查阅了一些资料,发现需要在hosts文件中添加映射. 在hosts文件中加入两行 140.82.113.4 github.com 140.82.11 ...
- javascript多物体运动案例:多物体淡入淡出
javascript多物体运动案例:多物体淡入淡出 任务描述: 补充代码,当鼠标移入红色区域时,该区域透明度逐渐增加至不透明;当鼠标移出该红色区域时,该区域透明度逐渐恢复至初始程度. 效果图: < ...
- Integer a=1,b=1,c=500,d=500;a==b,c==d;
public class test { public static void main(String[] args){ Integer a=1,b=1,c=500,d=500; System.out. ...
- 测试cephfs写入海量文件
前言 测试cephfs的写入大量文件,通过mdtest写入1K大小的文件1亿个,每个目录里面文件为1万,目录总数为1万,总文件数目就为1亿了 写入的命令 mdtest -C -F -L -z 4 -b ...
- SpringIOC基础知识总结
目录 1.BeanFactory和ApplicationContext的区别: 2.实例化bean的三种方式: ⽅式⼀:使⽤⽆参构造函数 ⽅式⼆:使⽤静态⽅法创建 ⽅式三:使⽤实例化⽅法创建 3.Be ...