P5167 xtq的神笔】的更多相关文章

传送门 题解 倍增也好二分也好,果然复杂度只要和\(\log\)插上关系就没我啥事了-- 首先由一个显而易见然而我完全没有发现的结论,设\(calc(l,r)\)表示区间\([l,r]\)的\(or\)起来加区间的\(and\)起来加区间的\(\gcd\)起来(就是题目里说的那个乱七八糟的东西)的值,那么我们固定右端点\(r\),左端点逐渐座椅的过程中,\(calc(l,r)\)的变化的次数为\(O(\log v)\),其中\(v\)是所有格子的值域 证明:左移的时候,\(or\)和\(and\…
P5168 xtq玩魔塔 又是码农题- 利用克鲁斯卡尔重构树的性质 我们就可以得出 \(dep\) 值小的,肯定比 \(dep\) 大的值要优. 于是第二问就可以直接 LCA 求出来了- 至于第三问,dfs序一下,然后求子树-考虑莫队 修改直接带修莫队,没了. #include <bits/stdc++.h> using namespace std ; int min(int x , int y) { return x < y ? x : y ; } void swap(int &…
Description 给定一个 \(n\) 个顶点,\(m\) 条边的无向联通图,点.边带权. 先有 \(q\) 次修改或询问,每个指令形如 \(\text{opt}\ x\ y\): \(\text{opt}=1\):将顶点 \(x\) 的点权修改为 \(y\): \(\text{opt}=2\):查询顶点 \(x, y\) 间所有路径中路径上最大值中,最小的哪一个最大值(瓶颈路). \(\text{opt}=3\):查询顶点 \(x\) 可以结果边权 \(\le y\) 的边能到达的所有点…
1.准备工作 软件:eclipse. mysql .navicat for mysql 包:mybatis-3.1.1.jar   mysql-connector-java-5.1.7-bin.jar   2.创建项目 web项目在eclipse中是指动态web项目,即Dynamic web project. 源码放在src文件夹. jar包放在自建的lib文件夹下然后build path到当前项目中. 3.创建数据库和表 打开 MYSQL command line client,输入数据库密码…
这题不错啊,结合了一些不太传统的姿势. 首先看到题目有一问从一个点到另一个点边权最小值.想到了什么? 克鲁斯卡尔生成树+倍增?好吧其实有一个更常用NB的算法叫克鲁斯卡尔重构树 (不会的可以看dalao's blog,并且可以尝试切掉Luogu P4768 [NOI2018]归程) 回到这题,我们可以把重构树建出来之后直接求两点LCA的权值. 然后对于第三问,考虑继续利用重构树,我们发现此时能走到的点在树上一定是一颗子树. 子树内DFS序连续啊,所以就变成区间数颜色了,直接莫队啊! 好吧还有修改,…
根据大神博客园中的文章,自己亲手敲了一遍,对每个解说点都自己动手进行实践,收获颇丰,谢谢Learning hard大神,原文地址http://www.cnblogs.com/zhili/p/DesignPatternSummery.html 具体解说可以看原文. public class Singleton { //定义静态变量保存类的实例 private static Singleton uniqueInstance; // 定义一个标识确保线程同步 private static readon…
题目大意:给你一张$n(n\leqslant10^5)$个点$m(m\leqslant3\times10^5)$条边的无向图,每条边有一个权值,$q(q\leqslant2^{18})$次询问,每次询问给你一个$x(x<2^{18})$,问有多少个有序点对$(u,v)$,满足有一条$u$到$v$的路径异或和为$x$ 题解:先建一棵生成树,把图中所有环丢进线性基,发现一条$u->v$的路径就是树上$u->v$的距离异或上一些环. 发现$x<2^{18}$,所以可以把线性基中所有可以表…
题目大意:给出一张有向图,保证任何时候边都是从编号大的向编号小连.两个操作: $1\;l\;r:$表示若编号在区间$[l,r]$内的点被染色了,问至少还需要染多少个点才可以使得整张图被染色.一个点会被染色的要求是:要么直接被染色,要么它所连向的点中至少一个被染色 $2\;l\;r\;x:$表示编号在区间$[l,r]$中的所有点都向$x$连一条边,保证$x<l$ 题解:发现这张图是一个$DAG$,然后只要把所有出度为$0$的点染色就一定可以把所有点染色. 于是就记录每个点是否出度为$0$,询问是区…
传送门 我咋感觉我学啥都是白学-- 首先可以参考一下这一题,从中我们可以知道只要知道两点间任意一条路径以及整个图里所有环的线性基,就可以得知这两个点之间的所有路径的异或和 然而我好像并不会求线性基能张成的元素--话说原来这个在线性基里爆搜就可以了么-- 于是我们可以随便选一个点为根,\(dfs\)一遍跑出个生成树,\(dis[u]\)表示点\(u\)到根节点的路径上的异或和,那么\(dis[u]\bigoplus dis[v]\)就是\(u,v\)之间的一条路径的权值,设\(x\)为一个线性基能…
传送门 其实就是板子--只要会克鲁斯卡尔重构树和带修莫队就可以了 这么想着的我就调了将近一个下午-- 思路其实比较清晰,然而码量很大,细节贼多-- 不难看出只在最小生成树上走最优,于是建出克鲁斯卡尔重构树,\(2\)操作直接倍增跳,\(1\)操作和\(3\)操作离线,把克鲁斯卡尔重构树用\(dfs\)序转化为序列之后用带修莫队做 然后--注意细节--这是我的肺腑之言-- //minamoto #include<bits/stdc++.h> #define R register #define…