7-2 拼题A打卡奖励 (25 分)(背包)

题意:

求,从 n 个物品中选(每个物品有体积 vi, 价值 wi ),总体积不超过 m 的最大价值?
n≤1e3,m≤7e5,vi≤600,wi≤30n ≤1e3, m ≤7e5, vi ≤600, wi ≤30n≤1e3,m≤7e5,vi≤600,wi≤30。

思路:

如果按照经典套路:求总体积不超过m的最大价值:
先枚举所有物品,再枚举所有体积,这样时间复杂度为O(n*m),超时。

所以,需要转换一下:因为最大总价值不超过 wi∗n=3e4wi*n=3e4wi∗n=3e4,所以:
求总价值恰好为 m 时的,最小体积。
先枚举所有物品,再枚举所有价值,这样的复杂度为 n∗wi∗n=3e7n*wi*n=3e7n∗wi∗n=3e7,可以。
最后遍历所有价值,看价值最大能够到达多少,使得最小体积不超过 m。

状态表示:f[j]f[j]f[j],总价值恰好为 j 的最小体积。

初始化:因为求最小值,所以一开始初始化为正无穷。
但是要注意,f[0] 要赋值为 0:总价值为0,最小体积为0。

状态转移
前面枚举价值 j,从大到小循环,最小到 w[i]
f[j] = min(f[j], f[j-w[i]]+v[i])

Code:

const int N = 200010;
int T, n, m, a[N];
int v[N],w[N],f[N];int main(){cin>>n>>m;int sum=0;for(int i=1;i<=n;i++) cin>>v[i];for(int i=1;i<=n;i++) cin>>w[i],sum+=w[i];mem(f,0x3f);f[0]=0;for(int i=1;i<=n;i++){for(int j=sum;j>=w[i];j--){f[j]=min(f[j],f[j-w[i]]+v[i]);}}while(f[sum]>m) sum--;cout<<sum;return 0;
}

这是求,总体积恰好为 j 时,总价值的最小值;


还可以求,总体积至少为 j 时,总价值的最小值:
和上面问题相同之处:状态表示
f[j]f[j]f[j],总体积至少为 j 时,总价值的最小值。

但是不同之处:状态转移

  • 当 j ≥ v[i] 时,说明总体积至少为 j,且大于当前物品体积,当前物品可选可不选。
    当前物品不选,状态更新:从前 i-1 个位置选,总体积至少为 j。
    当前物品选,状态更新:从前 i-1 个位置选,总体积至少为 j-v[i],再加上当前物品的价值w[i]。
  • 当 j < v[i] 时,说明总体积至少为 j,且小于当前物品体积。
    和原来的完全背包不同的是,这里的j是最小的总体积,可以小于当前体积,也就是说当前的物品也是可以拿的!
    当前物品不选,状态更新:从前 i-1 个位置选,总体积至少为 j。
    当前物品选,状态更新为当前物品的价值!
    这种状态下就不能从前 i-1 种物品中选,使得总体积至少为 j-v[i]。因为当前 j-v[i] 是小于0的。所以这个状态就直接更新成当前物品的价值。

Code:

 mem(f,0x3f,sizeof f);f[0]=0;for(int i=1;i<=n;i++){for(int j=m;j>=0;j--){if(j>=v[i]) f[j]=min(f[j],f[j-v[i]]+w[i]);else f[j]=min(f[j],w[i]);}}

例题:
P2918 [USACO08NOV]Buying Hay S
精卫填海


1355D. Game With Array(思维)

题意:

给出n,m。
要构造一个长度为n,总和为m的数列。
同时还要给出一个数k,满足没有连续的位置之和为 k 或者 m-k。
问,能否构造成功?

思路:

如果m ≥ 2*n的话,能够构造成功。
前n-1个位置设为2,最后一个位置补差。令k=1。
这样,k不能找到,m-k 也不能找到。

Code:

const int N = 200010, mod = 1e9+7;
int T, n, m, a[N];int main(){cin>>n>>m;if(m>=n*2){cout<<"YES\n";for(int i=1;i<n;i++) cout<<2<<" ";cout<<m-(n-1)*2<<endl;cout<<1;}else{cout<<"NO\n";}return 0;
}

1362C. Johnny and Another Rating Drop(规律,进制)

题意:

定义两个数的贡献为其二进制中,对应位不同的位置个数。
给一个数n,判断1~n中,所有相邻数的贡献之和位多少?

思路:

0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011发现规律:
第0位,贡献数为n;
第1位,贡献数为n/2;
第2位,贡献数为n/2/2;
第3位,贡献数为n/2/2/2...

Code:

const int N = 200010;
ll T, n, m, a[N];int main(){cin>>T;while(T--){cin>>n;ll ans=0;while(n){ans+=n;n/=2;}cout<<ans<<endl;}return 0;
}

挺难想到的。
对于这样的二进制找规律的题,应该想到从每一位下手,而不是看整个数。


