上一页 1 2 3 4 5 6 ··· 30 下一页
摘要: P1525 关押罪犯 题解: 一拿到题目想到的是二分 + 奇奇怪怪的操作。 后来学到了并查集裸写就好了。 先将边权按大到小排序一边。 然后访问到一个边的时候。 先看一下这2个边有没有联通, 如果有联通就是说明在同一个块内, 输出这条边的权值作为答案。 否则 互相连到对方的敌人哪里。 代码: #inc 阅读全文
posted @ 2019-07-07 19:50 Schenker 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 1. 修改set里面的非键值。 用mutable来修饰这个非键值。 举例代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w 阅读全文
posted @ 2019-07-07 09:35 Schenker 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 1. 旋转treap。 思想:一颗权值BST + 一颗 随机数 最小堆。 BZOJ - 3224 代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.txt","r",stdin); freopen( 阅读全文
posted @ 2019-07-06 13:17 Schenker 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 1.求最小值的情况。 将关系都化成 a[ i ] - a[ j ] >= k 然后 j 向 i 建立一个价值k的有向边。 然后跑一个最长路。 例如:POJ-1201 #include<iostream> #include<cstring> #include<queue> #include<vecto 阅读全文
posted @ 2019-07-04 15:31 Schenker 阅读(154) 评论(0) 推荐(0) 编辑
摘要: Give out candies 题解: 第一次遇见这样处理的网络流模型。 将问题转换成最小割问题。 具体的题解参考自:传送门 先将每个人的拆成m个人。 然后s向第1人连边流量为inf。第i个人向第i+1个人连边,流量为 3000 - w。 将t视为每组的第m+1个人。 接来下是约束关系的建边, x 阅读全文
posted @ 2019-07-04 10:11 Schenker 阅读(158) 评论(0) 推荐(0) 编辑
摘要: Chicken or Fish? 题意比较难理解。 需要注意的是 就算某个人抱怨了 但是的t[i]也是他最后选择的结果。 题解: 首先考虑没有r[i] = 1的情况。 直接记录t[i]=0的数目,最后输出的时候比较a[i]和跳过的人的大小。 其次如果存在r[i]=1的情况, 则说明在前面就有一个菜品 阅读全文
posted @ 2019-07-03 16:07 Schenker 阅读(154) 评论(0) 推荐(0) 编辑
摘要: Sagheer and Apple Tree 题解: 先分析一下, 如果只看叶子层的话。 那么就相当于 经典的石子问题 nim 博弈了。 那我们看非叶子层。 看叶子层的父亲层。 我们可以发现, 如果从这一层移动x个苹果到叶子,那么另一个人就可以吃掉这x个苹果。 不影响任何的前后手。 然后我们再分析, 阅读全文
posted @ 2019-07-03 14:01 Schenker 阅读(177) 评论(0) 推荐(0) 编辑
摘要: Salazar Slytherin's Locket 题解: 数位DP。 对于不同的进制直接数位DP就好了。 在数位dp中比较基础。 通过状压来xor值,使得表示每个数字出现奇数次/偶数次. 注意的就是 去除 00 0000 这些数的影响。 代码: #include<bits/stdc++.h> u 阅读全文
posted @ 2019-07-03 09:36 Schenker 阅读(212) 评论(0) 推荐(0) 编辑
摘要: World Eater Brothers 题解: 树DP, 枚举每2个点作为国家。 然后计算出最小的答案。 首先我们枚举根, 枚举根了之后, 我们算出每个点的子树内部和谐之后的值是多少。 这样val[root]就是这个root为根的花费。 然后我们再fdfs一遍这棵树。 假如我们枚举u这个点是另一个 阅读全文
posted @ 2019-07-02 10:04 Schenker 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 题解: 先按时间轴将一个点拆成100个点。 第一个点相当于第一秒, 第二个点相当于第二秒。 在这些点之间连边, 每1流量的费用为c。 再将图上的边也拆开。 将 u_i 向 v_i+1 建边。 将 v_i 向 u_i+1 建边。 在上面的建边过程中: 假设最多一条路只会走20个人。 将这个东西拆成20 阅读全文
posted @ 2019-07-01 14:10 Schenker 阅读(450) 评论(0) 推荐(1) 编辑
上一页 1 2 3 4 5 6 ··· 30 下一页