01 2019 档案

摘要:题意:给出一个012序列,进行m次操作,每次选择一个区间并把它变成全0。 要求序列上的2最终还是2,序列上的1最终变成0。 考虑只有0和2怎么做。 求出有多少种区间的选择方法数x。 ans=x^m。 带上1以后,有一个暴力的做法,直接容斥那些1最后没有变成0,然后把这些看成2来做。 复杂度O(2^n 阅读全文
posted @ 2019-01-31 20:29 Creed-qwq 阅读(89) 评论(0) 推荐(0) 编辑
摘要:题意: 容斥二进制意义下至少哪些位置不相等。 cpp include include include include include include include include include define N 2200000 define L 2000000 define eps 1e 7 d 阅读全文
posted @ 2019-01-31 17:03 Creed-qwq 阅读(171) 评论(0) 推荐(0) 编辑
摘要:n个物品,a选了收益是ai,b选了收益是bi,双方轮流选,目的都是最大化自己的收益 对方的收益,都使用最优策略,n 阅读全文
posted @ 2019-01-27 21:30 Creed-qwq 阅读(100) 评论(0) 推荐(0) 编辑
摘要:算法流程 x0 > y1 表示x为false时y必须为true 最后输出的时候谁的bel小选谁 前后缀建图 例:要求n个变量满足至多有1个为true。 暴力:一个点的true向其它n-1个点的false连边,复杂度O(n^2)。 正解:prei表示前i个点是否有真。 prei的true向prei+1 阅读全文
posted @ 2019-01-27 20:51 Creed-qwq 阅读(154) 评论(0) 推荐(0) 编辑
摘要:题意:求树上第k大联通块 n,kt'的路径。 合并的时候新建关于当前分治重心的S点和T点。 S s1 t1 s2 t2 s3 t3 T。 其中S s1边权为wx,ti si+1的边权为0,再连一条S T边权为0代表这个点不选的方案即可。 这样一波神仙操作后S T就可以代表一条选择了这个点(这里选择的 阅读全文
posted @ 2019-01-27 19:06 Creed-qwq 阅读(410) 评论(0) 推荐(0) 编辑
摘要:pro: sol: 建出ac自动机。 一个合法的答案对应一条路径满足从一个scc走到另一个scc的路径。 发现这个题的方案数有可能是无限的。 会在以下两种情况无限: 因此,去掉无限情况后,环只有简单环,缩点以后随便dp一下即可。 阅读全文
posted @ 2019-01-27 17:38 Creed-qwq 阅读(364) 评论(0) 推荐(0) 编辑
摘要:首先考虑怎么check一个点是否能被最后一个删除。 可以这么建图,以这个点建有根树,边全部向上指,再加上剩下的有向边。 很明显,这里的一条边的定义就变成了只有删去这个点,才可以删去它指向的点。 因此,只需要建n次图暴力判断是否有环即可。 这样做是n^2的。 考虑加入一条边后,会产生什么影响。 发现这 阅读全文
posted @ 2019-01-27 13:34 Creed-qwq 阅读(305) 评论(0) 推荐(0) 编辑
摘要:day1 上午 ZR冬令营课程+当天一道题 下午 ZR冬令营课程+当天一道题 当天两道题 day2 上午 ZR冬令营课程 +当天一道题 下午 ZR冬令营课程 +当天一道题 当天两道题 day3 自己模拟一套冬令营题目(或者是当天ZR比赛题目) 下午订正 晚上订正一下最近CF的几个E题 day4 学习 阅读全文
posted @ 2019-01-26 14:35 Creed-qwq 阅读(131) 评论(0) 推荐(0) 编辑
摘要:考虑最大流=最小割 不妨把a到a的边称为a类边,b到b的称为b类边,a到b的称为c类边。 显然,答案一定是由最多1条a和最多一条b以及一些c组成的。 只有a是会变的,也就是说每个a对应了唯一的最优的b和c。 因此可以先求一下每个a对应的最优的b和c。 分析一下可得,a,b确定后,c应该是所有满足xb 阅读全文
posted @ 2019-01-26 13:58 Creed-qwq 阅读(227) 评论(0) 推荐(0) 编辑
摘要:首先可以题目描述的两个点集是两个凸包,分别设为A和B。 考虑一个向量w不合法的条件。 即存在b+w=a,其中a属于A,b属于B。 也就是a b=w。 即对b取反后和a的闵可夫斯基和。 求出闵可夫斯基和后check点是否在凸包内即可,在凸包内说明不合法。 阅读全文
posted @ 2019-01-25 00:55 Creed-qwq 阅读(300) 评论(0) 推荐(0) 编辑
摘要:闵可夫斯基和,是两个欧几里得空间的点集的和,以德国数学家闵可夫斯基命名。 点集A与B的闵可夫斯基和就是{o|o=a+b},其中a属于A,b属于B。 对于凸包这种特殊的图形,它的闵可夫斯基和有一些较好的性质。 比如:凸包之间的闵可夫斯基和一定是凸包。 求凸包之间的闵可夫斯基和的方法。 把两个凸包的每一 阅读全文
posted @ 2019-01-24 23:21 Creed-qwq 阅读(1818) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-01-24 23:14 Creed-qwq 阅读(1) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-01-24 19:31 Creed-qwq 阅读(9) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-01-24 11:53 Creed-qwq 阅读(4) 评论(0) 推荐(0) 编辑
摘要:Pro:https://www.luogu.com.cn/problem/CF1039D 给定一棵树,对于1<=k<=n求最多能在这棵树上选出多少条边不相交的路径。 Sol: 对于给定的k,显然有一个O(n)的贪心做法。 然后考虑设fi表示k=i时的答案,显然有fi<=n/i。 对于i< 阅读全文
posted @ 2019-01-20 15:39 Creed-qwq 阅读(176) 评论(0) 推荐(0) 编辑
摘要:首先,有一个很暴力的nk的做法,就是对每种颜色分别开棵lct来维护。 实际上,有复杂度与k无关的做法。 感觉和bzoj4025二分图那个题的区别就在于这个题是边dfs线段树边拆分区间。 阅读全文
posted @ 2019-01-20 13:15 Creed-qwq 阅读(370) 评论(0) 推荐(0) 编辑
摘要:这里的并查集是按秩合并并查集。 这种方法维护生成树的时候可以维护一个点到根的权值。 但是由于合并的时候做了一个类似换根一样的操作,因此这个权值通常只能是异或之类的。 //find-union-set int top,f[N],v[N],sz[N],sk[M]; int find(int x){ret 阅读全文
posted @ 2019-01-20 12:06 Creed-qwq 阅读(165) 评论(0) 推荐(0) 编辑
摘要:首先我们发现,本题具有可二分性。若花费x可以完成,x+1也一定可以完成。 那么判断是否可行,可以把二分得到的mid作为下限,仅连接边权大于等于mid的边,如果这样的图有环,那么向上二分,否则向下。 这样的正确性显然,因为如果图是一个DAG,那么剩下的边始终从拓扑序小的向大的连,这样就不会出现环。 输 阅读全文
posted @ 2019-01-20 00:09 Creed-qwq 阅读(168) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-01-19 23:31 Creed-qwq 阅读(19) 评论(0) 推荐(0) 编辑
摘要:枚举出每个数的权值的质因子。 对每个质因子建树求一遍直径,这样做的复杂度显然均摊后是n logn的,因为每个点最多只会被拆成logn个点。 口胡的,没代码qwq 阅读全文
posted @ 2019-01-19 23:28 Creed-qwq 阅读(128) 评论(0) 推荐(0) 编辑
摘要:这种题显然不会无缘无故地套上个期望,所以优先考虑期望的线性性。 也就是说,我们可以考虑最后每个质因子的期望值,累加得到答案。 发现我们计算这个东西的时候只关心某个质因子当前的次数,因此,所有的质因子的期望可以用一遍dp求出。 dp[i][j][k]表示经过k轮后,指数从i变成j的概率。 最后统计一下 阅读全文
posted @ 2019-01-19 23:08 Creed-qwq 阅读(103) 评论(0) 推荐(0) 编辑
摘要:也不是很懂原理,反正就是这么写的。 void insert(int x) { if(!top){s[++top]=x;return;} int LCA=lca(x,s[top]); while(top>1&&dep[s[top-1]]>=dep[LCA])add(s[top],s[top-1],di 阅读全文
posted @ 2019-01-19 22:53 Creed-qwq 阅读(167) 评论(0) 推荐(0) 编辑
摘要:考虑这个式子的意义。 不妨看做进行了两轮操作,这个式子显然等价于两次操作后得到的序列相同的方案数。 这个东西显然是可以dp的。 随便优化一下就成了O(n^3) 阅读全文
posted @ 2019-01-19 22:38 Creed-qwq 阅读(163) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-01-19 22:27 Creed-qwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要:转自hwk0518,不胜感谢,侵删。 阅读全文
posted @ 2019-01-19 22:22 Creed-qwq 阅读(101) 评论(0) 推荐(0) 编辑
摘要:Pro: 从(0,0)\(\)(n,m) 给定y=x+ly=x+r两条直线 要求不能穿过(可以接触)这两条直线 求方案数 n,m,l,r<=1e6 Sol: 参考了这篇blog https://www.cnblogs.com/xzyxzy/p/9812585.html 阅读全文
posted @ 2019-01-19 18:59 Creed-qwq 阅读(200) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-01-19 17:11 Creed-qwq 阅读(1) 评论(0) 推荐(0) 编辑
摘要:首先只有询问的话就是个WC的题,线性基+生成树搞一搞就行。 进一步,考虑如果修改操作只有加边怎么做。 好像也没有什么变化,只不过需要在线地往线性基里插入东西而已。 删边呢? 注意到线性基这个玩意是不支持删除操作的。 对于这种不好删除的的东西有种不错的解决方法,就是线段树分治。 把每个操作劈成logn 阅读全文
posted @ 2019-01-19 00:19 Creed-qwq 阅读(186) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-01-18 18:29 Creed-qwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要:算法正确性证明: 1.最优性:最小边一定包含在生成树中。 2.合法性:一定不会构成环。如果存在环说明一个点的最小连边有两个,显然矛盾。 算法时间复杂度证明: 每执行一次算法,所有联通块的大小都至少为2,因此总联通块个数一定至少/2,因此最多只会执行log次。 算法实现: 1.为了避免边权相同的情况, 阅读全文
posted @ 2019-01-18 00:14 Creed-qwq 阅读(1249) 评论(0) 推荐(1) 编辑
摘要:链接:http://uoj.ac/problem/176 对于这种边权难以直接维护的都直接考虑brouvka算法。 显然,我们要做的是实现一个可以查询&x最大的数据结构。 可以先对于所有权值建立一颗01 trie树。 考虑在trie树查询答案的过程,可以考虑一个从高位到低位的贪心。 当x的第i位为1 阅读全文
posted @ 2019-01-18 00:05 Creed-qwq 阅读(412) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-01-16 09:09 Creed-qwq 阅读(2) 评论(0) 推荐(0) 编辑
摘要:转移https://www.cnblogs.com/vb4896/p/6149022.html(侵删) 基本思想是:从左往右扫描每个向量,对于第i个向量的第j位,如果前面已经有第j位为1的向量,那么把第i个向量异或那个向量。 这样最后得到的向量组,不考虑0向量, 最高位的1的位置 是互不相同的。 显 阅读全文
posted @ 2019-01-15 22:59 Creed-qwq 阅读(193) 评论(0) 推荐(0) 编辑
摘要:基本思想 把dp写成矩阵的形式,用线段树维护,重链上每个点只保存除了重儿子以外的dp和。 转移的时候每次把重儿子的dp矩阵乘上父亲转移矩阵(这个转移矩阵中只有除了重儿子以外的信息)来得到父亲的dp矩阵。 注意:这里要满足转移前后重儿子和父亲的dp矩阵要满足是同一个格式的。 显然我们可以发现动态dp的 阅读全文
posted @ 2019-01-15 21:42 Creed-qwq 阅读(140) 评论(0) 推荐(0) 编辑
摘要:n m的矩阵可以看做n个m维的向量构成的一个线性空间。 基底 最小的这n个向量的子集满足用这些向量所构成的线性空间与原集合相等。 求基底的方法 a(1,1) x1 + a(2,1) x2 ................+a(n,1) xn=0 a(1,2) x1 + a(2,2) x2 ..... 阅读全文
posted @ 2019-01-15 20:35 Creed-qwq 阅读(750) 评论(0) 推荐(0) 编辑
摘要:第一类斯特林数大概是这样一个意思:首先从n排列中选出一个m圆排列,这个圆排列也可以理解为有一个位置元素固定的排列,其方案数显然为(m 1)!。 可以用来解决一下有特殊位置的计数问题。 例题 [FJOI2016]建筑师 首先找到最高的建筑作为分水岭后,剩下的位置可以如下划分成a 1+b 1个区间。 发 阅读全文
posted @ 2019-01-12 22:22 Creed-qwq 阅读(274) 评论(0) 推荐(0) 编辑
摘要:https://www.lydsy.com/JudgeOnline/problem.php?id=3413 显然答案等于模式串si和模板串的每一个后缀的匹配长度之和。 这里忽略了匹配成功的情况,那种情况只需要额外特判一些东西。 显然可以用线段树合并维护出right集合。 按照要求查询即可。 cpp 阅读全文
posted @ 2019-01-04 21:42 Creed-qwq 阅读(136) 评论(0) 推荐(0) 编辑
摘要:考虑设答案的生成函数为f。 考虑给定权值的生成函数设为g。 列一下方程: f^2 g+1=f 这里解释一下,f^2代表的是左右两个儿子,乘上一个g代表根节点。补上一项树为空集的1即可。 解一下这个一元二次方程。 然后用一些多项式的运算根据f求出g即可。 阅读全文
posted @ 2019-01-04 20:58 Creed-qwq 阅读(96) 评论(0) 推荐(0) 编辑
摘要:发现答案由所有完整的排列和某些两个相邻的排列构成。 考虑两个相邻排列的贡献。 如果它们的lcp为k的话,画图可发现,此时一共有k个位置可以形成排列。 考虑计算lcp为k的相邻排列有多少对。 发现这个式子是可以推出来的的,枚举lcp求解即可。 cpp include include include i 阅读全文
posted @ 2019-01-04 20:43 Creed-qwq 阅读(151) 评论(0) 推荐(0) 编辑
摘要:首先发现j是可以枚举到n的,因为j i时s(i,j)为0。 把第二类斯特林数按照容斥的定义转换一下。 由于第二类斯特林数是一个卷积的形式,可以枚举i后ntt求解,复杂度O(n^2logn) 变换一下枚举的顺序,把i移到最内层。 发现可以预处理一下sigema i^0+i^1+i^2+i^3..... 阅读全文
posted @ 2019-01-02 21:37 Creed-qwq 阅读(127) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示