Codeforces 题面传送门 & 洛谷题面传送门 一道脑筋急转弯的结论题. 首先我们考虑对于某个特定的金币数 \(m\),有哪些 \(n\) 满足条件.考虑最 naive 的情况,\(m=0\):显然 \(n=1,2\) 满足条件,而对于 \(n=3\),由于总共只有 \(0\) 个金币,因此第 \(2,3\) 个人会且只会拿到 \(0\) 个金币,而即便第一个人被杀,问题转化为 \(n=2\) 的情形,另外两个人也会活下来,没有做到"严格更优",因此另外两人必然投反对,第…
B - Collective Mindsets (medium) Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u CodeForces 690A2 Description Way to go! Heidi now knows how many brains there must be for her to get one. But throwing herself in the midst…
Collective Mindsets (easy) Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u CodeForces 690A1 Description Tonight is brain dinner night and all zombies will gather together to scarf down some delicious brains. The artful H…
题意:给定一棵树中,让你计算它的直径,也就是两点间的最大距离. 析:就是一个树上DP,用两次BFS或都一次DFS就可以搞定.但两次的时间是一样的. 代码如下: #include<bits/stdc++.h> using namespace std; const int maxn = 1e5 + 5; vector<int> G[maxn]; int f[maxn], g[maxn], l[maxn]; int dfs(int root, int fa){ if(f[root] !=…
https://codeforces.com/contest/958/problem/B2 题解:https://www.cnblogs.com/Cool-Angel/p/8862649.html upd2018-11-01: 修了一个bug(第60行加入inq[1]=1) #include<cstdio> #include<algorithm> #include<cstring> #include<vector> #include<queue>…
https://codeforces.com/contest/958/problem/E2 首先求出N个时刻的N-1个间隔长度,问题就相当于在这些间隔中选K个数,相邻两个不能同时选,要求和最小 方法1: 一个K^2的做法,有一定技巧 https://www.cnblogs.com/void-f/p/8867585.html 方法2: 是可撤销贪心的模板? 就是贪心的选权值最小的,但是在选完某一个位置i后把它前一个没有被删的位置pre[i]和后一个没有被删的位置nxt[i]删掉,将i的权值变为(-…
题目链接: D2. The Wall (medium) time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Heidi the Cow is aghast: cracks in the northern Wall? Zombies gathering outside, forming groups, preparing their…
题目链接: C2. Brain Network (medium) time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output Further research on zombie thought processes yielded interesting results. As we know from the previous prob…
http://codeforces.com/contest/802/problem/K [题意] 给定一棵树,Heidi从根结点0出发沿着边走,每个结点最多经过k次,求这棵树的最大花费是多少(同一条边走n次花费只算一次) [思路] 对于结点v: 如果在v的某棵子树停下,那么可以“遍历”k棵子树(有的话) 如果还要沿着v返回v的父节点p,那么只能“遍历”k-1棵子树(有的话). 用dp[v][1]表示第一种情况,dp[v][0]表示第二种情况:最后要求的就是dp[0][0]. 1. 对于dp[v]…
http://codeforces.com/contest/802/problem/B [题意] 有一个图书馆,刚开始没有书,最多可容纳k本书:有n天,每天会有人借一本书,当天归还:如果图书馆有这个本就直接借到,否则图书馆的人会购买这本书,每本书的价格都是1:如果现在图书馆的书已达上限还需购买,必须舍弃已有的一本书,以后再有人借这本书要重新购买. 问图书馆的人最少要花多少钱购书? 数据范围变成了4000 00. [思路] 关键是替换原则,每次都替换下一次出现最晚的,因为它占用图书馆的时间最长.…