hihocoder 1391 [扫描线]
/*
题意:
两方对阵,互发导弹。防护罩可以让导弹原速反向。
每一枚导弹有发射时间航行时间伤害值。
防护罩也有开启时间和防御时间。
其中一方防护罩开启时间已知,求另一方防护罩合理安排开启时间使得己方受到的伤害最小。
思路:
假设己方的防护罩一只有效,那么我们可以根据对方防护罩的时间算出任何一枚导弹第一次落入己方和最后一次落入己方的时间。
然后类似扫描线的思维处理。
时间的计算可以直接来公式处理,也可以二分下...
比赛最后没出这题,细节问题没处理好,我的锅。 */ #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 [扫描线]的更多相关文章
- 离线树状数组 hihocoder 1391 Countries
官方题解: // 离线树状数组 hihocoder 1391 Countries #include <iostream> #include <cstdio> #include ...
- hihocoder 1391 树状数组
#1391 : Countries 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 There are two antagonistic countries, countr ...
- hihoCoder 1391 Countries【预处理+排序+优先队列】2016北京网络赛
题目:http://hihocoder.com/problemset/problem/1391 题目大意: A和B两个国家互射导弹,每个国家都有一个防御系统,在防御系统开启的时间内可以将到达本国的导弹 ...
- hihoCoder 1391 Countries 【预处理+排序+堆】 (ACM-ICPC国际大学生程序设计竞赛北京赛区(2016)网络赛)
#1391 : Countries 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 There are two antagonistic countries, countr ...
- 2016北京网络赛 hihocoder 1391 Countries 树状数组
Countries 描述 There are two antagonistic countries, country A and country B. They are in a war, and ...
- HihoCoder - 1652:三角形面积和2(扫描线)
题意:给定X轴上的一些三角形,求面积并. 每个三角形的给出形式是Li,Ri,Xi,Yi,表示三个顶点分别是(Li,0):(Ri,0):(Xi,Yi),且满足Li<=Xi<=Ri: 思路:我 ...
- BZOJ 1391: [Ceoi2008]order [最小割]
1391: [Ceoi2008]order Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 1509 Solved: 460[Submit][Statu ...
- hihocoder -1121-二分图的判定
hihocoder -1121-二分图的判定 1121 : 二分图一•二分图判定 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 大家好,我是小Hi和小Ho的小伙伴Net ...
- Hihocoder 太阁最新面经算法竞赛18
Hihocoder 太阁最新面经算法竞赛18 source: https://hihocoder.com/contest/hihointerview27/problems 题目1 : Big Plus ...
随机推荐
- c# 配置文件之configSections配置(二)
在很多时候我们需要自定义我们自己的自定义App.config 文件,而微软为我们提供了默认的 System.Configuration.DictionarySectionHandler System. ...
- 爬虫:pycurl模块的使用说明
pycurl参考文档:http://pycurl.io/docs/latest/index.html 是英文文档,看起来也不是特么吃力跟着做问题不大. #coding=utf-8 import p ...
- C#深度拷贝和浅度拷贝方法
C#浅度拷贝多用于值类型的复制,即 int a=1;int b=a; 设置b=2后不会影响a的值. 但如果对于引用类型class a=new class(); class b=a; 设置b.name= ...
- spark0.9.1 assembly build-RedHat6.4 YARN 2.2.0
1. Install git on RedHat6.4: 1.1. setup your local yum repo 1.2. yum install git 2. Install JDK and ...
- 例子:Background Agent Sample
通过本例程学习: 后台代理Agent的使用方法 定期代理(PeriodicTask)来说,限制了: 有一些API不能使用,并不是说你不调用就可以了,只要你在同一个程序集里使用了这些API,就不会通过验 ...
- myeclipse中文乱码,JSP页面乱码
一.设置新建常见文件的默认编码格式,也就是文件保存的格式.在不对MyEclipse进行设置的时候,默认保存文件的编码,一般跟简体中文操作系统(如windows2000,windowsXP)的编码一致, ...
- javascript笔记7-事件
主要讲事件流.事件捕获.事件冒泡.事件处理程序.事件属性.事件类型.内存和优化等. 由于本文已经在微信订阅号上发布,为了防止原创性冲突检测,因此本文在此处已经删除. 详细请扫描订阅号二维码,查看历史信 ...
- iOS 自定义emoji表情键盘
之前走了很多弯路,包括自己定以emoji表情,自己创建view类去处理图文混排 ,当把这些焦头烂额的东西处理完了才发现 ,其实系统自带键盘是如此的方便,iOS 系统自带的表情在view,textfie ...
- javascript之小积累-.-typeof与instanceof的区别
1.typeof 是获取一个变量或表达式的类型,返回的值通常是string, number, boolean, object(null, 数组, 对象), function, undefined,可以 ...
- python ML 笔记:Kmeans
kmeans算法的python实现: 参考与样本来源<Machine Learning in Action> #-*-coding:UTF-8-*- ''' Created on 2015 ...