/*
题意:
两方对阵,互发导弹。防护罩可以让导弹原速反向。
每一枚导弹有发射时间航行时间伤害值。
防护罩也有开启时间和防御时间。
其中一方防护罩开启时间已知,求另一方防护罩合理安排开启时间使得己方受到的伤害最小。
思路:
假设己方的防护罩一只有效,那么我们可以根据对方防护罩的时间算出任何一枚导弹第一次落入己方和最后一次落入己方的时间。
然后类似扫描线的思维处理。
时间的计算可以直接来公式处理,也可以二分下...
比赛最后没出这题,细节问题没处理好,我的锅。 */ #include<bits/stdc++.h>
using namespace std;
long long ta,tb,x;
struct st{
void read(){
scanf("%lld%lld%lld",&ta,&tac,&da);
}
long long st,ed,ta,tac,da,id;
};
st ziji[],diren[],rel[],bbb[];
bool cmp(st a,st b){
return a.st<b.st;
}
bool cmp2(st a,st b){
return a.ed<b.ed;
}
bool ms[];
int main(){
while(scanf("%lld%lld",&ta,&tb)!=EOF){
memset(ms,,sizeof(ms));
scanf("%lld",&x);
int n,m;
scanf("%d%d",&n,&m);
for(int i=;i<n;i++)ziji[i].read();
for(int i=;i<m;i++)diren[i].read();
int num=;
long long ans=;
for(int i=;i<n;i++){
if(ziji[i].ta+ziji[i].tac>x+tb||ziji[i].ta+ziji[i].tac<x)continue;
ziji[i].st=ziji[i].ta+ziji[i].tac*;
if(ziji[i].st+ziji[i].tac>x+tb)ziji[i].ed=ziji[i].st;
else{
ziji[i].ed=((x+tb-ziji[i].ta-ziji[i].tac)/(*ziji[i].tac)+)**ziji[i].tac+ziji[i].ta;
}
rel[num++]=ziji[i];
rel[num-].id=num-;
ans+=ziji[i].da;
}
for(int i=;i<m;i++){
diren[i].st=diren[i].ta+diren[i].tac;
if(diren[i].st+diren[i].tac>x+tb||diren[i].st+diren[i].tac<x)diren[i].ed=diren[i].st;
else{
diren[i].ed=((x+tb-diren[i].st-diren[i].tac)/(*diren[i].tac)+)**diren[i].tac+diren[i].st;
}
rel[num++]=diren[i];
rel[num-].id=num-;
ans+=diren[i].da;
}
for(int i=;i<num;i++)bbb[i]=rel[i];
sort(rel,rel+num,cmp);
sort(bbb,bbb+num,cmp2);
long long gg=ans,sst=rel[].st,bf=,xx=;
for(int i=;i<num;){
gg+=bf;
bf=;
sst=rel[i].st;
while(i<num&&rel[i].st==sst){
if(rel[i].ed<=sst+ta){
bf+=rel[i].da;
if(ms[rel[i].id]==){
ms[rel[i].id]=;
gg-=rel[i].da;
}
}
i++;
}
while(xx<num&&bbb[xx].ed<=sst+ta){
if(ms[bbb[xx].id]==&&bbb[xx].st>=sst){
ms[bbb[xx].id]=;
gg-=bbb[xx].da;
}
xx++;
}
ans=min(gg,ans);
}
printf("%lld\n",ans);
}
}

hihocoder 1391 [扫描线]的更多相关文章

  1. 离线树状数组 hihocoder 1391 Countries

    官方题解: // 离线树状数组 hihocoder 1391 Countries #include <iostream> #include <cstdio> #include ...

  2. hihocoder 1391 树状数组

    #1391 : Countries 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 There are two antagonistic countries, countr ...

  3. hihoCoder 1391 Countries【预处理+排序+优先队列】2016北京网络赛

    题目:http://hihocoder.com/problemset/problem/1391 题目大意: A和B两个国家互射导弹,每个国家都有一个防御系统,在防御系统开启的时间内可以将到达本国的导弹 ...

  4. hihoCoder 1391 Countries 【预处理+排序+堆】 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2016)网络赛)

    #1391 : Countries 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 There are two antagonistic countries, countr ...

  5. 2016北京网络赛 hihocoder 1391 Countries 树状数组

    Countries   描述 There are two antagonistic countries, country A and country B. They are in a war, and ...

  6. HihoCoder - 1652:三角形面积和2(扫描线)

    题意:给定X轴上的一些三角形,求面积并. 每个三角形的给出形式是Li,Ri,Xi,Yi,表示三个顶点分别是(Li,0):(Ri,0):(Xi,Yi),且满足Li<=Xi<=Ri: 思路:我 ...

  7. BZOJ 1391: [Ceoi2008]order [最小割]

    1391: [Ceoi2008]order Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 1509  Solved: 460[Submit][Statu ...

  8. hihocoder -1121-二分图的判定

    hihocoder -1121-二分图的判定 1121 : 二分图一•二分图判定 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 大家好,我是小Hi和小Ho的小伙伴Net ...

  9. Hihocoder 太阁最新面经算法竞赛18

    Hihocoder 太阁最新面经算法竞赛18 source: https://hihocoder.com/contest/hihointerview27/problems 题目1 : Big Plus ...

随机推荐

  1. application loader上传报90158错误

    ERROR ITMS-90158:"The following URL schemes found in your app are not in the current format:[XX ...

  2. 在MacOX下安装python-opencv

    下载好opencv之后 1. 在文件夹下新建一个release或build的文件夹: 2. cmake . make 3.在该build文件夹下 nano .bash_profile 把python的 ...

  3. 转 纯CSS设置Checkbox复选框控件的样式

    Checkbox复选框是一个可能每一个网站都在使用的HTML元素,但大多数人并不给它们设置样式,所以在绝大多数网站它们看起来是一样的.为什么不把你的网站中的Checkbox设置一个与众不同的样式,甚至 ...

  4. XML Schema的基本语法(转)

    XML Schema的基本语法(转) XSDL(XML Schema定义语言)由元素.属性.命名空间和XML文档种的其他节点构成的. 一.XSD中的元素 XSD文档至少要包含:schema根元素和XM ...

  5. CCLabel在最大宽度已知的情况下如何获取实际宽高

    当前环境在cocos2.2.6, 在UI摆图中,会遇到一种情况就是 设定了label的最大宽度MAX_WIDTH,但label的内容是动态的,如何在label输入了文字之后获取label的真实宽高? ...

  6. PAT (Basic Level) Practise:1028. 人口普查

    [题目链接] 某城镇进行人口普查,得到了全体居民的生日.现请你写个程序,找出镇上最年长和最年轻的人. 这里确保每个输入的日期都是合法的,但不一定是合理的——假设已知镇上没有超过200岁的老人,而今天是 ...

  7. UVa 四叉树

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  8. Codeforces Round #159 (Div. 2)

    A. Sockets 当插口数不够时,显然找最大\(a_i\)进行扩展. B. Playing Cubes 枚举起始颜色,Petya会尽可能相同颜色,Vasya则相反. C. View Angle 极 ...

  9. set的应用

    头文件 ;#include <set> 简单应用: begin()     返回set容器的第一个元素 end()   返回set容器的最后一个元素 clear()        删除se ...

  10. JavaScript中的document.cookie的使用

    转:http://blog.csdn.net/liuyong0818/article/details/4807473 我们已经知道,在 document 对象中有一个 cookie 属性.但是 Coo ...