JZOJ 4807 【NOIP2016提高A组五校联考3】破解
来源:互联网 发布:工业软件的前景 编辑:程序博客网 时间:2024/05/07 21:39
破解
题目大意
问:
答案对109 +7 取模
题解
首先做差分。
每一位上的数变为和前面的那个数的异或值。做完差分后的数组每一种不同的情况都对应着原串的每一种不同的情况。
然后每个区间对应的操作只会改变查分数组的两个位置,分别为
对于每个区间,我们把
考虑连边。
如果一条边连接了两个不同的联通块,那么这个区间选将会导致当前全部方案都变成新的方案,所以此时答案翻倍(乘
连边操作以及联通块的维护可以用并查集。
Code(Pascal)
const mo=1000000007;var fa:array[0..300000] of int64; qq:array[0..300000,1..3] of int64; qz:array[0..120000,1..2] of int64; t,y,i,j,k,kk,l,n,m,o:longint; ans:int64;procedure qsort(l,r:longint); var i,j,m:longint; begin i:=l; j:=r; m:=qq[(l+r) div 2,1]; repeat while qq[i,1]<m do inc(i); while qq[j,1]>m do dec(j); if i<=j then begin qq[0]:=qq[i]; qq[i]:=qq[j]; qq[j]:=qq[0]; inc(i); dec(j); end; until i>j; if l<j then qsort(l,j); if i<r then qsort(i,r); end;function gf(o:longint):longint; begin if fa[o]=o then exit(o); fa[o]:=gf(fa[o]); exit(fa[o]); end;begin readln(t); for y:=1 to t do begin o:=0; readln(n,m); for i:=1 to m do begin readln(qz[i,1],qz[i,2]); inc(o); qq[o,1]:=qz[i,1]; qq[o,2]:=i; qq[o,3]:=1; inc(o); qq[o,1]:=qz[i,2]+1; qq[o,2]:=i; qq[o,3]:=2; end; qsort(1,o); k:=0; kk:=0; for i:=1 to o do begin if k<>qq[i,1] then begin inc(kk); k:=qq[i,1]; end; qz[qq[i,2],qq[i,3]]:=kk; end; j:=0; for i:=1 to kk do fa[i]:=i; for i:=1 to m do if gf(qz[i,1])<>gf(qz[i,2]) then begin inc(j); fa[fa[qz[i,1]]]:=fa[qz[i,2]]; end; ans:=1; for i:=1 to j do ans:=(ans*2) mod mo; writeln(ans); end;
2 0
- JZOJ 4807 【NOIP2016提高A组五校联考3】破解
- [jzoj 4807]. 【NOIP2016提高A组五校联考3】破解
- JZOJ 4806 【NOIP2016提高A组五校联考3】打工
- jzoj 4811. 【NOIP2016提高A组五校联考1】排队
- JZOJ 4809 【NOIP2016提高A组五校联考1】挖金矿
- JZOJ 4810 【NOIP2016提高A组五校联考1】道路规划
- JZOJ 4811 【NOIP2016提高A组五校联考1】排队
- JZOJ 4812 【NOIP2016提高A组五校联考2】string
- [jzoj 4812]【NOIP2016提高A组五校联考2】string
- JZOJ 4813 【NOIP2016提高A组五校联考2】running
- JZOJ 4814. 【NOIP2016提高A组五校联考2】tree
- 【jzoj 4814】【NOIP2016提高A组五校联考2】tree
- JZOJ 4814 【NOIP2016提高A组五校联考2】tree
- [JZOJ 4815]【NOIP2016提高A组五校联考4】ksum
- JZOJ 4815 【NOIP2016提高A组五校联考4】ksum
- JZOJ 4815. 【NOIP2016提高A组五校联考4】ksum
- JZOJ 4816 【NOIP2016提高A组五校联考4】label
- JZOJ 4817 【NOIP2016提高A组五校联考4】square
- 共用体说明
- javaWeb-intellij中tomcat找不到HttpServlet的解决方法
- 微信jssdk多图片上传下载到服务器
- 3-5 学生成绩统计(c++对象数组)
- echart showLine没有显示的原因
- JZOJ 4807 【NOIP2016提高A组五校联考3】破解
- SQL注入试验一(获取数据库内容)
- [Android 测试] 性能回归测试之 MonkeyRunner使用、插件扩展、结合批处理
- 布线问题-分支限界法c++实现
- 题目标题: 猜年龄
- 算法精解----插入排序
- Android Application的作用
- Hadoop笔记之一:安装单节点集群
- Retrofit2使用简记