Contest3145 - 2021级新生个人训练赛第37场_A: 奖品
//
问题 A: 奖品
时间限制: 1.000 Sec 内存限制: 128 MB题目描述
托塔李天王的三太子那吒,本领高强,他要赶在奥林匹克运动会之际,开一个头脑 奥林匹克比赛,获胜者的奖品就是经过提炼后的“氦-3”晶结体;
该物质在月球上大量 存在,是一种无色、无味的氦气同位素,它在核聚变研究中有重要作用。
氦-3还是一种 绝对清洁的能源,因为它本身不带放身性,因此不会产生任何放射性废料。可是如果从 月球上将该晶体运回地球呢?那吒说:用我的肚兜吧!
当然他的肚兜易受太阳风等因素 的影响,载重量不能超过k(1<=k<=100000),超过这个值,肚兜就不会飞了;
这个k值 那吒会告诉你的,同时还会告诉你每一个晶体的重量。 你的任务是使这个肚兜一次能运回更多的晶体。
输入
有两行 第一行有两个正整数n和k,用一个空格隔开。表示有n个晶体,肚兜最大载重量为k。 第二行有n个不超过10000的正整数,分别表示n个晶体的重量,数与数之间用一个空 格隔开。
输出
只有一行,该行只有一个正整数,表示那吒的肚兜一次能运回 的晶体重量的最大值。
样例输入 Copy
5 15
2 4 4 8 10
样例输出 Copy
14
提示
[数据限制]
40%的数据: 1<=n<=20
100%的数据: 1<=n<=100
//
// dp
#include<bits/stdc++.h>
using namespace std;const int MAXN=1e5+6;
int a[111],dp[111][MAXN];int main()
{int n,k,i,j;while( ~scanf("%d%d",&n,&k) ){memset( a,0,sizeof( a ) );memset( dp,0,sizeof( dp ) );for( i=1;i<=n;i++ ) scanf("%d",&a[i]);for( i=1;i<=n;i++ ){for( j=1;j<=k;j++ ){if( j<a[i] ) dp[i][j]=dp[i-1][j];else dp[i][j]=max( dp[i-1][j],dp[i-1][j-a[i]]+a[i] );}}printf("%d\n",dp[n][k]);}return 0;
}
// 二维 dp
#include<bits/stdc++.h>
using namespace std;const int MAXN=1e5+6;
int a[111],dp[2][MAXN];int main()
{int n,k,i,j,k1,k2,temp;while( ~scanf("%d%d",&n,&k) ){k1=0,k2=1;memset( a,0,sizeof( a ) );memset( dp,0,sizeof( dp ) );for( i=1;i<=n;i++ ) scanf("%d",&a[i]);for( i=1;i<=n;i++ ){for( j=1;j<=k;j++ ){if( j<a[i] ) dp[k2][j]=dp[k1][j];else dp[k2][j]=max( dp[k1][j],dp[k1][ j-a[i] ]+a[i] );}temp=k1; k1=k2; k2=temp; // 位置很关键}printf("%d\n",dp[k1][k]);}return 0;
}
//
find:
01 因为本轮状态只和前一轮有关 所以二维 dp 可以大大减少空间
02 二维 dp 时 参数交换的位置很关键 ( 别放 j 循环里头了 )
Contest3145 - 2021级新生个人训练赛第37场_A: 奖品相关推荐
- Contest3121 - 2021级新生个人训练赛第26场_问题 F: 乐乐的数字
// 问题 F: 乐乐的数字 时间限制: 1.000 Sec 内存限制: 128 MB题目描述 乐乐做完数学作业,突发奇想定义了一种新的数:乐乐数.乐乐把n个数排成一行,一个数的"乐乐数&q ...
- 2021级新生个人训练赛第38场
问题 A: chicken 题目描述 小 x 非常喜欢小鸡翅.他得知 NSC 超市为了吸引顾客,举行了如下的活动: 一旦有顾客在其他超市找到更便宜的小鸡翅,NSC 超市将免费送给顾客 1000g 小鸡 ...
- 2021级新生个人训练赛第40场
问题 A: 多项式输出 题目描述 一元 n 次多项式可用如下的表达式表示: 其中,aixi称为 i 次项,ai 称为 i 次项的系数.给出一个一元多项式各项的次数和系数,请按照如下规定的格式要求输出该 ...
- Contest3117 - 2021级新生个人训练赛第24场_问题 E: 打印方阵
问题 E: 打印方阵 时间限制: 1.000 Sec 内存限制: 128 MB题目描述 下面这样的方阵很有规律,称为蛇形方阵.例如3*3的: 1 2 3 6 5 4 7 8 9 现在给定边长,输出相应 ...
- Contest3143 - 2021级新生个人训练赛第36场_B: 数字游戏
// 问题 B: 数字游戏 时间限制: 1.000 Sec 内存限制: 512 MB题目描述 有一天,小明给佳佳出了一道题, 给出一个正整数n,佳佳可以进行如下三种操作: 1.使n减去1 2.如果n是 ...
- Contest3125 - 2021级新生个人训练赛第27场_问题 F: 兔子
//问题 F: 兔子 时间限制: 1.000 Sec 内存限制: 128 MB题目描述 从左往右有100000001个整数点,分别是整数点0至整数点100000000.有n只兔子,第i只兔子在整数点d ...
- 2021级新生个人训练赛第36场
问题 A: 礼物 题目描述 在一个n×n的网格图上,放置着m个礼物,每个礼物有一个价值vi(1≤i≤m),你可以选择一个礼物,然后选择: (1)取走与它同列的所有礼物,或者(2)取走与它同行的所有礼物 ...
- [2021.11.19]UPC-2021级新生个人训练赛第4场-19278 Problem D 关门
题目描述 为了将这些生产的玩具销往海外,晚上江北的玩具公司灯火通明.安安是公司的保安,当所有工作人员离开公司后,他要把公司里所有的门都关闭.房间的门有些是关闭的,有些是打开的.为了察看该公司里所有房间 ...
- [2022.1.13]UPC-2021级新生个人训练赛第22场-9783 Problem H 铺地砖
问题 H: 铺地砖 时间限制: 1.000 Sec 内存限制: 128 M 题目描述 一天,晨晨的数学老师布置了一道题目,大意如下:用1×1和2×2的磁砖不重叠地铺满n×3的地板,共有多少种方案? 例 ...
最新文章
- 成员函数和友元函数实现一元运算符重载
- Java技术分享:NIO实战教程!
- 2019蓝桥杯省赛b组
- 数据结构与算法之判断一棵树是否为搜索二叉树、判断一棵树是否是完全二叉树
- libevent学习笔记 一、基础知识
- 【转】Dynamics CRM:“the given key was not present in the dictionary”
- ORACLE 小时值必须介于1和12之间 解决方法
- 花书+吴恩达深度学习(二二)自编码器(欠完备,DAE,CAE,PSD)
- 计算机页面图形颠倒,电脑屏幕倒过来了如何解决
- 拓端tecdat|关联规则APRIORI挖掘豆瓣读书评论爬虫采集数据与可视化
- Firefox XPI插件安装方法
- 【195】apache2.4安装ssl 证书
- IT行业市场人才需求
- 如何申请注册微信公众号
- bzoj1779 [Usaco2010 Hol]Cowwar 奶牛战争(网络流)
- Shiro框架学习笔记、整合Springboot、redis缓存
- A*算法实现9宫格拼图游戏最优解
- 【C++】7-41 互评成绩(PTA)
- Tushare库之Libor拆借利率
- 安卓程序 静默 截屏工具_安卓定制系统开放性对比测试:到底谁最自由?