- 博客(7)
- 收藏
- 关注
原创 【bzoj2287】【POJ Challenge】消失之物
题目 O(n*m)的背包可以求出用所有物品达到i容量的方案数, 我们可以考虑从其中减掉每种物品的方案得到答案。 由原来的方程f[i]+=f[j](j=i-v[i]) 此时的f[j]未用i物品更新过。 我们从前向后减去每个f[i]对应的f[j],在枚举到i时对应的j已经不包含第i个物品, 直接减掉就可以了。 代码: #include #define maxn 201
2016-06-21 21:07:25 615
原创 【bzoj2216】 [Poi2011]Lightning Conductor
题目 将题目中所给的式子移项,得到p=aj-ai+sqrt(abs(i-j)), 只考虑j 这个式子具有决策单调性,于是可以分治dp,对于j>i的情况倒着做一遍dp。 代码: #include #include #include #include #define maxn 500010 using namespace std; inline int rea
2016-06-21 20:34:12 852
原创 【bzoj2091】[Poi2010]The Minima Game
题目 题目中说每个人都是最优决策,我们发现将所有元素从大到小排序之后, 每个人取得元素一定是从前往后连续的一段,我们就可以从前向后dp, 设f[i][j](j=0或1)代表A或B取完第i个元素后的最优答案, 我们发现很难转移,无法确定以后如何决策最优, 我们考虑从后先前做dp,就很好转移了,最后答案为f[1][0]。 代码: #include #include #
2016-06-21 20:26:19 585
原创 【bzoj1563】 [NOI2009]诗人小G
题目 n^2的转移方程很容易想到: f[i]=min(f[j]+(sum[i]-sum[j]+i-j-1)^p) 因为sum单调递增,p>=2,很显然具有决策单调性,用单调栈维护每个决策点覆盖的区间, 更新时在单调栈里二分找到当前最优的决策点并覆盖到n的区间。 复杂度nlogn 代码: #include #include #include #define maxn 1
2016-06-21 20:15:56 775
原创 【bzoj4591】[Shoi2015]超能粒子炮·改
题意:求Cn,0+……Cn,k mod2333 (n 题解:我们发现模数很小,假设mod|(k+1),根据Lucas定理我们将Cn,m按m%mod分类,发现会分成若干组Cn%i,j(j=m%i)*(Cn/i,0+Cn/i,2+……+Cn/i,(m+1)/i)的形式 设*号后面的和为S,答案为S*(Cn%i,0+Cn%i,1+……+Cn%i,mod-1),如果不满足mod|(k+1),对于余
2016-06-15 20:10:08 1361
原创 【bzoj4380】[POI2015]Myjnie
题目 将ci离散,显然pi一定是某个cj。 设g[i][j][k]代表i,j区间所有花费>=k的最优解。 枚举分割点x,然后g[i][j][k]=g[i][l-1][k]+g[l+1][j][k]+v[k]*h[x][k] h[x][k]代表经过x点的ci>=k的人数。 然后区间dp转移,记录方案,dfs输出。 代码: #include #include #include #
2016-05-23 12:17:12 1360
原创 【bzoj4378】[POI2015]Logistyka
题目 对于每次询问: 如果ai>=s,ai最大贡献为s。 如果ai 设数列中大于等于s的数有k个,小于s的数的和为sum。 需要总贡献为c*s,最后只需判断sum+k*s>=c*s即可。 代码: #include #include #include #define lowbit(x) (x&-x) #define maxn 1000010 using namespace
2016-05-23 11:57:54 690
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人