题意:给你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次枚举)的更多相关文章

  1. [2012山东ACM省赛] Pick apples (贪心,完全背包,枚举)

    Pick apples Time Limit: 1000MS Memory limit: 165536K 题目描述 Once ago, there is a mystery yard which on ...

  2. [2012山东ACM省赛] Pick apples (贪心,全然背包,枚举)

    Pick apples Time Limit: 1000MS Memory limit: 165536K 题目描写叙述 Once ago, there is a mystery yard which ...

  3. Greatest Number 山东省第一届省赛

    Greatest Number Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Saya likes math, because ...

  4. SDUT2157——Greatest Number(STL二分查找)

    Greatest Number 题目描述Saya likes math, because she think math can make her cleverer.One day, Kudo invi ...

  5. 2019浙师大校赛(浙大命题)(upc复现赛)总结

    2019浙师大校赛(浙大命题)(upc复现赛)总结 早上九点开始.起得迟了,吃了早饭慌慌张张跑过去,刚到比赛就开始了. 开始分别从前往后和从后往前看题,一开始A题,第一发WA,第二次读题发现漏看了还有 ...

  6. 12.25模拟赛T3

    可以发现,答案O(根号)(因为链上答案最大,n/2,n/3...根号种) 每次求答案要二分 优秀的做法是: 对于小于根号n的暴力nlogn找,可能二分到同一个mid,记忆化一下最小的tot值 对于大于 ...

  7. 「状压DP」「暴力搜索」排列perm

    「状压DP」「暴力搜索」排列 题目描述: 题目描述 给一个数字串 s 和正整数 d, 统计 sss 有多少种不同的排列能被 d 整除(可以有前导 0).例如 123434 有 90 种排列能被 2 整 ...

  8. 2014辽宁省赛 Repeat Number

    问题 C: Repeat Number 时间限制: 1 Sec  内存限制: 128 MB [cid=1073&pid=2&langmask=0">提交][状态][论坛 ...

  9. hdu 4004 二分 2011大连赛区网络赛D

    题意:一个长为L的河,中间有n个石子,小青蛙需要跳少于m次过河,判断小青蛙每次跳跃最大距离的最小值 最大值最小,用二分 Sample Input 6 1 2 2 25 3 3 11 2 18 Samp ...

随机推荐

  1. BT5更新源

    感谢http://blog.csdn.net/seaos/article/details/7064136终于找到更新成功的源了 下面简单介绍步骤吧 gedit /etc/apt/sources.lis ...

  2. 初学java之(盒子分布)

    import javax.swing.*; import java.awt.*; class WinGrid extends JFrame { Box basebox , boxv1,boxv2; p ...

  3. mysql jdbc连接

    public class JDBCTest { public static void main(String[] args) { String sql = "SELECT * FROM us ...

  4. Collaborative Filtering

    for i=1:6040 Ai=ratings(ratings(:,1)==i,:); for j=1:5 Labnum(i,j)=length(Ai(Ai(:,3)==j)); end num(i) ...

  5. HDU 4122

    Alice's mooncake shop Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  6. GridView72变 控件

    快速预览:GridView 无代码分页排序GridView选中,编辑,取消,删除GridView正反双向排序GridView和下拉菜单 DropDownList结合GridView和CheckBox结 ...

  7. BZOJ4003 [JLOI2015]城池攻占

    这题有两种做法来着... 第一种就是一开始想到的比较不靠谱,不过貌似可以过掉: 看从$1$号节点开始到$p$号节点最大需要的体力,记录单调上升的体力,询问的时候二分跳着走就可以了 不过精度问题还有可能 ...

  8. GridControl的用法(1)

    一.属性设置 ①去除gridControl上的筛选条 //去除上面的筛选条            gridView1.OptionsView.ShowGroupPanel = false; ②设置列名 ...

  9. 在Web中如何使用Windows控件(ActiveX)[转]

    最近做的一个Web项目,需要在网页中播放摄像头采集的实时视频,我们已经有了播放视频的使用C#编写的windows控件,如何将其嵌入到网页中去了?这需要使用一种古老的技术,ActiveX. 1.将.Ne ...

  10. 绑定本地Service并与之通信-----之一

    import android.app.Service;import android.content.Intent;import android.os.Binder;import android.os. ...