BZOJ 1677 Usaco 求和

一个裸的完全背包问题,只不过需要取模。

 1 #include <cstdio>
 2 #include <algorithm>
 3 #include <cstring>
 4  
 5 typedef long long ll;
 6  
 7 ll n,dp[1000005],tot=9,Out[233];
 8 ll const MOD = 1e9;
 9
10 int main(){
11     scanf("%lld",&n);
12     dp[0]=1;
13     for(ll i=1;i<=n;i<<=1){
14         for(ll j=1;j<=n;j++){
15             if(j-i>=0) (dp[j]+=dp[j-i])%=MOD;
16         }
17     }
18     printf("%lld\n",dp[n]);
19     return 0;
20 }
21 
时间: 2024-10-14 19:49:40

BZOJ 1677 Usaco 求和的相关文章

[BZOJ 1652][USACO 06FEB]Treats for the Cows 题解(区间DP)

[BZOJ 1652][USACO 06FEB]Treats for the Cows Description FJ has purchased N (1 <= N <= 2000) yummy treats for the cows who get money for giving vast amounts of milk. FJ sells one treat per day and wants to maximize the money he receives over a given

BZOJ 1677: [Usaco2005 Jan]Sumsets 求和( dp )

完全背包.. --------------------------------------------------------------------------------------- #include<cstdio> #include<algorithm> #include<cstring> #include<iostream> #define rep( i , n ) for( int i = 0 ; i < n ; i++ ) #define

bzoj:1677: [Usaco2005 Jan]Sumsets 求和

Description Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers that are an integer power of 2. Here are the possible sets of numbers that sum to 7: 1) 1+1+1+1+1+1+1 2) 1+1+1+1+

bzoj 3298: [USACO 2011Open]cow checkers -- 数学

3298: [USACO 2011Open]cow checkers Time Limit: 10 Sec  Memory Limit: 128 MB Description 一天,Besssie准备和FJ挑战奶牛跳棋游戏.这个游戏上在一个M*N(1<=M<=1,000,000;1<=N<=1,000,000)的棋盘上, 这个棋盘上在(x,y)(0<=x棋盘的左下角是(0,0)坐标,棋盘的右上角是坐标(M-1,N-1). Bessie每次都是第一个移动棋子,然后Bessie与

BZOJ 1617 Usaco River Crossing

一开始还以为是贪心,结果WA了一发. 才想到这是一个DP题目,子问题就是运送第i头牛时的最小花费. 那么转移方程也好表示. sum[i]表示前缀和  sum[0]表示单独一个人过河的时间m dp[i]=min(dp[i],dp[j]+sum[i-j]+sum[0]) #include <cstdio> #include <algorithm> #include <cstring> using std::min; int n,tot; int a[5005],dp[500

BZOJ 1602 Usaco 牧场行走

LCA的模板题目,今天才发现自己其实对LCA这个算法一点都没领悟.之前一直是在套模板,所以今天的主要目标就是学习一下tarjan算法求LCA,顺便刷点LCA的相关习题来加强理解~ 1 #include <cstdio> 2 #include <algorithm> 3   4 int dis[1005],head[2333],fa[1100][21],deep[1005]; 5 int Count,n,q; 6   7   8 struct node{ 9     int v,ne

BZOJ 1672 Usaco 2005 Dec Cleaning Shifts 清理牛棚 动态规划

题目大意:有一些牛,他们的牛舍需要被打扫.有N(N <= 10000)头牛愿意打扫,从时间S到时间T,需要花费一些金钱.问若要每时每刻都有牛在打扫,至少需要花多少钱. 思路:1w的数据量不算很大,再加上时限5s,就n^2动归来做. 将牛按时间段的开始排序. 设f[i]为若取第i头牛打扫,到这头牛结束的时间最小花费是多少. 则    f[i] = min(f[i],f[j] + cost[i])  (f[i].st <= f[j].ed + 1) 最后是初值和答案的问题.由于题目中说每时每刻都有

BZOJ 1606 Usaco Hay for Sale

裸的背包=.= 没什么思维难度的题目. 1 #include <cstdio> 2   3 bool dp[100005]; 4 int n,V,x; 5   6 int main(){ 7     scanf("%d%d",&V,&n); 8     dp[0]=1; 9     for(int i=1;i<=n;i++){ 10         scanf("%d",&x); 11         for(int j=V

BZOJ 1601 Usaco 灌水

感觉像是一道MST的题目,但是难以处理这个自建水库的动作.一开始想着给自己连一条边,但是判断父亲时就有Bug了.之后想了给每个点都新建一个点,这样好处理了.但是与MST又有冲突了.最后想了想,把自建水库的费用当作X点连向N+1点,于是1-N都与N+1有一条边,我们只需要求一个N+1的最小生成树就可以求解了.Orz 奶牛题目虽然是水题,但是练练思维能力还是挺好的.(大佬别吐槽我这种蒟蒻) #include <cstdio> #include <algorithm> using nam