10年省赛-Greatest Number (二分+暴力) + 12年省赛-Pick apples(DP) + UVA 12325(暴力-2次枚举)
题意:给你n个数,在里面取4个数,可以重复取数,使和不超过M,求能得到的最大的数是多少;
思路:比赛时,和之前的一个题目很像,一直以为是体积为4(最多选择四次)的完全背包,结果并不是,两两求和,然后二分枚举;
完全背包是固定的体积,然后尽量使得装下的重量最大;
这个题目是固定的体积,但求在不超过该重量的情况下能得到的最大值。
至于为啥不是完全背包到现在还找到一个反例,以后再修改;
不过看到一共选择四次的时候,就应该想到是暴力。。。
比较相似的一个题目,12年的省赛题目:http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2408
那个是10的8次方,也是优化之后才能背包,将10的6次方的那部分先减掉,因为它是不限制取的次数的
- #include <bits/stdc++.h>
- using namespace std;
- #define N 10010
- #define repu(i,a,b) for(int i=a;i<b;i++)
- #define ll long long
- int c[N],a[N];
- int main()
- {
- int n,m,b,kase = ,ok = ;
- while(scanf("%d%d",&n,&m)&&n&&m)
- {
- vector<int> s;
- s.clear();
- repu(i,,n)
- scanf("%d",&a[i]),s.push_back(a[i]);
- repu(i,,n)
- {
- repu(j,i,n)
- if(a[i]+a[j] <= m)
- s.push_back(a[i]+a[j]);
- }
- sort(s.begin(),s.end());
- int ans = ;
- repu(i,,s.size())
- {
- int st = i,ed = s.size() - ;
- while(st <= ed)
- {
- int mid = (st + ed) /;
- if(s[mid] + s[i] > m)
- ed = mid -;
- else
- {
- if(s[i] + s[mid] > ans)
- ans = s[i] + s[mid];
- st = mid + ;
- }
- }
- }
- printf("Case %d: %d\n\n",kase++,ans);
- }
- return ;
- }
Great Number
- #include <cstdio>
- #include <cstring>
- #include <cstdlib>
- #include <iostream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- #define N 1000005
- #define ll long long
- struct App
- {
- ll s, p;
- double k;
- bool operator < (const App& rhs) const
- {
- return k < rhs.k;
- }
- } app[];
- double d[N];
- int main()
- {
- int T;
- scanf("%d", &T);
- ll v;
- ll q = ;
- for(int cases = ; cases <= T; cases++)
- {
- memset(d, , sizeof(d));
- for(int i = ; i < ; i++) {
- scanf("%lld%lld", &app[i].s, &app[i].p);
- app[i].k = (double)app[i].p / (double)app[i].s;
- }
- scanf("%lld", &v);
- sort(app, app + );
- ll t = ;
- //printf("t : %lld\n", max(v, 1000000ll));
- if(v > q) {
- //printf("t : %lld\n", v);
- t = (v - q) / app[].s + 1ll;
- v -= t * app[].s;
- }
- //printf("%lld\n", app[2].s);
- for(int i = ; i <= v; i++)
- for(int j = ; j < ; j++)
- if(i - app[j].s >= )
- d[i] = max((double)d[i - app[j].s] + (double)app[j].p, d[i]);
- printf("Case %d: %.0lf\n", cases, d[v] + (double)t * (double)app[].p);
- }
- return ;
- }
完全背包+优化
UVA 题意:给固定体积,告诉你两种物品的体积,以及他们的价值,求最多能装的价值是多大;
看似像背包,但是可以暴力做,2次枚举同时,i个s1,i个s2,同时比较,保留大的,i循环100000就够了
误解:记得之前做过,队友说看比例,即第一个物体和第二个物体比较性价比,谁的高先留谁,装不下了再考虑第二个物体,之前我很赞同,现在有反例了:9 2 5 3 7(总体积,第一物体体积,价值,第二物体体积,价值)这组样例正确答案是21,但是按照上边的思路得出的是20,因为先考虑的是第一个,所以还是应该枚举。这样想,已经在两个题目上验证是错误的,应该放弃这种思想了。。。
10年省赛-Greatest Number (二分+暴力) + 12年省赛-Pick apples(DP) + UVA 12325(暴力-2次枚举)的更多相关文章
- [2012山东ACM省赛] Pick apples (贪心,完全背包,枚举)
Pick apples Time Limit: 1000MS Memory limit: 165536K 题目描述 Once ago, there is a mystery yard which on ...
- [2012山东ACM省赛] Pick apples (贪心,全然背包,枚举)
Pick apples Time Limit: 1000MS Memory limit: 165536K 题目描写叙述 Once ago, there is a mystery yard which ...
- Greatest Number 山东省第一届省赛
Greatest Number Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 Saya likes math, because ...
- SDUT2157——Greatest Number(STL二分查找)
Greatest Number 题目描述Saya likes math, because she think math can make her cleverer.One day, Kudo invi ...
- 2019浙师大校赛(浙大命题)(upc复现赛)总结
2019浙师大校赛(浙大命题)(upc复现赛)总结 早上九点开始.起得迟了,吃了早饭慌慌张张跑过去,刚到比赛就开始了. 开始分别从前往后和从后往前看题,一开始A题,第一发WA,第二次读题发现漏看了还有 ...
- 12.25模拟赛T3
可以发现,答案O(根号)(因为链上答案最大,n/2,n/3...根号种) 每次求答案要二分 优秀的做法是: 对于小于根号n的暴力nlogn找,可能二分到同一个mid,记忆化一下最小的tot值 对于大于 ...
- 「状压DP」「暴力搜索」排列perm
「状压DP」「暴力搜索」排列 题目描述: 题目描述 给一个数字串 s 和正整数 d, 统计 sss 有多少种不同的排列能被 d 整除(可以有前导 0).例如 123434 有 90 种排列能被 2 整 ...
- 2014辽宁省赛 Repeat Number
问题 C: Repeat Number 时间限制: 1 Sec 内存限制: 128 MB [cid=1073&pid=2&langmask=0">提交][状态][论坛 ...
- hdu 4004 二分 2011大连赛区网络赛D
题意:一个长为L的河,中间有n个石子,小青蛙需要跳少于m次过河,判断小青蛙每次跳跃最大距离的最小值 最大值最小,用二分 Sample Input 6 1 2 2 25 3 3 11 2 18 Samp ...
随机推荐
- (14)odoo加载机制
Odoo的启动通过openerp-server脚本完成,它是系统的入口. 然后加载配置文件openerp-server.conf 或者 .openerp_serverrc: openerp-serve ...
- SAP采购订单审批记录增强
采购订单审核函数: BAPI_PO_RELEASE 结尾加上 ENHANCEMENT ZME28_PO. "active version DATA:LS_EKKO TYPE EKKO. DA ...
- 5 echo展开
一.(字符)展开 1.echo在标准输出中打印出他的文本 echo this is a test 输出 this is a test 2.输出通配符时,比如*代表匹配文件名的任何字符 echo * 输 ...
- [转载]linux下svn常用指令
一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows ...
- loadrunner 如何做关联
在页面中为了防止CRSF攻击,每次访问登录页面时,在浏览器器端生成一个token. 在提交时检验这个token是否有效,提交后token自动失效. 如果使用loadrunner来测试此系统话需要做 ...
- HADOOP 2架构图
HDFS 2 architecture YARN architecture
- PHP安装pthreads多线程扩展教程[windows篇]
from:http://blog.csdn.net/aoyoo111/article/details/19020161 一.判断PHP是ts还是nts版 通过phpinfo(); 查看其中的 Thre ...
- ZOJ 2477 Magic Cube 暴力,模拟 难度:0
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1477 用IDA*可能更好,但是既然时间宽裕数据简单,而且记录状态很麻烦,就直接 ...
- sdut 2605 A^X mod P
http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2605 这个题卡的是优化,直观解法是在求x^y时 ...
- WDCP安装常用组件(memcache、mysqli、PDO_MYSQL、mysql innodb、libmcrypt、php zip)的方法
为有更好的性能,也为更简洁的系统,一些不是常用或不是基本的功能,都将做为可选的安装组件需要用到的就安装 注意:如果安装时遇到 ./configure: Permission denied提示,很有可能 ...