/*
题意:
两方对阵,互发导弹。防护罩可以让导弹原速反向。
每一枚导弹有发射时间航行时间伤害值。
防护罩也有开启时间和防御时间。
其中一方防护罩开启时间已知,求另一方防护罩合理安排开启时间使得己方受到的伤害最小。
思路:
假设己方的防护罩一只有效,那么我们可以根据对方防护罩的时间算出任何一枚导弹第一次落入己方和最后一次落入己方的时间。
然后类似扫描线的思维处理。
时间的计算可以直接来公式处理,也可以二分下...
比赛最后没出这题,细节问题没处理好,我的锅。 */ #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. C语言文法的理解

    <程序> ->  <外部声明> |  <程序>  <外部声明> <外部声明>  ->   <函数定义>  |  &l ...

  2. 二模 (15)day1

    第一题: 题目大意: 有两个长度为N的序列A和B,在A和B中各任取一个数相加可以得到N2个和,求这N2个和中最小的N个. 解题过程: 1.这题是刘汝佳<<训练指南>>上的一道经 ...

  3. Android 4.2以上的手机USB调试设置

    今天遇到一个问题,我手上有两部手机一部是红米.一部是中兴的青漾QY N986,两部手机的Android系统都是4.2.1的,连接到电脑测试,找了半天没有找到设置开发者选项,后来在网上找了半天,才发现g ...

  4. mysq常见问题

    1.Reading table information for completion of table and column names You can turn off this feature t ...

  5. ubuntu 13.04 tftp服务器建立

    本文参考博文:http://blog.chinaunix.net/uid-20718037-id-3194493.html 用tftp下载就需要要我们的主机上先安装tftp服务器.    1.安装软件 ...

  6. Ubuntu下快速安装LAMP server

    Ubuntu下可快速安装LAMP server(Apache+MySQL+PHP5). 首先,打开Ubuntu虚拟机,Terminal打开root权限:“sudo -s”. 一.安装LAMP serv ...

  7. IEEE参考文献格式

    IEEE参考文献格式 由于国外期刊参考文献与国内参考文献的格式有很大区别,其中最常用的参考文献为会议论文.书籍.期刊文献,所以特别在此记录说明,方便以后使用. 会议论文(Published Confe ...

  8. 使用HTML5+CSS3制作圆角内发光按钮----示例

    <!doctype html> <html> <head> <meta charset="utf-8" /> <title&g ...

  9. Activity之间数据传递(一)(简单传递,数据包Bundle,传递对象)

    一,简单传递(简单的字符串) 第一个activity通过putExtra()将字符串传入i protected void onCreate(Bundle savedInstanceState) { s ...

  10. js 点击复制内容

    <textarea id="pushUrlsTxt" rows="5" cols="55"></textarea> ...