题目链接:

Countries

时间限制:1000ms
单点时限:1000ms
内存限制:256MB

描述

There are two antagonistic countries, country A and country B. They are in a war, and keep launching missiles towards each other.

It is known that country A will launch N missiles. The i-th missile will be launched at time Tai. It flies uniformly and take time Taci from one country to the other. Its damage capability is Dai.

It is known that country B will launch M missiles. The i-th missile will be launched at time Tbi.

It flies uniformly and takes time Tbci from one country to the other. Its damage capability is Dbi.

Both of the countries can activate their own defending system.

The defending system of country A can last for time TA, while The defending system of country B can last for time TB.

When the defending system is activated, all missiles reaching the country will turn around and fly back at the same speed as they come.

At other time, the missiles reaching the country will do damages to the country.
(Note that the defending system is still considered active at the exact moment it fails)

Country B will activate its defending system at time X.

When is the best time for country A to activate its defending system? Please calculate the minimal damage country A will suffer.

输入

There are no more than 50 test cases.

For each test case:

The first line contains two integers TA and TB, indicating the lasting time of the defending system of two countries.

The second line contains one integer X, indicating the time that country B will active its defending system.

The third line contains two integers N and M, indicating the number of missiles country A and country B will launch.

Then N lines follow. Each line contains three integers Tai, Taci and Dai, indicating the launching time, flying time and damage capability of the i-th missiles country A launches.

Then M lines follow. Each line contains three integers Tbi, Tbci and Dbi, indicating the launching time, flying time and damage capability of the i-th missiles country B launches.

0 <= TA, TB, X, Tai, Tbi<= 100000000

1 <= Taci, Tbci <= 100000000

0 <= N, M <= 10000

1 <= Dai, Dbi <= 10000

输出

For each test case, output the minimal damage country A will suffer.

提示

In the first case, country A should active its defending system at time 3.

Time 1: the missile is launched by country A.

Time 2: the missile reaches country B, and country B actives its defending system, then the missile turns around.

Time 3: the missile reaches country A, and country A actives its defending system, then the missile turn around.

Time 4: the missile reaches country B and turns around.

Time 5: the missile reaches country A and turns around.

Time 6: the missile reaches country B, causes damages to country B.

样例输入
2 2
2
1 0
1 1 10
4 5
3
2 2
1 2 10
1 5 7
1 3 2
0 4 8
样例输出
0
17 题意: A,B两国互发导弹,A发n个给了发射时间,到达另一国的时间,和伤害力,B发m个也是一样,
还有就是A,B两国的防御系统的开启时长,B国给了开启时间,现在问A国什么时候打开防御系统才能使伤害最小; 思路: 我们把有可能打到A国的导弹如果要它打在b国需要A国开启的时间段[l,r],然后就转变成了给了一些线段,线段有权值,然后完全覆盖才能取这个权值.然后求最大值;
右端点排序后,枚举左端点,优先队列维护就好了,也算是一个经典模型了; AC代码:
#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=1e4+10;
int Ta,Tb,x,n,m,st[2*maxn],co[2*maxn],da[2*maxn],g[2*maxn];
struct node
{
int l,r,da;
}po[2*maxn];
int cmp(node a,node b)
{
return a.r<b.r;
}
struct MO
{
int l,da;
friend bool operator< (const MO &a ,const MO &b)
{
return a.l>b.l;
}
}ha;
priority_queue<MO>qu;
int main()
{
//freopen("int.txt","r",stdin);
while(scanf("%d%d",&Ta,&Tb)!=EOF)
{
while(!qu.empty())qu.pop();
scanf("%d",&x);
scanf("%d%d",&n,&m);
LL sum=0;
int cnt=0,u,v,w,num=0;
for(int i=1;i<=n;i++)
{
scanf("%d%d%d",&u,&v,&w);
if(u+v>=x&&u+v<=x+Tb)
{
st[cnt]=u+v;
co[cnt]=v;
da[cnt]=w;
cnt++;
}
}
for(int i=1;i<=m;i++,cnt++)scanf("%d%d%d",&st[cnt],&co[cnt],&da[cnt]);
for(int i=0;i<cnt;i++)
{
sum=sum+da[i];
int temp=st[i]+2*co[i];int l=st[i]+co[i],r;
if(temp>=x&&temp<=Tb+x)
{
int len=(x+Tb-temp)/(2*co[i]);
r=temp+co[i]+len*2*co[i];
if(r-l>Ta)continue;
po[++num].l=l;po[num].r=r;po[num].da=da[i];
g[num]=l;
}
else
{
r=l;
po[++num].l=l;po[num].r=r;po[num].da=da[i];
g[num]=l;
}
}
sort(po+1,po+num+1,cmp);
sort(g+1,g+num+1);
LL ans=sum,d=0;
int fr=1;
g[0]=-1;
for(int i=1;i<=num;i++)
{
if(g[i]==g[i-1])continue;
int hi=g[i]+Ta;
while(po[fr].r<=hi&&fr<=num)
{
ha.l=po[fr].l;
ha.da=po[fr].da;
d=d+ha.da;
qu.push(ha);
fr++;
}
while(!qu.empty())
{
ha=qu.top();
if(ha.l<g[i])
{
qu.pop();
d=d-ha.da;
}
else break;
}
ans=min(ans,sum-d);
}
printf("%lld\n",ans);
}
}

  

