当前位置: 首页 > news >正文

QDU-ycb的ACM进阶之路(多重背包做法)

ycb的ACM进阶之路

发布时间: 2017年5月22日 14:30   最后更新: 2017年5月22日 14:31   时间限制: 1000ms   内存限制: 128M

  ycb是个天资聪颖的孩子,他的梦想是成为世界上最伟大的ACMer。为此,他想拜附近最有威望的dalao为师。dalao为了判断他的资质,给他出了一个难题。dalao把他带到一个到处都是题的oj里对他说:“孩子,这个oj里有一些不同的题,做每一道题都需要一些时间,每一题也有它自身的rp(人品值)。我会给你一段时间,在这段时间里,你可以做一些题。如果你是一个聪明的孩子,你应该可以让做题的总rp最大。”   如果你是ycb,你能完成这个任务吗?

输入文件的第一行是一个T,表示测试组数,接下来T组每组第一行包含两个正整数N,M。M表示总共能够用来做题的时间,N代表oj里的题目的数目。接下来的N行每行包括两个的整数,分别表示做每个题的时间Ti和这道题的人品值Vi。
1 <= N, M <= 100000,
1 <= Ti, Vi <= 10

输出文件仅包含一个整数表示规定时间内可以做题得到的最大人品值。

  复制
1
3 9 
10 10 
8 1 
1 2
3


思路:读完题发现是个裸的01背包?但看到数据范围发现01背包会TLE,但又发现物品的体积和价值范围很小,才有10*10种组合方式,所以可以把重复的体积+价值归到一类,然后多重背包做即可。

吐槽:分析时间复杂度大约是10^8左右,刚开始还不敢交,没想到数据那么弱。


Code:

#include <bits/stdc++.h>
using namespace std;
int a, b, t, n, m, tt;
int jk[15][15];
int dp[100005];
int main()
{
	ios::sync_with_stdio(0);
	cin >> tt;
	for(int l = 1; l <= tt; ++l)
	{
		memset(jk, 0, sizeof jk);
		memset(dp, 0, sizeof dp);
		cin >> n >> m;
		for(int i = 0; i < n; ++i)
		{
			cin >> a >> b;
			++jk[a][b];
		}
		for(int i = 1; i <= 10; ++i)
		for(int j = 1; j <= 10; ++j)
		{
			if(jk[i][j])
			{
				t = jk[i][j];
				for(int k = 1; k < t; k<<=1)
				{
					for(int g = m; g >= i*k; --g)
						dp[g] = max(dp[g], dp[g-i*k]+j*k);
					t -= k;
				}
				for(int g = m; g >= i*t; --g)
					dp[g] = max(dp[g], dp[g-i*t]+j*t);
			}
		}
		cout << dp[m] << endl;
	}
	return 0;
}

继续加油~

相关文章:

  • 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—B qwb与矩阵
  • F5 LTM 在SIP消息负载均衡中存在的问题
  • 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—D qwb与神奇的序列
  • 我所爱的世界
  • 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—J qwb又偷懒了
  • 字符串处理文章outline
  • 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—K qwb与小数
  • java内存管理机制
  • 网络流-割的概念以及定理
  • HDU 3533 Escape
  • 容斥原理+模板题HDU-1796
  • Java日志最佳实践
  • 2017年第0届浙江工业大学之江学院程序设计竞赛决赛—A qwb与支教
  • SDUT-3930(线段树+状压)
  • 【Active入门】ActiveMQ学习-1
  • [译] React v16.8: 含有Hooks的版本
  • 【编码】-360实习笔试编程题(二)-2016.03.29
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • 77. Combinations
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • JavaScript工作原理(五):深入了解WebSockets,HTTP/2和SSE,以及如何选择
  • Js基础——数据类型之Null和Undefined
  • log4j2输出到kafka
  • Netty 4.1 源代码学习:线程模型
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Windows Containers 大冒险: 容器网络
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 聊聊flink的BlobWriter
  • 前嗅ForeSpider采集配置界面介绍
  • 使用putty远程连接linux
  • 数据结构java版之冒泡排序及优化
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 函数计算新功能-----支持C#函数
  • ​【已解决】npm install​卡主不动的情况
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #pragma预处理命令
  • ( 10 )MySQL中的外键
  • (09)Hive——CTE 公共表达式
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (附源码)springboot教学评价 毕业设计 641310
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (强烈推荐)移动端音视频从零到上手(下)
  • (亲测)设​置​m​y​e​c​l​i​p​s​e​打​开​默​认​工​作​空​间...
  • (一)Neo4j下载安装以及初次使用
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • .“空心村”成因分析及解决对策122344
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .Family_物联网
  • .NET delegate 委托 、 Event 事件,接口回调
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • @Service注解让spring找到你的Service bean
  • [1] 平面(Plane)图形的生成算法