EOJ Monthly 2018.4 (E.小迷妹在哪儿(贪心&排序&背包)
ultmaster 男神和小迷妹们玩起了捉迷藏的游戏。
小迷妹们都希望自己被 ultmaster 男神发现,因此她们都把自己位置告诉了 ultmaster 男神,因此 ultmaster 男神知道了自己去找每个小迷妹所要花的时间。
已知发现第 i 小迷妹得到的分数为 ai⋅tr(tr 为游戏剩余时间)。ultmaster 想知道他最多能拿多少分。
Input
第一行两个整数 n,T (1≤n≤105,1≤T≤300) 分别表示小迷妹数量,游戏总时间。
接下去 n 行,每行两个整数 ai,ti (1≤ai≤100,1≤ti≤300) 分别表示发现小迷妹的分数以及 ultmaster 男神发现小迷妹所需时间。
Output
一个整数,表示 ultmaster 在游戏中最多拿多少分。
Examples
2 10
2 5
1 6
10
3 5
5 4
1 1
10 6
5
Note
样例一:找到小迷妹一,找到后得分 2×(10−5)=10 分。
样例二:找到小迷妹一,找到后得分 5×(5−4)=5 分,之后再找到小迷妹二得分也是 0,所以最高得分 5 分。
最优子结构解释一下:这里的价值和时间顺序有关,所以我们排序,那么让价值高的先占据背包。然后剩下的空余背包再去DP。
(总之,如果遇到价值和时间无关的,无需多想。有关的,注意一下是否需要排序)。
至于验证,就根据不同的题划不等式就行了。。。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int dp[],ans;
struct in { int a,t; }s[];
bool cmp(in w,in v){ return w.a*v.t>v.a*w.t;}
int main()
{
int N,T;
scanf("%d%d",&N,&T);
for(int i=;i<=N;i++)
scanf("%d%d",&s[i].a,&s[i].t);
sort(s+,s+N+,cmp);
for(int i=;i<=N;i++){
for(int j=T-s[i].t;j>=;j--) dp[j+s[i].t]=max(dp[j+s[i].t],dp[j]+(T-j-s[i].t)*s[i].a);
for(int j=;j<=T;j++) dp[j]=max(dp[j],dp[j-]);
}
cout<<dp[T]<<endl;
return ;
}
EOJ Monthly 2018.4 (E.小迷妹在哪儿(贪心&排序&背包)的更多相关文章
- EOJ Monthly 2018.4
A. ultmaster 的小迷妹们 Time limit per test: 2.0 seconds Memory limit: 256 megabytes ultmaster 男神和他的小迷妹们准 ...
- 【EOJ Monthly 2018.7】【D数蝌蚪】
https://acm.ecnu.edu.cn/contest/92/problem/D/ D. 数蝌蚪 Time limit per test: 2.0 seconds Memory limit: ...
- EOJ Monthly 2018.8 D. Delivery Service-树上差分(边权/边覆盖)(边权转点权)(模板题)
D. Delivery Service 单测试点时限: 2.5 秒 内存限制: 512 MB EOJ Delivery Service Company handles a massive amount ...
- EOJ Monthly 2018.2
A. 坑爹的售票机 题意 用\(1,5,10,25,50,100\)的纸币买\(n\)张单价为\(p\)的船票,且一次性最多买\(k\)张,求钱数恰好时最少需要多少张纸币. Hard: \(n,k,p ...
- EOJ Monthly 2018.1 F 最小OR路径
题目链接 Description 给定一个有 \(n\) 个点和 \(m\) 条边的无向图,其中每一条边 \(e_i\) 都有一个权值记为 \(w_i\) . 对于给出的两个点 \(a\) 和 \(b ...
- EOJ Monthly 2018.7
准备继续大学acm啦 又要开始愉快的码码码啦 第一次在华东师大OJ上面做题 看来EOJ上的积分体质是假的,我怎么一把上红??? A.数三角形 神tm的防AK题放在A,出题人很不友好啊... 先写了个暴 ...
- [EOJ Monthly 2018.10][C. 痛苦的 01 矩阵]
题目链接:C. 痛苦的 01 矩阵 题目大意:原题说的很清楚了,不需要简化_(:з」∠)_ 题解:设\(r_i\)为第\(i\)行中0的个数,\(c_j\)为第\(j\)列中0的个数,\(f_{i,j ...
- EOJ Monthly 2018.11 D. 猜价格
猜价格 分两种情况讨论: k≤n,先猜至多 k 次 1,由于回答 <1 肯定是假的,所以可以把剩余系下是哪次错试出来,然后用至多 n 次搞定. k>n,每个数都猜两次,如果两次结果不一样, ...
- EOJ Monthly 2018.7 B.锐角三角形(数学几何+思维)
描述 是否存在面积为S/2的整点锐角三角形?存在输出Yes并输出三个整点坐标,否则输出No. 注意如果存在输出的坐标必须在long long范围内. Input 第一行一个整数S(1<=S< ...
随机推荐
- (12)centos之stmp服务器
yum remove sendmail #卸载sendmail
- route命令走一波
1.写文章去了解某个命令完全是兴起,并没有下定决心去学哪一套课程,目前的状态仍然是犹豫中,废话不多说进入正文,九月二十七这天看到了route命令,发现对路由这个命令很陌生,陌生到根本不知道它是用来干什 ...
- Junit4 断言新方法
话不多少说,直接上代码 package ASSERTTEST; import org.junit.Assert; import org.hamcrest.*;import org.junit.Test ...
- 【mac】显示隐藏文件夹
进入访达 快捷键:command+shift+.
- Javascript:如何调用全局变量?
怎样使用全局变量呢? window.globalVariableName 参考: https://blog.csdn.net/zyz511919766/article/details/7276089
- 8. Smarty3:模版中的内置函数
smarty3中对内置函数的修改比較大,加入了很多新的功能:变量声明.表达式,流程控制,函数.数组等.可是建议不要在模版中去使用过于复杂的逻辑,而是要尽量将一些程序设计逻辑写到PHP中,并在模版中採用 ...
- Python基础二--基本控制语句
基本接触每一种语言,都须要做的:1.print 一个"Hello world!" 2.了解主要的数据类型 3.学习控制语句. 当我们学习控制语句,一般都离不开if,for ,whi ...
- JAVA WEB学习笔记(一):JDK的安装及环境变量的配置
一.JDK的安装. JDK可以在Oracle(甲骨文)的官网下载,连接地址:http://www.oracle.com/technetwork/java/javase/downloads/index- ...
- java设计模式----真实世界的模式
设计模式的定义: 模式是在某情境下,针对某问题的某种解决方案 反模式: 告诉你如何采用一个不好的解决方案解决一个问题 要点: 1.让设计模式自然而然地出现在你的设计中,而不是为了使用而使用 2.设计模 ...
- Andriod Atom x86模拟器启动报错。
用Inter Atom模式的Android模拟器启动报一下错误: Starting emulator for AVD 'new' emulator: ERROR: x86 emulation curr ...