【一堆的背包水题】沉迷于刷水无可救药~

我在干嘛,连普及组都不会考这种题。以三四分钟一道题的速度混了一下BZOJ的题目数量。

BZOJ1606: [Usaco2008 Dec]Hay For Sale 购买干草

裸的01背包。

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int MAXN=5000+5;
 4 const int MAXC=50000+50;
 5  
 6 int main()
 7 {
 8     int c,h,v[MAXN],f[MAXC];
 9     scanf("%d%d",&c,&h);
10     memset(f,0,sizeof(f));
11     for (int i=1;i<=h;i++)
12     {
13         scanf("%d",&v[i]);
14         for (int j=c;j>=v[i];j--) f[j]=max(f[j],f[j-v[i]]+v[i]);
15     }
16     printf("%d",f[c]);
17     return 0;
18 } 

BZOJ1625: [Usaco2007 Dec]宝石手镯

裸的01背包again……注意一下里面的小注释……

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int MAXN=12880+5;
 4  
 5 int main()
 6 {
 7     int dp[MAXN],n,m;
 8     memset(dp,0,sizeof(dp));//如果需要恰巧装满,则dp[0]=0,dp[else]=-INF
 9     scanf("%d%d",&n,&m);
10     for (int i=1;i<=n;i++)
11     {
12         int w,d;
13         scanf("%d%d",&w,&d);
14         for (int j=m;j>=w;j--) dp[j]=max(dp[j],dp[j-w]+d);
15     }
16     printf("%d",dp[m]);
17     return 0;
18 } 

BZOJ1677: [Usaco2005 Jan]Sumsets 求和

裸的完全背包。以前写过一个递推版本的。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<cmath>
 5 #include<algorithm>
 6 using namespace std;
 7 const int MAXN=1000000+50;
 8 const int MOD=1e9;
 9  
10 int main()
11 {
12     int n;
13     scanf("%d",&n);
14     int k=1,dp[MAXN];
15     memset(dp,0,sizeof(dp));
16     dp[0]=1;
17     while (k<=n)
18     {
19         for (int v=k;v<=n;v++) dp[v]=(dp[v]+dp[v-k])%MOD;
20         k=k*2;
21     }
22     printf("%d",dp[n]%MOD);
23     return 0;
24 }

BZOJ1655: [Usaco2006 Jan] Dollar Dayz 奶牛商店

裸的完全背包,加了高精度。

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 const int MAXN=1000+50;
 7 int f[MAXN][MAXN];
 8  
 9 void add(int a,int b)
10 {
11     int lena=f[a][0],lenb=f[b][0];
12     int len=max(lena,lenb);
13     int i,rem=0;
14     for (i=1;i<=len || rem;i++)
15     {
16         rem=(f[a][i]+f[b][i])/10;
17         f[a][i]+=f[b][i];
18         f[a][i]%=10;
19         f[a][i+1]+=rem;
20     }
21     f[a][0]=i-1;
22 }
23  
24 int main()
25 {
26     int n,k;
27     scanf("%d%d",&n,&k);
28     memset(f,0,sizeof(f));
29     f[0][0]=f[0][1]=1;
30     for (int i=1;i<=k;i++)
31         for (int j=i;j<=n;j++) add(j,j-i);
32     for (int i=f[n][0];i>=1;i--) printf("%d",f[n][i]);printf("\n");
33     return 0;
34 }
35 
时间: 2024-07-31 00:27:47

【一堆的背包水题】沉迷于刷水无可救药~的相关文章

崆若的水题之--全世界最水的邻接表二连发哈哈哈哈

有n个城市,编号为1到n,这些城市当中有m条有向边,现在Kong_Ruo在1号城市,他准备去旅游.如果Kong_Ruo能从城市1到达城市i,并能从城市i回到城市1,那么Kong_Ruo就能去城市i游览.现在请你从小到大输出所有能去游览的城市编号. 输入 第一行:两个整数n,m,分别表示城市个数与有向边个数.后m行:每行两个整数a和b,表示a城市到b城市有一条有向边. 输出 输出所有符合要求的城市编号,每个一行,从小到大输出. 输入示例 5 43 12 34 31 2 输出示例 123 #incl

水题纪念

