Sereja and the Arrangement of Numbers 题解: ummm. 在一副图中,如果全部点的度数是偶数/只有2个点是奇数,则能一笔画. 考虑图的点数k为奇数的时候,那么每个点的度数都是偶数点,所以就是可以一笔画,答案为 1 +k * (i - kll) / 2; k为偶数的时候,所有的点是奇数点,我们保留2个点是奇数点,将其他的点改为偶数点,就可以一笔画了.  1 +k * (i - kll) / 2 + k/2 - 1. 代码: #include<bits/stdc…
[题目链接]:http://codeforces.com/problemset/problem/367/C [题意] 我们称一个数列a[N]美丽; 当且仅当,数列中出现的每一对数字都有相邻的. 给你n的大小; 以及m个数字以及它们的使用花费; 问你最多能花费多少钱; 使得选择的这些数字能够构成一个长度为n的美丽数列; [题解] 显然选什么数字,只要是不一样的就可以了;和数字具体是什么无关; 要算出的就是最多能选几个数字N; 这里,数字的相邻关系能构成一张图; 完全图->每个点都与其他n-1个点有…
A. Sereja and Algorithm 水题不解释. B. Sereja ans Anagrams 模p同余的为一组,随便搞. C. Sereja and the Arrangement of Numbers 我还以为是找规律... 把每个数当成一个点.就有一个图.让后求欧拉路什么的. D. Sereja and Sets 这个思路感觉很巧妙(可能是我太弱了),我们对于每一段连续的d,找到不包含它们的所有集合,这些集合的子集一定不可行. 见代码. /* * Problem: D. Ser…
http://codeforces.com/contest/314/problem/E 题意: 原本有一个合法的括号序列 擦去了所有的右括号和部分左括号 问有多少种填括号的方式使他仍然是合法的括号序列 括号有25种,序列长度<=1e5 传统的做法: 令dp[i][j]表示当前到第i个字符,现在还有j个左括号 若第i+1个字符是左括号,则能转移到dp[i+1][j+1] 若第i+1个字符是问号,则能转移到dp[i+1][j-1]与dp[i+1][j+1] 时间复杂度为O(n^2)   换种思路 再…
Sereja is interested in intervals of numbers, so he has prepared a problem about intervals for you. An interval of numbers is a pair of integers [l, r] (1 ≤ l ≤ r ≤ m). Interval [l1, r1] belongs to interval [l2, r2] if the following condition is met:…
设状态f[i][j]表示有i个a,j个ab的期望 发现如果i+j>=k的话就再来一个b就行了. #include <iostream> #include <cstdio> #include <cstring> using namespace std; +; ][]; int ksm(int d,int z) { ; while(z) { ) res=(1ll*res*d)%mod; d=(1ll*d*d)%mod; z>>=; } return res…
[题目链接]:http://codeforces.com/problemset/problem/314/C [题意] 让你从n个元素的数组中选出所有的不同的非递减子数列; 然后计算比这个子数列小的和它的长度一样长的数列的个数; "小"的定义在题目里有说; [题解] 设dp[i]表示以i作为非递减子数列的最后一个数的比它小的数列的个数; 则有递推式 dp[i] = (dp[1]+dp[2]+-+dp[i])*i+i; 写个树状数组,来快速求和就好; 要写出原数组,维护原数组; 不然求dp…
题意:给出最后的时间n,div 1必须和div2一起举行,并且div2的时间总是比div1大1 给出Sereja(只能参加div2)参加过的k场比赛的时间,问他最少错过了多少场div2,最多错过了多少场div 2 先扫描一遍单个的没有用过的时间,再扫一遍连续的两个没有用过的时间 #include<iostream> #include<cstdio> #include<cstring> #include <cmath> #include<stack>…
http://codeforces.com/group/1EzrFFyOc0/contest/706/problem/D 题目:就是有3种操作 + x向集合里添加 x - x 删除x元素,(保证存在 ? x 查询 x |  集合中元素的最大值 思路:就是利用字典树,从高位到低位进行贪心. 比如说给一个数 x=3  , 对x 各位取反(二进制)(x=~x ), 于是就是 1-0-0-1: 拿 1-0-0-1,从左到右(从高位到地位)顺序,来在字典树中寻找.如果能找到(if ),就接着找下去: 如果…
题目链接:Vasiliy's Multiset 题意:这里有一个set容器,有三种操作,+ num, - num, ? num,分别代表往容器里加上num,或者拿走num,或着从容器里找一个数temp使得temp^num的值最大.输出这个最大值. 思路:对于XOR操作,一般都要拆位考虑,拆完之后用Trie或者线段树维护,然后,这个题把每个数的二进制30位(前面不够的用0补全)插入Trie,查询的时候,对于每一位先尝试往相反的方向走,因为异或 只要越高位 相反值越大,然后再尝试往相同的方向走.最后…