官方题解:

 // 离线树状数组 hihocoder 1391 Countries

 #include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <vector>
#include <math.h>
#include <memory.h>
using namespace std;
#define LL long long
typedef pair<int,int> pii;
const LL inf = 0x3f3f3f3f;
const LL MOD =100000000LL;
// const int N = 1e5+10;
const double eps = 1e-;
void fre() {freopen("in.txt","r",stdin);}
void freout() {freopen("out.txt","w",stdout);}
inline int read() {int x=,f=;char ch=getchar();while(ch>''||ch<'') {if(ch=='-') f=-; ch=getchar();}while(ch>=''&&ch<='') {x=x*+ch-'';ch=getchar();}return x*f;}
const int MAXN = ;
struct node{
LL l,r,v;
}N[MAXN]; LL f[MAXN],x[MAXN];
int cmp(node a,node b){
return a.r<b.r;
}
void add(LL w,LL v){
for(;w<=MAXN;w+=w&(-w)) f[w]+=v;
}
LL getsum(LL w){
LL sum=;
for(;w;w-=w&(-w)) sum+=f[w];
return sum;
} int main(){
LL n,m,bs,nn,M;
while(~scanf("%lld%lld",&n,&m)){
memset(f,,sizeof(f));
memset(x,,sizeof(x));
scanf("%lld",&bs);
scanf("%lld%lld",&nn,&M);
LL r=m+bs;
LL k=;
LL sum=;
for(LL i=;i<=nn;i++){
LL s,t,v;
scanf("%lld%lld%lld",&s,&t,&v);
if(s+t<bs||s+t>r) continue;
else{
N[++k].l=s+*t,N[k].r=s+*t+(r-s-t)/(*t)**t;
N[k].v=v;
sum+=v;
}
}
for(LL i=;i<=M;i++){
LL s,t,v;
scanf("%lld%lld%lld",&s,&t,&v);
N[++k].l=s+t,N[k].v=v;
sum+=v;
if(s+t*<bs||s+t*>r) N[k].r=N[k].l;
else{
N[k].r=s+*t+(r-s-*t)/(*t)**t;
}
}
LL g=k;
k=;
for(LL i=;i<=g;i++){
x[++k]=N[i].l,x[++k]=N[i].r,x[++k]=N[i].r-n;
}
sort(N+,N++g,cmp);
sort(x+,x++k);
k=unique(x+,x++k)-x-;
LL ans=-inf;
for(LL i=;i<=g;i++){
LL w,pre,now;
w=lower_bound(x+,x++k,N[i].l)-x;
now=lower_bound(x+,x++k,N[i].r)-x;
pre=lower_bound(x+,x++k,N[i].r-n)-x;
add(w,N[i].v);
ans=max(ans,getsum(now)-getsum(pre-));
}
printf("%lld\n",sum-ans);
}
return ;
}

离线树状数组 hihocoder 1391 Countries的更多相关文章

  1. POJ 3416 Crossing --离线+树状数组

    题意: 给一些平面上的点,然后给一些查询(x,y),即以(x,y)为原点建立坐标系,一个人拿走第I,III象限的点,另一个人拿II,IV象限的,点不会在任何一个查询的坐标轴上,问每次两人的点数差为多少 ...

  2. HDU 2852 KiKi's K-Number(离线+树状数组)

    题目链接 省赛训练赛上一题,貌似不难啊.当初,没做出.离线+树状数组+二分. #include <cstdio> #include <cstring> #include < ...

  3. CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组

    题目链接:CF #365 (Div. 2) D - Mishka and Interesting sum 题意:给出n个数和m个询问,(1 ≤ n, m ≤ 1 000 000) ,问在每个区间里所有 ...

  4. CF #365 (Div. 2) D - Mishka and Interesting sum 离线树状数组(转)

    转载自:http://www.cnblogs.com/icode-girl/p/5744409.html 题目链接:CF #365 (Div. 2) D - Mishka and Interestin ...

  5. HDU3333 Turing Tree 离线树状数组

    题意:统计一段区间内不同的数的和 分析:排序查询区间,离线树状数组 #include <cstdio> #include <cmath> #include <cstrin ...

  6. 13年山东省赛 Boring Counting(离线树状数组or主席树+二分or划分树+二分)

    转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 2224: Boring Counting Time Limit: 3 Sec   ...

  7. 区间的关系的计数 HDU 4638 离线+树状数组

    题目大意:给你n个人,每个人都有一个id,有m个询问,每次询问一个区间[l,r],问该区间内部有多少的id是连续的(单独的也算是一个) 思路:做了那么多离线+树状数组的题目,感觉这种东西就是一个模板了 ...

  8. BZOJ_2743_[HEOI2012]采花_离线+树状数组

    BZOJ_2743_[HEOI2012]采花_离线+树状数组 Description 萧芸斓是Z国的公主,平时的一大爱好是采花.今天天气晴朗,阳光明媚,公主清晨便去了皇宫中新建的花园采花 .花园足够大 ...

  9. SPOJ DQUERY - D-query (莫队算法|主席树|离线树状数组)

    DQUERY - D-query Given a sequence of n numbers a1, a2, ..., an and a number of d-queries. A d-query ...

随机推荐

  1. linux poll

    man poll: NAME poll, ppoll - wait for some event on a file descriptor SYNOPSIS #include <poll.h&g ...

  2. BZOJ 2754 喵星球上的点名(后缀数组)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2754 题意:给出n个字典串,m个询问串.输出每个询问串出现在多少个字典串中.最后输出每个 ...

  3. hibernate学习笔记6--Criteria查询方式、完整小练习(开发步骤)

    一.Criteria查询方式没有sql语了,因此更加面向对象一些.Criteria是一种比HQL更面向对象的查询方式:Criteria的创建方式: Criteria c = s.createCrite ...

  4. hibernate的save()和persit()之间的区别

    这个问题啊,我在传智的Hibernate 视频上有小段讲解,save() 和persist() 都是持久化的保存,这两个方法在已经开启事物的情况下没多大区别:在不开启事物的时候save()方法会把数据 ...

  5. IE下easyui 缓存问题

    $.ajaxSetup ({   cache: false //关闭AJAX相应的缓存 }); 这一句话就足够了,很管用!

  6. NHibernate 二级缓冲

    session.CreateCriteria(typeof(SysModuleFields)).SetCacheable(true).List<SysModuleFields>(); se ...

  7. 如何在Android studio中同时打开多个工程? (转载)

    最近学习Android Studio,想同时打开两个Project.但是点击File->Open之后,原有的Project被关闭掉了.怎么在新的窗口中打开Project呢? 解决: 点击Help ...

  8. C#生成图形验证码

    先看效果: 再上代码 public class CaptchaHelper { private static Random rand = new Random(); private static in ...

  9. Codeforces 279 B Books

    题意:给出n本书,总的时间t,每本书的阅读时间a[i],必须按照顺序来阅读,问最多能够阅读多少本书 有点像紫书的第七章讲的那个滑动区间貌似 维护一个区间的消耗的时间小于等于t,然后维护一个区间的最大值 ...

  10. 【英语】Bingo口语笔记(78) - let系列