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 ...
随机推荐
- scrapy数据存入mongodb
存入mongodb的pipelines文件是这样子写的 from openpyxl import Workbook from scrapy.conf import settings import py ...
- 黑马程序员——OC语言 内存管理
Java培训.Android培训.iOS培训..Net培训.期待与您交流! (以下内容是对黑马苹果入学视频的个人知识点总结) (一)计数器 每个对象内部都保存了一个与之相关联的整数,称为引用计数器,当 ...
- SQL Server基本函数
1. 字符串函数 1.1 datalength( char_expr ) ,返回表达式的字节数,不包含尾随空格 返回类型:如果 expression 的数据类型为 varchar(max).nvarc ...
- 将从数组中取到的字符串赋值给了UIImage导致的错误
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFConstantStr ...
- asp.net生成缩略图
/// <summary> /// 生成缩略图 /// </summary> /// <param name="orginalImagePat"> ...
- 反射+泛型+缓存 ASP.NET的数据层通用类
using System; using System.Collections.Generic; using System.Text; using System.Reflection ; using S ...
- Python静态网页爬虫相关知识
想要开发一个简单的Python爬虫案例,并在Python3以上的环境下运行,那么需要掌握哪些知识才能完成一个简单的Python爬虫呢? 爬虫的架构实现 爬虫包括调度器,管理器,解析器,下载器和输出器. ...
- div嵌套引起的margin-top不起作用
通常大家在制作网页的过程中会遇到很多棘手的问题,比如我在写一个页面的时候,遇到了div嵌套引起的margin-top不起作用,对内部的div设置margin-top时,内部对于外部的div并没有产生一 ...
- Swift基础语法 、 元组(Tuple)
字符串的使用 1.1 问题 Swift的String和Character类型提供了一个快速的,兼容Unicode的方式来处理代码中的文本信息.创建和操作字符串的语法与C语言中字符串类似.本案例将学习如 ...
- TCP状态变迁流程
主动建立TCP链接情况: 被动建立TCP链接情况 主动断开链接的情况 被动断开连接的情况 在TIME_WAIT阶段需要停留2倍的MSL,MSL即Maximum Segment Lifetime,表示任 ...