摘要:
f[i]=∑f[j] (sum[j]<=sum[i]).sum为前缀和.裸的DP是O(N^2)的,其实我们要找的j只需满足sum[j]<=sum[i],然后求和.而树状数组天生就是干这个的.范围大,离散化一下就好了.code:/************************************************************** Problem: 2274 User: exponent Language: Pascal Result: Accepted Time:140 ms Memory:2568 kb *************************** 阅读全文
摘要:
CEOI2004Two的加强版.code:/************************************************************** Problem: 1096 User: exponent Language: Pascal Result: Accepted Time:6220 ms Memory:51008 kb ****************************************************************/ const oo=1e100; maxn=1000001; var f,x,p,c,sum,cost:array[ 阅读全文
摘要:
题意:N头牛叠罗汉,每头牛有个体重Wi,力气Si.一头牛要承担的风险为所有在它上面的牛的体重之和-它的力气.求一个方案使得风险最大的牛的风险值最小.分析:对于相邻的两头牛,它们交换位置不影响其他的任何牛,只改变这两头牛的风险值.记sum为这两头牛上面的牛的体重总和.i在j上面Riski=sum-siRiskj=sum+wi-sj交换位置Riski'=sum+wj-siRiskj'=sum-sj方案1优于方案2,则max{Riski,Riskj}<max{Riski',Riskj'}而Riskj>Riskj'所以Riski'>ma 阅读全文