/*
orz claris,这个题的解法非常巧妙,首先是时间问题,其实这个问题只要离线处理一下就可以了,把物品和询问都按照时间排序,然后看一下能不能满足。然后,因为容量<=10^9,显然是不可能开一个这么大的数组,而且这么大一个容量,价值又很小,我们可以考虑用二分解决
对每个询问二分答案,需要判定用容量为 M 的背包是否可
以装下 mid 的价值。
设 fi 表示装了 i 价值所需的最小容量,gi 表示
min(fi,fi+1,fi+2,……)。
那么只需要检查 gmid 是否不超过 M 即可。
时间复杂度 O(n2v + m log m)。
*/
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=,M=,inf=;
int n,m,lim,i,j,f[M],ans[M];
struct P{int t,c,v;}a[N];
struct Q{int t,m,p;}b[M];
bool cmpP(const P&a,const P&b){return a.t<b.t;}
bool cmpQ(const Q&a,const Q&b){return a.t<b.t;}
void add(int c,int v){
for(int i=lim;i>=v;i--)f[i]=min(f[i],f[i-v]+c);
for(int i=lim-;~i;i--)f[i]=min(f[i],f[i+]);
}
int ask(int x){
int l=,r=lim,mid,t;
while(l<=r)if(f[mid=(l+r)>>]<=x)l=(t=mid)+;else r=mid-;
return t;
}
int main(){
freopen("market.in","r",stdin);freopen("market.out","w",stdout);
scanf("%d%d",&n,&m);lim=n*;
for(i=;i<=n;i++)scanf("%d%d%d",&a[i].c,&a[i].v,&a[i].t);
for(i=;i<=m;i++)scanf("%d%d",&b[i].t,&b[i].m),b[i].p=i;
sort(a+,a+n+,cmpP);
sort(b+,b+m+,cmpQ);
for(i=;i<=lim;i++)f[i]=inf;
for(i=j=;i<=m;i++){
while(j<=n&&a[j].t<=b[i].t)add(a[j].c,a[j].v),j++;
ans[b[i].p]=ask(b[i].m);
}
for(i=;i<=m;i++)printf("%d\n",ans[i]);
fclose(stdin);fclose(stdout);
return ;
}

LYDSY模拟赛day2 Market的更多相关文章

  1. LYDSY模拟赛day2 Divisors

    /* 注意分解质因数,如果i是,那么n/i也是,这样就可以解决分解质因数的时间问题了 当 k ≥ 1 时,只有这些数的约数才会对答案产生贡献. 求出 m 个数的所有不超过 n 的约数,去重后统计即可. ...

  2. LYDSY模拟赛day2 Dash Speed

    /* 弃坑 */ #include<cstdio> #include<algorithm> using namespace std; ,M=N*; ],nxt[N<< ...

  3. CH Round #58 - OrzCC杯noip模拟赛day2

    A:颜色问题 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2358%20-%20OrzCC杯noip模拟赛day2/颜色问题 题解:算一下每个仆人到它的目的地 ...

  4. CH Round #49 - Streaming #4 (NOIP模拟赛Day2)

    A.二叉树的的根 题目:http://www.contesthunter.org/contest/CH%20Round%20%2349%20-%20Streaming%20%234%20(NOIP 模 ...

  5. CH Round #55 - Streaming #6 (NOIP模拟赛day2)

    A.九九归一 题目:http://ch.ezoj.tk/contest/CH%20Round%20%2355%20-%20Streaming%20%236%20(NOIP模拟赛day2)/九九归一 题 ...

  6. LYDSY模拟赛day9 2048

    /* 大模拟题,做的时候思路还是比较清晰的 */ #include<iostream> #include<cstdio> #include<string> #inc ...

  7. CH Round #55 - Streaming #6 (NOIP模拟赛day2)解题报告

    T1九九归一 描述 萌蛋在练习模n意义下的乘法时发现,总有一些数,在自乘若干次以后,会变成1.例如n=7,那么5×5 mod 7=4,4×5 mod 7=6,6×5 mod 7=2,2×5 mod 7 ...

  8. PKUSC 模拟赛 day2 下午总结

    终于考完了,下午身体状况很不好,看来要锻炼身体了,不然以后ACM没准比赛到一半我就挂掉了 下午差点AK,有一道很简单的题我看错题面了所以没有A掉 第一题显然是非常丝薄的题目 我们很容易通过DP来O(n ...

  9. 【洛谷】NOIP提高组模拟赛Day2【动态开节点/树状数组】【双头链表模拟】

    U41571 Agent2 题目背景 炎炎夏日还没有过去,Agent们没有一个想出去外面搞事情的.每当ENLIGHTENED总部组织活动时,人人都说有空,结果到了活动日,却一个接着一个咕咕咕了.只有不 ...

随机推荐

  1. Linux服务器磁盘扩展和oracle表空间文件迁移操作记录

    1.环境介绍 服务器硬件:Dell R710 服务器OS:红帽子Linux   RHEL4.8 数据库:Oracle 10g 2.出现的问题 因为数据表每天有上百万的数据写入表,加上建立索引,导致表空 ...

  2. 识别 Linux上的设备(磁盘)类型

    1. Linux 上的设备 (device) Linux 操作系统中,各种设备驱动(device driver)通过设备控制器(device controller)来管理各种设备(device),其关 ...

  3. 我的CS考研路

    说在前面 从去年7月15号正式准备考研以来,直到今天,3月19号,一共经历8个多月,考研初步告捷,在此想跟大家分享一下自己的经验,希望能对接下来考研的学弟学妹们有所帮助. 首先介绍下我自己的情况,本科 ...

  4. $(this)与this的区别

    相信很多刚接触JQuery的人,很多都会对$(this)和this的区别模糊不清,那么这两者有什么区别呢? 首先来看看JQuery中的  $()  这个符号,实际上这个符号在JQuery中相当于JQu ...

  5. iOS 2D绘图 (Quartz2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)

    博客原地址:http://blog.csdn.net/hello_hwc?viewmode=list 让我们继续跟着大神的脚步前进吧.这一次 我们学习一些Quartz 2D 最基本的一些用法. 前言: ...

  6. jquery获取父元素及祖先元素

    parent是找当前元素的第一个父节点,parents是找当前元素的所有父节点 先说一下parent和parents的区别 从字面上不难看出 parent是指取得一个包含着所有匹配元素的唯一父元素的元 ...

  7. Linux下安装VMware Tools 的方法

    1.按下 CTRL + ALT  组合键,进入主操作系统,点击VMware虚拟机菜单下的安装虚拟机工具子菜单. 菜单:VM->Install VMware tools....(虚拟机->安 ...

  8. AD_TLC549采集模拟信号

    AD_TLC549采集模拟信号 实验原理 芯片介绍 TLC549是 TI公司生产的一种低价位.高性能的8位A/D转换器,它以8位开关电容逐次逼近的方法实现 A/D转换,其转换速度小于 17us,最大转 ...

  9. php 文件上传

    核心:bool: move_uploaded_file(file,newlocation);   //将文件保存到别的位置,如果成功返回true,

  10. 线段树 HDU 3308

    t 题目大意:给你n个数,m个操作.操作有两种:1.U x y 将数组第x位变为y   2. Q x y 问数组第x位到第y位连续最长子序列的长度.对于每次询问,输出一个答案 #include< ...