hiho一下 第139周 买零食 动态规划
原题:http://hihocoder.com/contest/hiho139/problem/1
看了下,通过率还挺高的。主要是数据量不大100,套三个循环纯暴力理论上应该都可以过的,不过时间复杂度比较高。
不过第一反应是动态规划。
价格小数部分只有0或者0.5,预处理下乘以2,转成整数类型会好算点。额外+0.5再转成int的是题主担心浮点数转换有精度损失。
dp[i][j][k] 可以表示前i个物品中,选了k个物品,和的个位数为j,时候的渴望度。初始时dp[x][0][0]为0,其他为不可能情况,可以初始为一个负数。当dp[i-1][j][k]为可能情况时候,状态转移方程为dp[i][(j+a[i])%10][k+1] = max(dp[i][(j+a[i])%10][k+1] , dp[i][j][k]+b[i])。这时的空间复杂度还比较高,考虑到当前的商品选不选之与上一个状态有关,跟之前的状态无直接关系,可以用滚动数组,减少一个维度。当用滚动数组的时候,要考虑遍历顺序,题主前几次提交都没过,后面发现是遍历顺序错了。遍历状态要从k往下递减,避免选第i个物品的结果之间相互干扰,确保当前使用的值是上一个选择第i-1个物品状态的值。
代码如下
#include<bits/stdc++.h>
using namespace std;
const int maxn = 106;
int a[maxn], b[maxn];
int dp[11][4];
inline void up(int &a, int b){if(a<b) a=b;}
int main(){ios_base::sync_with_stdio(false);int t;cin>>t;while(t--){int n;cin>>n;double c;for(int i=0; i<n; i++){cin>>c>>b[i];a[i] = (int)(c*2 + 0.5);}memset(dp, 0xff, sizeof dp);dp[0][0]=0;for(int i=0; i<n; i++){for(int k=2; k>=0; k--){ //k从上往下遍历,避免这次i的结果间相互干扰,保证i对后面每个转移用到的都是i-1的结果for(int j=0; j<10; j++){if(dp[j][k]>=0){int rem = (j+a[i])%10;up(dp[rem][k+1], dp[j][k]+b[i]);}}}}int ans=0;for(int i=0; i<=3; i++){up(ans, dp[0][i]);}cout << ans << "\n";}return 0;
}
hiho一下 第139周 买零食 动态规划相关推荐
- hiho一下 第139周 买零食
买零食 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰霜著称.第一次去 ...
- hiho一下 第139周 《买零食》 多维01背包
题目链接:http://hihocoder.com/contest/hiho139/problem/1 描述 小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐 ...
- hihoCoder--139周 买零食
题目1 : 买零食 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰霜著 ...
- hiho #1272 买零食 [Offer收割]编程练习赛2
#1272 : 买零食 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰 ...
- 关于小学和哥哥买零食的琐碎回忆
人越长大,总会去回忆小时候的事情,我就是这样一个喜欢不断后悔.遗憾.回忆.怀念的人 对于零食,我和哥哥可谓是爱之入骨.也许是因为爸爸也是个吃货,所以我们几个小孩都特别喜欢吃零食,现在也不例外. 如今能 ...
- hihoCoder 买零食
时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰霜著称.第一次去一教小卖 ...
- hihocoder买零食
买零食 Time Limit:5000MS Memory Limit:262144KB 64bit IO Format:%lld & %llu Submit Status Pr ...
- [hihoCoder] 买零食
http://hihocoder.com/contest/hiho139/problem/1?sid=992251 描述 小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一 ...
- 买零食 HihoCoder - 1272
小Ho很喜欢在课间去小卖部买零食.然而不幸的是,这个学期他又有在一教的课,而一教的小卖部姐姐以冷若冰霜著称.第一次去一教小卖部买零食的时候,小Ho由于不懂事买了好一大堆东西,被小卖部姐姐给了一个&qu ...
最新文章
- mysql select语法_MySQL SELECT语法(一)SELECT语法详解
- [Node.js] 2、利用node-git-server快速搭建git服务器
- HDOJ 4883 TIANKENG’s restaurant
- 架构师养成之道-02-jvm原理
- Seven Segment Display
- Android插件化开发基础之Java反射机制研究
- ubuntu12.04samba服务器配置
- 想用Python爬小姐姐图片?那你得先搞定分布式进程
- jQuery左右循环滚动图片特效
- Linux 2.6中基于Sysenter的系统调用机制
- 微信成最频繁网络诈骗犯罪工具;库克再谈乔布斯;PyCharm 2019.2.5 发布| 极客头条...
- Java 爬取行政区划代码
- Type C DP简介
- 互联网公司指南 上海篇: 字节跳动
- [Python知识图谱] 一.哈工大pyltp安装及中文分句、中文分词、导入词典基本用法
- 2019年培养工作室主力计划——第1次任务
- 织梦dedecms TAG标签调用汇总(史上最全)
- 条件运算符(三目运算符)
- ThreadX学习(4)——内存管理
- i7 7700hq安装Linux,翻出了自己吃灰的IfunkS i7-7700HQ笔记本 装了个ubuntu跑个分