hihocoder-1391&&北京网赛09 Countries(优先队列)的更多相关文章

  1. ACM学习历程—Hihocoder 1233 Boxes(bfs)(2015北京网赛)

    hihoCoder挑战赛12 时间限制:1000ms 单点时限:1000ms 内存限制:256MB   描述 There is a strange storehouse in PKU. In this ...

  2. 北京网赛I题 hiho1391 (树状数组、区间覆盖最大值问题)

    题目链接:http://hihocoder.com/problemset/problem/1391 题意:A国和B国向对方分别投射N枚和M枚导弹(发射时间,飞行时间,伤害值),同时两国各自都有防御系统 ...

  3. hihoCoder1388 Periodic Signal(2016北京网赛F:NTT)

    题目 Source http://hihocoder.com/problemset/problem/1388 Description Profess X is an expert in signal ...

  4. 2015年北京网赛 boxes(bfs)

    题目链接: http://hihocoder.com/problemset/problem/1233 题目描述: 给定最多七个箱子,每个箱子的重量都不相同,每次都可以将一个箱子放在相邻的位置上,如果相 ...

  5. hihocoder-1389&&2016北京网赛07 Sewage Treatment(二分+网络流)

    题目链接: Sewage Treatment 时间限制:2000ms 单点时限:2000ms 内存限制:256MB 描述 After years of suffering, people could ...

  6. hiho 1227 找到一个恰好包含n个点的圆 (2015北京网赛 A题)

    平面上有m个点,要从这m个点当中找出n个点,使得包含这n个点的圆的半径(圆心为n个点当中的某一点且半径为整数)最小,同时保证圆周上没有点. n > m 时要输出-1 样例输入43 2 0 0 1 ...

  7. ACM学习历程—HDU5476 Explore Track of Point(平面几何)(2015上海网赛09题)

    Problem Description In Geometry, the problem of track is very interesting. Because in some cases, th ...

  8. 离线树状数组 hihocoder 1391 Countries

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

  9. 2014年北京网络赛 Instrusive HDU 5040 题解 优先队列

    网赛的时候看了这道题,发现就是平常的那种基础搜索题. 由于加了一个特殊条件:可以一次消耗3秒或原地停留1秒. 那就不能使用简单的队列了,需要使用优先队列才行. 题意 告诉一副地图:一个起点,一个终点, ...

随机推荐

  1. Spring管理 hibernate 事务配置的五种方式

    Spring配置文件中关于事务配置总是由三个组成部分,DataSource.TransactionManager和代理机制这三部分,无论是那种配置方法,一般变化的只是代理机制这块! 首先我创建了两个类 ...

  2. php学习笔记:文件的上传(包含设置文件的上传大小限制)

    今天写的是文件上传,前几天自学的正规则又忘记了,用了很笨的方法去判断格式,直接上代码: <?php /** * Created by PhpStorm. * User: Administrato ...

  3. .NET AES加解密(128位)

    AES加密(128位): /// <summary> /// 有密码的AES加密 /// </summary> internal static string Encrypt(s ...

  4. 初识 easyui datagrid

    首先应该下载好easyui datagrid所用的各种js 和css 这个可以到官网上去下载. 首先要引入datagrid所引入的js和css. <script src="js/jqu ...

  5. 项目、SVN clean的一些事

    1.如果你发现你的文件修改了.Tomcat也重新了,但访问的还是旧的文件,这个时候你需要clean下你的项目. Clean will discard all build problems and bu ...

  6. SharePoint Server 2010 & WorkFlow related Limits

    Today, I have come across different workflow related limits for SharePoint Server 2010. Limit Maximu ...

  7. Intent传递对象的两种方法

    Android为intent提供了两种传递对象参数类型的方法 分别需要使实体类实现Serializable接口.Parcelable接口 首先我们要知道,传递对象,需要先将对象序列化 一.那么为什么要 ...

  8. Struts2原理

    Struts 2以WebWork优秀的设计思想为核心,吸收了Struts 1的部分优点,建立了一个兼容WebWork和Struts 1的MVC框架,Struts 2的目标是希望可以让原来使用Strut ...

  9. iOS 界面调试利器Reveal

    Reveal下载地址:http://revealapp.com/ ,目前要收费了,而且还不便宜,好东西都这样嘛~ 针对越狱设备和非越狱设备可以采取不同的方法,一种是在工程项目中加入Reveal.fra ...

  10. fatal error: file '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Dev

    类似这样的错误: fatal error: file '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.pla ...