UVALive 4731 dp+贪心
这个题首先要利用题目的特性,先贪心,否则无法进行DP
因为求期望的话,越后面的乘的越大,所以为了得到最小值,应该把概率值降序排序,把大的数跟小的系数相乘
然后这种dp的特性就是转移的时候,由 i推到i+1每次添加一个数,就要考虑这个新数应该和谁放在一组,枚举他放在哪一组即可
dp[i][j]代表当前第i个数有j个分组时候的最小值
dp[i][j]=dp[k][j-1]+i(prefix[i]-prefix[k-1]),k代表枚举第几个数开始和当前新添加的数为一组,prefix为前缀和,为了迅速得出区间和
注意边界处理和一些细节
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <set>
#define LL __int64
using namespace std;
struct node
{
int x,y;
bool operator < (const node&rhs) const
{
if (x==rhs.x) return y<rhs.y;
return x<rhs.x;
}
}tasks[100010];
bool cmp(node a,node b)
{
if (a.x==b.x) return a.y<b.y;
return a.x<b.x;
}
int n,m;
multiset<node> v;
multiset<node>::iterator it;
/*
int bs(int p,int q)
{
int L=0,R=v[p].size(),mid;
while (L<R)
{
mid=(L+R)>>1;
if (v[p][mid]<tasks[q].x) L=mid+1;
else R=mid;
}
return L;
}
*/
int main()
{
int a,b;
while (scanf("%d%d",&m,&n)!=EOF)
{
int maxn=0;
v.clear();
for (int i=1;i<=m;i++){
scanf("%d%d",&a,&b);
v.insert((node){a,b});
maxn=max(b,maxn);
}
for (int i=1;i<=n;i++){
scanf("%d%d",&a,&b);
tasks[i].x=a;
tasks[i].y=b;
}
sort(tasks+1,tasks+1+n);
//for (int i=0;i<=maxn;i++) sort(v[i].begin(),v[i].end());
LL ans=0;
int sum=0;
for (int i=n;i>=1;i--){
it=v.lower_bound(tasks[i]);
if (it==v.end()) continue;
else{
v.erase(it);
ans+=(LL)tasks[i].x*500+(LL)tasks[i].y*2;
sum++; }
}
printf("%d %I64d\n",sum,ans);
}
return 0;
}
UVALive 4731 dp+贪心的更多相关文章
- 【bzoj4027】[HEOI2015]兔子与樱花 树形dp+贪心
		
题目描述 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接,我们可以把它 ...
 - BZOJ 2021 [Usaco2010 Jan]Cheese Towers:dp + 贪心
		
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2021 题意: John要建一个奶酪塔,高度最大为m. 他有n种奶酪.第i种高度为h[i]( ...
 - 洛谷P2507 [SCOI2008]配对 题解(dp+贪心)
		
洛谷P2507 [SCOI2008]配对 题解(dp+贪心) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1299251 链接题目地址:洛谷P2507 [S ...
 - UVALive 4731 Cellular Network(贪心,dp)
		
分析: 状态是一些有序的集合,这些集合互不相交,并集为所有区域.显然枚举集合元素是哪些是无法承受的, 写出期望的计算式,会发现,当每个集合的大小确定了以后,概率大的优先访问是最优的. 因此先对u从大到 ...
 - UVaLive 4731 Cellular Network (期望DP)
		
题意:手机在蜂窝网络中的定位是一个基本问题,假设蜂窝网络已经得知手机处于c1,c2,,,cn这些区域中的一个,最简单的方法是同时在这些区域中寻找手机, 但这样做很浪费带宽,由于蜂窝网络中可以得知手机在 ...
 - 【BZOJ-1046】上升序列    DP + 贪心
		
1046: [HAOI2007]上升序列 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3723 Solved: 1271[Submit][Stat ...
 - Codeforces 675E Trains and Statistic(DP + 贪心 + 线段树)
		
题目大概说有n(<=10W)个车站,每个车站i卖到车站i+1...a[i]的票,p[i][j]表示从车站i到车站j所需买的最少车票数,求所有的p[i][j](i<j)的和. 好难,不会写. ...
 - 【HDU 2546】饭卡(DP+贪心)
		
贪心:最贵的留到最后买.状态转移方程:dp[j]=dp[j+a[i]]|dp[j],dp[i]表示余下i元. 原来就不足5元,那就不能买啦. #include<cstdio> #inclu ...
 - POJ 1065 Wooden Sticks / hdu 1257 最少拦截系统  DP 贪心
		
参考链接:http://blog.csdn.net/xiaohuan1991/article/details/6956629 (HDU 1257 解题思路一样就不继续讲解) POJ 1065题意:给你 ...
 
随机推荐
- SSH框架搭建 笔记 (含spring注解驱动)
			
分类: web 开发2014-04-27 12:33 354人阅读 评论(0) 收藏 举报 框架springinterface注解 好久没有搭建框架了,今天整理下以前的知识,整合下SSH,没想到手生了 ...
 - mysql any和all的用法
			
1.ANY关键字假设any内部的查询语句返回的结果个数是三个,如:result1,result2,result3,那么, select ...from ... where a > any(. ...
 - 前端学习(20)~css布局(十三)
			
常见的布局属性 (1)display 确定元素的显示类型: block:块级元素. inline:行内元素. inline-block:对外的表现是行内元素(不会独占一行),对内的表现是块级元素(可以 ...
 - Rabbitmq与spring整合之重要组件介绍——rabbitAdmin组件
			
rabbitAdmin组件是一个管理组件,主要是用户通过该组件进行rabbitmq的队列交换器虚拟主机等等进行操作.这里面有些教程说不用声明可以直接绑定,但是本博主运行时,不生命情况下就会报错,可能是 ...
 - PLsql的汉化工具
			
链接:https://pan.baidu.com/s/19J-px5I_7qcMb5CHDwJZZQ 密码:pr89
 - 043、Java中逻辑运算之实现位与操作
			
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
 - thread.start和threadstart.invoke的区别
			
new Thread(() =>refreshDGVdelegate(App.StockList)).Start();//在新线程中执行操作 new ThreadStart(() => r ...
 - PG、GP与MySQL的特点和区别
			
参考 PostgreSQL数据库 介绍:PostgreSQL是一种运行在Unix和Linux操作系统(在NT平台借助Cygnus也可以运行)平台上的免费的开放源码的关系数据库.最早是由美国加州大学伯克 ...
 - UVA 12511/CSU 1120 virus 最长公共上升子序列
			
第一次接触一个这最长公共上升子序列 不过其实搞清楚了跟最长公共子序列和 最长上升子序列如出一辙 两重循环,对于当前不相等的,等于前一个的值,相等的,等于比当前A[i]小的最大值+1.弄个临时变量记录最 ...
 - Tornadao Cookie
			
cookie的详细介绍.Tronado带签名的cookie原理.基于cookie实现用户验证 cookie详细介绍 cookie本质就是存于浏览器的 键值对. 特性: 每次http请求服务端的时候,都 ...