题目背景

mzc与djn第三弹。

题目描述

mzc家很有钱(开玩笑),他家有n个男家丁(做过前两弹的都知道)。但这些都不足以挽救他被yyh虐的命运。于是他向你们发起了求救。

mzc要派出k个男家丁与yyh大战,但他只能承载质量为M的男家丁,现在他想知道她们(你没有看错)的战斗力之和是否打得过yyh。

输入输出格式

输入格式:

第一行有三个数n,m,k,n表示有n个男家丁,m表示能承载m的质量,k表示yyh的战斗力。

之后n行,每行两个数a[i],b[i],分别表示第i个男家丁的质量和战斗力。

输出格式:

两行,若打得过(大于等于):输出“yes”;

若打不过:输出“no”。

第二行输出最高战斗力.

输入输出样例

输入样例#1:

3 100 100
71 100
69 1
1 2

输出样例#1:

yes
102

说明

20%,n<=1000;

100%,n,m<=100000,a[i],b[i]<=10。

由于mzc大大十分着急,所以他只能等待1S。

乍一看,01背包,但是只有20分。。。

于是,将质量与战斗力相同的男家丁合并,于是成了 多重背包。。。

然而还是 TLE。。。

二进制优化!!!

附代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#define MAXN 100010
#define MAXM 135
using namespace std;
int n,m,k,d=1,ans=0,v[MAXM],w[MAXM],c[MAXM],dp[MAXN];
struct node{int v,w;
}a[MAXN];
inline int read(){int date=0,w=1;char c=0;while(c<'0'||c>'9'){if(c=='-')w=-1;c=getchar();}while(c>='0'&&c<='9'){date=date*10+c-'0';c=getchar();}return date*w;
}
bool cmp(const node &x,const node &y){if(x.w==y.w)return x.v>y.v;return x.w<y.w;
}
int main(){int s,t;n=read();m=read();k=read();for(int i=1;i<=n;i++){a[i].w=read();a[i].v=read();}sort(a+1,a+n+1,cmp);for(int i=1;i<=n;i++){w[d]=a[i].w;v[d]=a[i].v;c[d]=1;while(i<=n&&a[i+1].w==a[i].w&&a[i+1].v==a[i].v){c[d]++;i++;}d++;}s=1;t=d-1;while(w[s]==0){ans+=c[s]*v[s];s++;}for(int i=s;i<=t;i++){int num=c[i];for(int j=1;num-j>0;j*=2){num-=j;for(int l=m;l>=j*w[i];l--)dp[l]=max(dp[l],dp[l-j*w[i]]+j*v[i]);}for(int l=m;l>=num*w[i];l--)dp[l]=max(dp[l],dp[l-num*w[i]]+num*v[i]);}ans+=dp[m];if(ans>=k)printf("yes\n");else printf("no\n");printf("%d\n",ans);return 0;
}

