Codeforces Round #475 Div. 2 A B C D】的更多相关文章

题 OvO http://codeforces.com/contest/963/problem/B CF 963B 964D 解 对于题目要求,显然一开始的树,要求度数为偶数的节点个数为奇数个,通过奇偶讨论显然这个树总节点个数为奇数个. 然后对于每一步分割出来的树林,显然树林中每个树都得满足度数为偶数的节点个数为奇数个,同样地,可以得到树林中每个树的总结点为奇数个 其实上面写的一些是废话,后文并不会用到…… 首先排除度数为偶数的节点有偶数个的树,即已知要讨论的树均满足度数为偶数的节点有奇数个 从…
B:当n是偶数时无解,因为此时树中有奇数条边,而我们每次都只能删除偶数条.当n是奇数时一定有解,因为此时不可能所有点度数都为奇数,只要找到一个度数为偶数的点,满足将它删掉后,各连通块大小都为奇数就可以了.考虑如何证明这样的点一定存在.钦定一个根后,考虑找到一个度数为偶数的点,满足子树内点度数均为奇数.这样该点的所有儿子的子树都有奇数个点, 因为删掉该点后每个子树内只有一个点度数为偶数.又因为删掉这个点后该树剩下偶数个点和偶数个连通块,所以该点父亲所在连通块也有奇数个点. 于是只需要先自底向上删掉…
题意:有一个串s,n个串模式串t,问s的子串中长度最小的包含t k次的长度是多少 题解:把所有t建ac自动机,把s在ac自动机上匹配.保存每个模式串在s中出现的位置.这里由于t两两不同最多只有xsqrt(x),x是总长度.然后双指针扫一遍即可 这里有一个很重要的优化技巧,由于ac自动机上不是每个点都是t的结尾,我们把fail向上跳一次变成直接跳到t的结尾,build预处理一下 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragm…
等比数列求和一定要分类讨论!!!!!!!!!!!! #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define pii pair<int,int> #define ull unsigned long long using namespace std; ; +; const int inf=0x3f3f3f3f; const L…
题意:给你一棵树, 只能删度数为偶数的点, 问你能不能将整个图删完, 如果能输入删除的顺序. 思路:对于一棵树来说, 如果里面的点的个数是偶数个则肯定不可能, 偶数个点有奇数条边,而你每次删只能删偶数条边. 那么我们对于每个父亲儿子来说, 如果儿子的子树的大小为奇数, 那么肯定先删父亲, 反之先删儿子, 建立关系图, 跑一遍拓扑序就好啦. #include<bits/stdc++.h> #define LL long long #define fi first #define se secon…
B. Messages 题意:有n个消息分别在ti的时候收到.设所有消息收到时初始值为A,每过一秒,其值减去B.当在某一秒选择读某个消息时,获值为当前消息的值:如果在某一秒结束的时候,手上有k则消息未读,则获值C*k.并且在T秒结束的时候,必须读完所有消息.问能获得的最大值为? 思路:消息要么选择不读,则价值-B,但同时会获得C.因此如果C-B大于0,那么应该选择所有消息都在最后一秒读:否则应当收到的时候立即读. #include<cstdio> using namespace std; ];…
A - Splits 题意 将一个正整数拆分成若干个正整数的和,从大到小排下来,与第一个数字相同的数字的个数为这个拆分的权重. 问\(n\)的所有拆分的不同权重可能个数. 思路 全拆成1,然后每次将2个1换成1个2,即每次2的个数增加1. 共有1+n/2种. Code #include <bits/stdc++.h> #define F(i, a, b) for (int i = (a); i < (b); ++i) #define F2(i, a, b) for (int i = (a…
A. Splits time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Let's define a split of n as a nonincreasing sequence of positive integers, the sum of which is n. For example, the following seque…
A. Alternating Sum 就是个等比数列,特判公比为 $1$ 的情况即可. #include <bits/stdc++.h> using namespace std; ; ; ) { ; while (b) { ) ans = 1LL * ans * a % MOD; a = 1LL * a * a % MOD; b >>= ; } return ans; } int M(int a) { ) a += MOD; if (a >= MOD) a -= MOD; r…
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate it n = int(raw_input()) s = "" a = ["I hate that ","I love that ", "I hate it","I love it"] for i in ran…