11 2018 档案
摘要:2017 Russian Code Cup (RCC 17), Final Round A Set Theory 思路:原题转换一下就是找一个b数组,使得b数组任意两个数的差值都和a数组任意两个数的差值相等 根据题目数据范围, 肯定可以构造一个1, 1+d, 1+2d, 1+3d, ... , 1+
阅读全文
摘要:Yandex.Algorithm 2018, final round A Smart Vending B LIS vs. LDS C Eat And Walk D Search Engine E Guess Me If You Can 思路:如果n这个位置加1的话,不同的数的个数要么不变,要么加1,
阅读全文
摘要:G - Petya and Graph 思路: 最大权闭合子图 对于每条边,如果它选了,那么它连的的两个点也要选 边权为正,点权为负,那么就是求最大权闭合子图 代码:
阅读全文
摘要:概念: 桥:无向图中删去一条边使得图不再联通,则这条边称为桥 割点:无向图中删去一个点使得图不再联通,则这个点称为割点 算法: 运用到tarjan算法 关于tarjan算法: https://www.bilibili.com/video/av7330663/ 求桥: 对于一条边 u -> v, 如果
阅读全文
摘要:2017-2018 ACM-ICPC, Asia Tsukuba Regional Contest A Secret of Chocolate Poles 思路:暴力枚举黑巧克力的个数和厚黑巧克力的个数 代码: #pragma GCC optimize(2) #pragma GCC optimize
阅读全文
摘要:2018-2019 ACM-ICPC Pacific Northwest Regional Contest (Div. 1) 思路: A Exam 思路:水题 代码: #include<bits/stdc++.h> using namespace std; int main(){ int k; sc
阅读全文
摘要:E - The Unbearable Lightness of Weights 思路: 分组背包dp 每组最多只能选一个 一些优化可以快很多 代码:
阅读全文
摘要:践踏 思路: 如果k不为0, 那么就是对k取模意义下的区间更新, 单点查询 否则, 就是普通的区间更新, 单点查询 代码:
阅读全文
摘要:大法师与魔法石 思路: 对于一个ai, 它可以构成区间[ai/v, ai] 假设和它相邻的为aj, 那么ai 和 aj 构成的区间为[(ai+aj) / v, ai+aj] 那么这两个区间能合并的条件是 (ai + aj) / v <= ai 即aj <= (v - 1)ai (v >= 2) 又因
阅读全文
摘要:UVA - 10245 思路: 平面分治 inplace_merge()可以用来归并排序 代码:
阅读全文
摘要:2018 AICCSA Programming Contest A Tree Game B Rectangles 思路:如果存在大于0的交面积的话, 那么肯定能找到一条水平的直线 和 一条垂直的直线, 使得水平直线的左右两边点的个数相等且为n, 垂直直线的左右两边点的个数相等且为n 也就是说不能有点
阅读全文
摘要:Semana i 2018 A Giga-Kilo-Gigabyte 思路: dp水题 代码: #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize(4) #include<bits/stdc++.h> using
阅读全文
摘要:猜价格 分两种情况讨论: k≤n,先猜至多 k 次 1,由于回答 <1 肯定是假的,所以可以把剩余系下是哪次错试出来,然后用至多 n 次搞定。 k>n,每个数都猜两次,如果两次结果不一样,再猜第三次确定哪个是真的,之后就可以当它一直说真话了(n 次内不会再说假话) 代码:
阅读全文
摘要:F2 - Pictures with Kittens (hard version) 思路: 单调队列优化dp 代码:
阅读全文
摘要:E - Company 思路: 首先,求出每个点的dfs序 然后求一些点的公共lca, 就是求lca(u, v), 其中u是dfs序最大的点, v是dfs序最小的大点 证明: 假设o是这些点的公共lca, in[o]是o的入时间戳, out[o]是o的出时间戳, 那么对于任意一点x, in[o] <
阅读全文
摘要:C - Triple Flips 思路: 小范围暴力 大范围递归构造 构造方法: solve(l, r) 表示使l 到 r 区间全变为0的方法 为了使反转次数小于等于n/3 + 12 我们只需要保证每次反转后区间长度减少值的期望为3就可以了 如果a[l] == 0, l++ 如果a[r] == 0,
阅读全文
摘要:E - Vasya and a Tree 思路: dfs动态维护关于深度树状数组 返回时将当前节点的所有操作删除就能保证每次访问这个节点时只进行过根节点到当前节点这条路径上的操作 代码:
阅读全文
摘要:E - Segment Sum 思路: 数位dp 我们平时做的数位dp都是求满足条件的数的个数, 这里要求满足条件的数的和 只要在原来的基础上求每一位的贡献就可以了,所以传参数时要传两个 代码:
阅读全文
摘要:F - Make It One 思路: dp + 容斥 首先, 答案不会超过7, 因为前7个质数的乘积大于3e5(最坏的情况是7个数, 每个数都缺少一个不同的因子) 所以从1到7依次考虑 dp[i][j]: 表示选取i个数且gcd==j的方案数 dp[i][j] = C(cntj, i) - ∑dp
阅读全文
摘要:Number of Amidakuji 思路:dp dp[i][j]表示经过(i, j) 这个点的方案数 然后一层一层地转移, 对于某一层, 用二进制枚举这一层的连接情况, 判断连接是否符合题意, 然后再进行转移 代码:
阅读全文
摘要:UVA - 11090 思路: 二分答案 + spfa判负环
阅读全文
摘要:优点:产生速度快, 周期大 用法: #include<bits/stdc++.h> using namespace std; int main() { mt19937 mt_rand(time(0)); cout << mt_rand() << endl; cout << mt19937(time(
阅读全文

浙公网安备 33010602011771号