USACO 奶牛抗议 Generic Cow Protests】的更多相关文章

USACO 奶牛抗议 Generic Cow Protests Description 约翰家的N头奶牛聚集在一起,排成一列,正在进行一项抗议活动.第i头奶牛的理智度 为Ai,Ai可能是负数.约翰希望奶牛在抗议时保持理性,为此,他打算将所有的奶牛隔离成 若干个小组,每个小组内的奶牛的理智度总和都要大于零.由于奶牛是按直线排列的,所以 一个小组内的奶牛位置必须是连续的. 请帮助约翰计算一下,存在多少种不同的分组的方案.由于答案可能很大,只要输出答 案除以1,000,000,009的余数即可. In…
[题解] 我们可以轻松想到朴素的状态转移方程,但直接这样做是n^2的.所以我们考虑采用树状数组优化.写法跟求逆序对很相似,即对前缀和离散化之后开一个权值树状数组,每次f[i]+=query(sum[i]),再把f[i]加入到sum[i]位置上.这样可以保证每次f[i]加上的是在它前面的.sum小于它的位置的f值. #include<cstdio> #include<algorithm> #define N 200010 #define rg register #define Mod…
2274: [Usaco2011 Feb]Generic Cow Protests Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 196  Solved: 122[Submit][Status] Description Farmer John's N (1 <= N <= 100,000) cows are lined up in a row and numbered 1..N. The cows are conducting another…
题目描述 Farmer John's N (1 <= N <= 100,000) cows are lined up in a row and numbered 1..N. The cows are conducting another one of their strange protests, so each cow i is holding up a sign with an integer A_i (-10,000 <= A_i <= 10,000). FJ knows t…
题目描述 Farmer John's N (1 <= N <= 100,000) cows are lined up in a row and numbered 1..N. The cows are conducting another one of their strange protests, so each cow i is holding up a sign with an integer A_i (-10,000 <= A_i <= 10,000). FJ knows t…
Description 约翰家的N头奶牛聚集在一起,排成一列,正在进行一项抗议活动.第i头奶牛的理智度 为Ai,Ai可能是负数.约翰希望奶牛在抗议时保持理性,为此,他打算将所有的奶牛隔离成 若干个小组,每个小组内的奶牛的理智度总和都要大于零.由于奶牛是按直线排列的,所以 一个小组内的奶牛位置必须是连续的. 请帮助约翰计算一下,存在多少种不同的分组的方案.由于答案可能很大,只要输出答 案除以1,000,000,009的余数即可. Solution 容易想到设\(F[i]\)表示 到第头\(i\)奶…
Description Farmer John's N (1 <= N <= 100,000) cows are lined up in a row and numbered 1..N. The cows are conducting another one of their strange protests, so each cow i is holding up a sign with an integer A_i (-10,000 <= A_i <= 10,000). FJ…
题目描述 Farmer John's N (1 <= N <= 100,000) cows are lined up in a row andnumbered 1..N. The cows are conducting another one of their strangeprotests, so each cow i is holding up a sign with an integer A_i(-10,000 <= A_i <= 10,000). FJ knows the…
思路: 动态规划.首先处理出这些数的前缀和$a$,$f_i$记录从第$1$位到第$i$位的最大分组数量.DP方程为:$f_i=max(f_i,f_j+1)$,其中$j$满足$a_i-a_j≥0$. #include<cstdio> #include<cstring> #include<algorithm> int main() { int n; scanf("%d",&n); ]; a[]=; ]; memset(f,,sizeof f);…
[题解] 很容易可以写出朴素DP方程f[i]=sigma f[j] (sum[i]>=sum[j],1<=j<=i).  于是我们用权值树状数组优化即可. #include<cstdio> #include<algorithm> #define N 200010 #define rg register #define LL long long #define Mod (1e9+9) using namespace std; int n,n2; LL t[N],f[…