摘要:
大意:ZZZ 喜欢睡觉,一堂课有N分钟,他至少要睡M分钟,他一旦听课就要连续地听L分钟。每分钟都有一个他可以拿到的分数。求他可以得到的最大分数。dp[i][j]在第i分钟,已经休息了j分钟的时候能得到的能得到的最大分数。sum[i]记录i以及以前的分数和。防止重复计算。状态转移方程dp[i][j]=max(dp[i-1][j-1],max(dp[i-k][j]+sum[i]-sum[i-k]))其中k>=l,k<=i-j 表示这分钟睡觉了 表示这分钟在学习如果我们在每次循环的时候都把max(dp[i-k][j]+sum[i]-sum[i-k])重新算一遍,这样会超时。res数组用来 阅读全文
posted @ 2011-08-04 21:50
ω 提拉米兔 ℃
阅读(365)
评论(0)
推荐(0)
摘要:
打比赛的时候想这个题想了好长时间啊啊啊啊……后来谁知道这道题居然是神题啊啊啊啊……官方题解:引理 1:若 cosA 为有理数,n 为整数,则 cos(nA)也为有理数。证:n=1,2 时,cos(nA)为有理。若 n=1..k 时均成立,即 n<=k 时,cos(nA)为有理数,此时有 cos(kA) =cos((k-1)A)*cos(A) - sin((k-1)A)*sin(A), sin((k-1)A)*sin(A)故有理。当 n=k+1 时:有 cos((k+1)A) = cos((k-1)A)*cos(2A) - sin((k-1)A)*sin(2A) =cos((k-1)A)* 阅读全文
posted @ 2011-08-03 20:27
ω 提拉米兔 ℃
阅读(321)
评论(0)
推荐(0)
摘要:
多校又被虐惨了…… 这个题下来写了一下 就是因为没有加memset和去掉freopen wa了几次……官方题解:直接暴力枚举 O(N^3*GCD)会超时。可以先计算出有一组互素或者两组互素的所有三元组个数 sum,最后把所有三元组的个数减去 sum。计算 a 可以做到 O(N^2*GCD)。可以这样来求一组互素或者两组互素的三元组:对于每个数 Ai,设与 Ai 互素的数在集合 Ni 中,与 Ai 不互素的数在集合 Mi 中,这样 Ai 和 Ni 中的一个数以及 Mi 中的一个数构成了“一组互素或者两组互素”这种情况,一共有|Ni|*|Mi|种情况。设实线表示互素,虚线表示不互素,那么一组互素( 阅读全文
posted @ 2011-08-03 19:28
ω 提拉米兔 ℃
阅读(285)
评论(0)
推荐(1)
摘要:
这段时间都在做DP啊啊……大意:有F朵花和V个花瓶,F<V,不同的花在不同的花瓶里面观赏价值不一样,每个花瓶只能插一束花,而且花要按顺序插。求最大观赏价值。这个题关键就是有负值,注意初始化,在代码里面说把。。状态转移方程:dp[i][j]表示把i朵花插到j个花瓶里面能获得的最大美学价值则dp[i][j]=max(dp[i][j-1],dp[i-1][j-1]+map[i][j])PS:我现在都没明白怎么看题目满足最优子结构性质……汗啊啊啊啊啊……Problem:1157User:a27400Memory:484KTime:32MSLanguage:G++Result:Accepted#i 阅读全文
posted @ 2011-08-03 11:57
ω 提拉米兔 ℃
阅读(431)
评论(0)
推荐(0)
摘要:
大意:给你一串只有1,2的数字,让你改变最少的次数,让这个序列变成非递减的。先开始看这个题目,完全不会做,去网上百度了一下,居然说这个题是求最长非递减子序列的长度,但是用nlogn算法求非严格递增的子序列长度我不会,只能另想办法。在网上搜到了一个神码,我现在都不知道为什么:#include<cstdio>int i,n,a,f[3]={0};int main(){ scanf("%d",&n); for(i=0;i<n;++i) { scanf("%d",&a),++f[a]; if(f[2]<f[1])f[2]= 阅读全文
posted @ 2011-08-01 16:25
ω 提拉米兔 ℃
阅读(390)
评论(0)
推荐(0)