拼题A打卡奖励 (25 分),1355D,1362C;相关推荐

  1. L3-2 拼题A打卡奖励 (30 分)

    Powered by:NEFU AB-IN Link 文章目录 L3-2 拼题A打卡奖励 (30 分) 题意 思路 代码 L3-2 拼题A打卡奖励 (30 分) 题意 拼题 A 的教超搞打卡活动,指定 ...

  2. 天梯22模拟 L3-2 拼题A打卡奖励 (30 分)

    L3-2 拼题A打卡奖励 (30 分) 拼题 A 的教超搞打卡活动,指定了 N 张打卡卷,第 i 张打卡卷需要 m i 分钟做完,完成后可获得 c i 枚奖励的金币.活动规定每张打卡卷最多只能做一次, ...

  3. 7-2 拼题A打卡奖励 dp

    7-2 拼题A打卡奖励 分数 25 作者 陈越 单位 浙江大学 拼题 A 的教超搞打卡活动,指定了 N 张打卡卷,第 i 张打卡卷需要 m i ​ 分钟做完,完成后可获得 c i ​ 枚奖励的金币.活 ...

  4. PTA模拟赛 拼题A打卡奖励

    拼题 A 的教超搞打卡活动,指定了 N 张打卡卷,第 i 张打卡卷需要 mi​ 分钟做完,完成后可获得 ci​ 枚奖励的金币.活动规定每张打卡卷最多只能做一次,并且不允许提前交卷.活动总时长为 M 分 ...

  5. [dp]拼题A打卡奖励 2021RoboCom复赛B

    拼题 A 的教超搞打卡活动,指定了 N 张打卡卷,第 i 张打卡卷需要 mi​ 分钟做完,完成后可获得 ci​ 枚奖励的金币.活动规定每张打卡卷最多只能做一次,并且不允许提前交卷.活动总时长为 M 分 ...

  6. 2021 RoboCom 复赛 7-2 拼题A打卡奖励(背包)

    样例输入: 5 110 70 10 20 50 60 28 1 6 18 22 样例输出: 40 分析:一开始看这道题我以为就是一个普通的背包问题,然后我就按照普通的背包问题写了代码,交上后发现有几个 ...

  7. PTA-拼题A打卡奖励

    拼题 A 的教超搞打卡活动,指定了 N 张打卡卷,第 i 张打卡卷需要 mi​ 分钟做完,完成后可获得 ci​ 枚奖励的金币.活动规定每张打卡卷最多只能做一次,并且不允许提前交卷.活动总时长为 M 分 ...

  8. 19年冬季第二题 PAT甲级 1166 Summit (25分)

    7-3 Summit (25分) A summit (峰会) is a meeting of heads of state or government. Arranging the rest area ...

  9. PAT乙级刷题之路1055 集体照 (25分)

    1055 集体照 (25分) 拍集体照时队形很重要,这里对给定的 N 个人 K 排的队形设计排队规则如下: 每排人数为 N/K(向下取整),多出来的人全部站在最后一排: 后排所有人的个子都不比前排任何 ...

最新文章

  1. 数据结构编程实战汇总
  2. apn java_android设置移动联通电信wap接入点
  3. 如何编译和运行C++程序
  4. 「镁客早报」特朗普复活美国太空指挥部;ATT的5G网络在美国12个城市上线
  5. switch和if的比较
  6. 计算机控制系统开卷试卷,13自动化计算机控制技术考试A卷
  7. nginx负载均衡常用的策略
  8. C 怎么读取Cpp文件_python之调用C加速计算(一)
  9. 牛津大学最新调研:AI面临基准危机,NLP集中“攻关”推理测试
  10. 过滤你不想看见的网页里的东西
  11. 如何应对冬季暴涨的体重
  12. hibernate在不联网或者网络异常时不能解析配置文件
  13. 基本sql语句--增删改查
  14. 【转】Add a user/Administrator to Windows Server 2008
  15. 用什么的SQL语句来查的一个表中有相同的记录条数
  16. UIImageView的内容模式以及ImageNamed和imageWithContentsOfFile的区别
  17. 制作属于你的终端词典
  18. 股指期货真是个好东西
  19. 如何做一名优秀的程序员?
  20. 知识图谱-KGE-语义匹配-双线性模型-2019:QuatE

热门文章

  1. focas2 fanuc发那科数控系统数据采集刀具DNC程序管理源代码
  2. Python异常调用栈
  3. 实验39:CCNA综合实验训练1(期末考试)
  4. sql2000的安装问题 挂起 和 中文路径名字问题
  5. antd form方法
  6. base64和图片的互转(HTML5的File实现)
  7. JavaScript 通过HTML的FileReader把图片转成base64
  8. 一测振系统包括微型计算机,机械工程师职称考试真题及答案「2016」
  9. KUKA 示教器 - 自定义按键(左下角4个白色按键),他来了!!!
  10. Excel日期和星期的转换(中、英文)-WEEKDAY函数