洛谷P2306 被yyh虐的mzc相关推荐

  1. 洛谷 - 试炼场(全部题目备份)

    整理的算法模板合集: ACM模板 目录 1.新手村 1 - 1 洛谷的第一个任务 1 - 2 顺序与分支 1 - 3 循环!循环!循环! 1 - 4 数组 1 - 5 简单字符串 1 - 6 过程函数 ...

  2. 洛谷试练场入门之“洛谷的第一个任务”讲解

    话说,其实我主要在洛谷上做题 www.luogu.org 有些萌新若想在洛谷提升自己的实力,先看试炼场 因为吧,我个人觉得试炼场是适合一点一点来 那么这是试炼场的截图 分五个阶段: 1.入门 2.普及 ...

  3. 洛谷-题解 P2672 【推销员】

    独门思路!链表加优先队列! 这题一望,贪心是跑不掉了,但是我贪心并不好,所以想到了一个复杂一些但思路更保稳的做法 思路: 1 因为是离线操作,所以我们可以倒着求,先求x=n的情况,因为那样直接就知道了 ...

  4. 洛谷 P1142 轰炸

    洛谷 P1142 轰炸 题目描述 "我该怎么办?"飞行员klux向你求助. 事实上,klux面对的是一个很简单的问题,但是他实在太菜了. klux要想轰炸某个区域内的一些地方,它们 ...

  5. 洛谷 P1387 最大正方形

    P1387 最大正方形 题目描述 在一个n*m的只包含0和1的矩阵里找出一个不包含0的最大正方形,输出边长. 输入输出格式 输入格式: 输入文件第一行为两个整数n,m(1<=n,m<=10 ...

  6. 洛谷P2763 试题库问题

    题目:https://www.luogu.org/problemnew/show/P2763 题目描述 «问题描述: 假设一个试题库中有n道试题.每道试题都标明了所属类别.同一道题可能有多个类别属性. ...

  7. 动态规划——洛谷_P1057传球游戏

    题目: 题目描述 上体育课的时候,小蛮的老师经常带着同学们一起做游戏.这次,老师带着同学们一起做传球游戏.游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球, ...

  8. 洛谷P1417 烹调方案

    洛谷P1417 烹调方案 如果是一般的01背包的话 选的先后是没关系的 但是这题选的先后是有关系的,因为他的价值是随着时间而变化的, 而你的01背包是做不到先选2再选1的 那么我们就跟国王游戏一样 用 ...

  9. 记忆优化搜索(简单题)(洛谷P3183 [HAOI2016]食物链 )( P5635 【CSGRound1】天下第一 )

    昨天做了蓝桥杯的时候,发现自己对于记忆优化搜索甚是不熟悉,所以今天随便找了几个基础题做做,顺便写下两片题解,顺便用了一下devc++敲的代码,发现没有代码补全真的可以说是灰常难受了... 洛谷P318 ...

  10. 洛谷专题训练 ——【算法1-1】模拟与高精度

    洛谷题单[算法1-1]模拟与高精度 ACM-ICPC在线模板 题单链接: [算法1-1]模拟与高精度 下面的这一坨都是洛谷题单上的东东 题单简介 恭喜大家完成了第一部分语言入门,相信大家已经可以使用 ...

最新文章

  1. fastjson 的作者,在阿里内网挨骂了?!
  2. 差异表达基因火山图(ggplot函数)
  3. [置顶] Android面试题目之四: 归并排序
  4. C# 8的新提案:new关键字类型推断
  5. java进阶 2018_Java Web基础入门2018版
  6. Android选项切换条SHSegmentControl
  7. excel生成mysql语句_通过SQL语句直接实现Excel与数据库的导入导出
  8. 4.4.5 清除变量内容
  9. Bootstrap 3 移除输入框聚焦线 How to remove border (outline) around text/input boxes?
  10. sublime编写python路径报错怎么改_MacOS-Sublime-Text3设置Python3编译环境
  11. 神武咪咕汇点燃大湾区 多益网络深化新文创实践
  12. 各大媒体优劣对比_主流酱油选购对比
  13. 数字化方法基础(四)_矩阵操作
  14. Android自定义控件及自定义属性
  15. 修改本地数据库root权限密码
  16. 如何走出创新者的窘境?走向2049
  17. v21 v8中资源找不到
  18. 交换机上网显示本地未连接服务器,本地连接提示受限制或无连接,处理思路?...
  19. unity webgl 手机端微信直接打开链接
  20. 高二计算机课程难点,巧用信息技术手段 突破高中数学课堂教学的重难点

热门文章

  1. 大疆精灵4RTK连接千寻位置FindM Pro、FindCM
  2. 第七章、TPP2(G2)
  3. Master 2S无线鼠标信号干扰问题
  4. 图文笔记,带你走进《未来简史》(11-15)
  5. 【转】人不成熟的几大特征——海尔集团CEO张瑞敏演讲稿
  6. 一份来自前端开发工程师的规范简历
  7. 【Linux】CMAQ实践部署
  8. 细胞自噬机制最新研究进展(2021年12月)
  9. 2021年网络安全省赛--web隐藏信息探索解析(中职组)
  10. vue_elementui拖住滑块拼图验证代码