codeforces 853b//Jury Meeting// Codeforces Round #433 (Div. 1)
题意:几个人要去一个城市k天,现给出各航班的日期和花费,让这n个人能相会k天的最小花费?
用数组arr1[i]记录在第i天人到齐的最小花费。arr2[i]记录第i天之后才有人开始走的最小花费。然后取arr1[i]+arr2[i+k+1]的最小值。
//#pragma comment(linker,"/STACK:1024000000,1024000000")
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<vector>
#include<cmath>
#include<queue>
#include<stack>
#include<map>
#include<set>
#include<algorithm>
#include <stack>
#include <bitset>
#include <iomanip>
using namespace std;
typedef long long lon;
const lon SZ=,INF=0x7FFFFFFFFFFFFFFFLL;
lon n,m,k,zcnt;
lon zvst[SZ],zsum,zmin[SZ],a[SZ];
lon ncnt,nvst[SZ],nsum,nmin[SZ],b[SZ];
struct nd{
lon d,from,to,cost;
nd(lon a,lon b,lon c,lon e):d(a),from(b),to(c),cost(e){}
}; bool cmpd(nd &x,nd &y)
{
return x.d<y.d;
} void init()
{
cin>>n>>m>>k;
if(m==)return;
vector<nd> vct;
for(lon i=;i<m;++i)
{
lon d,from,to,cost;
cin>>d>>from>>to>>cost;
vct.push_back(nd(d,from,to,cost));
}
sort(vct.begin(),vct.end(),cmpd);
//for(lon i=0;i<vct.size();++i)cout<<vct[i].d<<endl;
for(lon i=,j=;i<=;++i)
{
a[i]=a[i-];
vector<nd> tmp;
for(;j<vct.size();)
{
//cout<<i<<" "<<j<<" "<<vct[j].d<<endl;
if(vct[j].d==i)
{
//if(i==2)cout<<" "<<j<<" "<<tmp.size()<<endl;
tmp.push_back(vct[j]);++j;
}else break;
}
//if(tmp.size())cout<<i<<" "<<tmp.size()<<endl;
for(lon k=;k<tmp.size();++k)
{
lon d,from,to,cost;
d=tmp[k].d,from=tmp[k].from,to=tmp[k].to;
cost=tmp[k].cost;
if(from)
{
//if(i==3)cout<<"here"<<zvst[d]<<endl;
if(zvst[from]==)
{
zvst[from]=;
++zcnt;
zsum+=cost;
zmin[from]=cost;
}
else
{
if(zmin[from]>cost)
{
zsum-=zmin[from]-cost;
zmin[from]=cost;
}
}
if(zcnt==n)
{
a[d]=zsum;
}
}
}
} for(lon i=,j=vct.size()-;i>=;--i)
{
b[i]=b[i+];
vector<nd> tmp;
for(;j>=;)
{
//cout<<i<<" "<<j<<" "<<vct[j].d<<endl;
if(vct[j].d==i)
{
//if(i==2)cout<<" "<<j<<" "<<tmp.size()<<endl;
tmp.push_back(vct[j]);--j;
}else break;
}
//if(tmp.size())cout<<i<<" "<<tmp.size()<<endl;
for(lon k=;k<tmp.size();++k)
{
lon d,from,to,cost;
d=tmp[k].d,from=tmp[k].from,to=tmp[k].to;
cost=tmp[k].cost;
if(to)
{
if(nvst[to]==)
{
nvst[to]=;
++ncnt;
nsum+=cost;
nmin[to]=cost;
}
else
{
if(nmin[to]>cost)
{
nsum-=nmin[to]-cost;
nmin[to]=cost;
}
}
if(ncnt==n)
{
b[d]=nsum;
}
} }
} // for(lon i=1;i<=1000000;++i)
// {
// if(!b[i]&&b[i-1])b[i]=b[i-1];
// }
} lon work()
{
// for(lon i=1;i<30;++i)
// {
// cout<<a[i]<<" "<<b[i]<<endl;
// }
lon res=INF;
for(lon i=;i<=;++i)
{
lon dst=min(1000002LL,i+k+);
//if(a[i]||b[i])if(i<20)cout<<i<<" "<<a[i]<<" "<<b[i+k+1]<<endl;
if(a[i]!=&&b[dst]!=)
{
res=min(res,a[i]+b[dst]);
}
}
if(res==INF)return -;
else return res;
} int main()
{
std::ios::sync_with_stdio();
//freopen("d:\\1.txt","r",stdin);
//for(;scanf("%d",&n)!=EOF;)
{
init();
cout<<work()<<endl;
}
return ;
}
codeforces 853b//Jury Meeting// Codeforces Round #433 (Div. 1)的更多相关文章
- Codeforces 853B Jury Meeting (差分+前缀和)
<题目链接> 题目大意: 有$ n(n<=1e5)$个城市和一个首都(0号城市),现在每个城市有一个人,总共有$ m (m<=1e5)$次航班,每个航班要么从首都起飞,要么飞到 ...
- Codeforces 853B Jury Meeting
题意 从城市1-n来的评审团到城市0商讨国家大事,离开和抵达的那一天不能讨论,飞机均当天抵达,给出所有飞机起飞抵达代价情况,问能否使所有评审员聚齐连续k天并返回,并求最小代价 思路 从前向后扫一遍,求 ...
- Codeforces Round #433 (Div. 2)【A、B、C、D题】
题目链接:Codeforces Round #433 (Div. 2) codeforces 854 A. Fraction[水] 题意:已知分子与分母的和,求分子小于分母的 最大的最简分数. #in ...
- Jury Meeting CodeForces - 854D
Jury Meeting CodeForces - 854D 思路:暴力枚举会议开始的那一天(只需用所有向0点飞的航班的那一天+1去枚举即可),并计算所有人此情况下去0点和从0点出来的最小花费. 具体 ...
- Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) D. Jury Meeting(双指针模拟)
D. Jury Meeting time limit per test 1 second memory limit per test 512 megabytes input standard inpu ...
- 【Codeforces Round #433 (Div. 1) B】Jury Meeting
[链接]h在这里写链接 [题意] 有n个人,它们都要在某一时刻开始,全都到达0位置,然后维持最少k个时间单位,然后再全都回到原来的位置; 第i个人初始的位置是i. 且一共有m班航班. 每一班航班,要么 ...
- Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises)
A. Fraction 题目链接:http://codeforces.com/contest/854/problem/A 题目意思:给出一个数n,求两个数a+b=n,且a/b不可约分,如果存在多组满足 ...
- Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) D
Country of Metropolia is holding Olympiad of Metrpolises soon. It mean that all jury members of the ...
- 【codeforces】【比赛题解】#854 CF Round #433 (Div.2)
cf一如既往挺丧 看丧题点我! [A]分数 Petya是数学迷,特别是有关于分数的数学.最近他学了所谓一个分数被叫做“真分数”当且仅当其分子小于分母,而一个分数被叫做“最简分数”当且仅当其分子分母互质 ...
随机推荐
- 性能分析之– JAVA Thread Dump 分析
最近在做性能测试,需要对线程堆栈进行分析,在网上收集了一些资料,学习完后,将相关知识整理在一起,输出文章如下. 一.Thread Dump介绍 1.1什么是Thread Dump? Thread Du ...
- SQL: 左连接,右连接,内连接,左外连接,右外连接,完全连接
例子: ---------------------- --------------------------- a表 id name b表 id job parent_id 1 张三 ...
- python的数据结构之数字和字符串(四)
一.数字 Python Number 数据类型用于存储数值.数据类型是不允许改变的,这就意味着如果改变 Number 数据类型的值,将重新分配内存空间. Python 支持四种不同的数值类型: 整型( ...
- 【Python】【Flask】前端调用后端方法
后端代码: @app.route("/test",methods=['POST','GET']) def test(): return "我是测试的" 前端代码 ...
- 20145225 《网络对抗》逆向及Bof基础实践
实践目标 本次实践的对象是一个名为pwn1的linux可执行文件. 该程序正常执行流程是:main调用foo函数,foo函数会简单回显任何用户输入的字符串. 该程序同时包含另一个代码片段,getShe ...
- tf.reduce_sum tensorflow维度上的操作
tensorflow中有很多在维度上的操作,本例以常用的tf.reduce_sum进行说明.官方给的api reduce_sum( input_tensor, axis=None, keep_dims ...
- python2.7+pyqt4 +eric4安装配置
eric4安装与汉化一直没找到合适python的IDE工具,直到遇到了eric4这款开源软件.然而在使用过程中发现输出的中文字符竟然是乱码,修修改改配置总算正常显示了,何不干脆把软件界面也汉化下. 一 ...
- git如何生成指定两个commit之间的补丁
答:git format-patch <base commit id>..<latest commit id> 如git log输出以下内容: commit 2222222 y ...
- 【分布式计算】30分钟概览Spark分布式计算引擎
本文主要帮助初学者快速了解Spark,不会面面俱到,但核心一定点到. Spark是继Hadoop之后的下一代分布式内存计算引擎,于2009年诞生于加州大学伯克利分校AMPLab实验室,现在主要由Dat ...
- javaweb 实战_1
购物车项目 Primary SQL语句 product create table product ( id ) default null, name varchar() default null, p ...