在某OJ水了很多题,要是bzoj我能谁那么多就好了T_T 纪念水题100+. (这个折线图有点吓人啊,,我自己都会被吓到T_T,注册第一天我就在刷百分百水题,一下就是40+百分百水题..然后还有30+是提交以前的T_T,我好水啊.. 我就是某大神所说的:T_T 做一道难题,总比切一百道水题来的方便. 做一百道难题,总比切一道水题来的有趣. 水题纪念

01背包水题篇之 HDU2955——Robberies

原来是想dp[i],表示不被抓概率为i所能抢到的最大钱(概率1-100) 后来看了别人的博客是dp[i]表示抢了i钱最大的不被抓概率,嗯~,弱菜水题都刷不动. 那么状态转移方程就是 dp[i]=max(dp[i],dp[i-money]*p),初始化dp(0~maxn)为0,dp[0]=1(1毛钱都没抢你抓个毛线啊,哥是良民~) 又是贴代码环节~ <span style="font-size:18px;">#include<iostream> #include&

刷了500道水题是什么体验?

并没有什么卵用. 我马上大二了,大一两学期目测切了1000道水题了,毫无意义. 至今不理解kmp和后缀数组,只会模板.数论和博弈论是什么?能吃吗?只会打表.图论至今不会tarjan,话说dlx是什么?插头dp,这是什么?数据结构还好,经常做高中生的题,可持久化可持久化线段树也能花一下午时间写出来,然而并不会考. 平时做题只刷水题,遇到难题的时候,随手搜题解,看了看,哇,这居然能这么搞!然后抄一遍别人代码,交上去ac. cf一年几乎没缺过,花了大一上半年时间才滚上div1.然而至今紫号一堆,黄名一

TYVJ 采药 0-1背包(水题)

背景 Background NOIP2005复赛普及组第三题 描述 Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大.” 如果你是辰辰,你能完成这个任务

致我们曾经刷过的水题

ummmm...8年级的同学来gryz参加夏令营了.感觉自己老得好快...在此整理一下本人刷过的那些道水题...希望以后能有什么用吧(怎么可能233333). 统计: Openjudge: 累计153题. CodeVS: 累计64题. 洛谷: 累计111题. COGS: 累计5题. 去重前累计333题. ......待续......

TYVJ 公路乘车 完全背包(水题)

描述 Description 一个特别的单行街道在每公里处有一个汽车站.顾客根据他们乘坐汽车的公里使来付费.例如样例的第一行就是一个费用的单子. 没有一辆车子行驶超过10公里,一个顾客打算行驶n公里(1<=n<=100),它可以通过无限次的换车来完成旅程.最后要求费用最少. 输入格式 InputFormat 第一行十个整数分别表示行走1到10公里的费用(<=500).注意这些数并无实际的经济意义,即行驶10公里费用可能比行驶一公里少.第二行一个整数n表示,旅客的总路程数. 输出格式 Ou

01背包水题篇之HDU3466——Proud Merchants

这是个好题,菜鸟刚学dp,这题把我以前的想法全都给完完全全的颠覆了.其实是自己没了解无后效性的概念. 然后我去开开心心滴跑去问队长:"队长,队长,怎么理解动归的无后效性啊???" 学长很深沉滴对我说:"做多了就会了" "噢噢"(好吧) 然后学长又补了句:"能构成有向无环图的都能用DP搞." 我心里想:"队长就知道搞妹~~~." 默默去翻小白书看看DAG去了. 为了搞清楚这题怎么写,操了度娘千百遍,还是没搞定

刷水题 堆

题目背景 众所周知,熊本熊的洛谷大号是kakakaka.有的时候熊本熊会在洛谷上面刷水题,但是熊本熊并不知道该怎么计划好自己的时间,他想让你来帮他计划一下. 题目大意 熊本熊今天一时兴起想刷n道水题,熊本熊有m个大脑,每个大脑都只能独立工作,也就是说,熊本熊可以在同一时间做m道题.由于熊本熊刷的水题都是topcoder,codeforces,usaco,CCF上最新出的水题,所以在熊本熊刷一道水题时,下一道水题可能还没有出来.又因为熊本熊又不会什么奇技淫巧,所以他完成每一道题都有一个特定的时间.