首页 > TAG信息列表 > setIO

codeforces 上的小题

CF1305C    题解:    我们发现虽然 $n$ 很大,但是模数很小,所以相当于 $n$ 个数对 $m$ 取模后不能有重复数字.    那么其实这个 $n$ 最大也就是 $m$ ,直接 $O(m^2)$ 暴力算就行了.  code:  #include <bits/stdc++.h> #define ll long long #define N 2004 #define set

BZOJ 2091: [Poi2010]The Minima Game 博弈dp

十分有趣的问题.   我们发现如果拿的话肯定要先拿一些大的.   所以我们可以先将所有数从小到大排序,令 $f[i]$ 表示拿完前 $i$ 小先手-后手的最大值.   则有转移:$f[i]=max(f[i-1],a[i]-f[i-1])$   反复阅读:每次拿一些数字的贡献是这些数字中最小的值.   反复阅读上一句话

bzoj 2563: 阿狸和桃子的游戏 贪心

这个真的好巧妙啊~  如果只考虑点权的话显然直接按照权值大小排序即可.  但是加入了边权,就有了一个决策的问题.  于是,我们将边权分一半,分给两个端点.    如果一个人拿了两个端点,则边权都会加上.  否则,边权会抵消.    直接按照点权+一半边权排序即可.     code:  #inc

CF796C Bank Hacking 细节

思路十分简单,答案只有 3 种可能,但是有一些细节需要额外注意一下.  code:  #include <bits/stdc++.h>#define N 300002 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int val[N],hd[N],to[N<<1],nex[N<<1],d1[N],d2[N],n,edges,maxx,mx,m

luogu 4411 [BJWC2010]取数游戏 约数+dp

不大难的dp,暴力拆一下约数然后按照约数来统计即可.  注意:vector 很慢,所以一定特判一下,如果没有该数,就不要添加.  Code:  #include <bits/stdc++.h>#define N 1000005 #define setIO(s) freopen(s".in","r",stdin) using namespace std; vector<int>v[N]; int prime[N],f[N

BZOJ 1923: [Sdoi2010]外星千足虫 高斯消元+bitset

高斯消元求解异或方程组.  #include <cstdio> #include <bitset> #define N 2004 #define setIO(s) freopen(s".in","r",stdin) , freopen(s".out","w",stdout) using namespace std; int n,m,ans; char str[N]; bitset<N&

BZOJ1968: [Ahoi2005]COMMON 约数研究 线性筛

Code: #include <cstdio> #include <algorithm> #define N 1000004 #define setIO(s) freopen(s".in","r",stdin) using namespace std; int tot; int f[N],prime[N],vis[N],sum[N];int main() { //setIO("input");