BZOJ3807 : Neerc2011 Lanes
左右与右左是两个独立的问题
设f[i]表示i时刻左右车道减少一条的答案
g[i]表示i时刻右左车道增加一条的答案
ans=min(f[i]+g[i+r])
计算f[i]:
首先暴力计算出f[m+1],同时记录下每个时刻刚开走的车的数量now[i]
从m到1计算f[i],如果该时刻开走的车数不足n1+1,则无影响
否则多了一辆车,选取后面最早的有空位的时刻j开走
用一个栈维护空位,复杂度为$O(m)$
计算g[i]:
首先暴力计算出g[0],同时记录下每个时刻刚开走的车的数量now[i]
从1到m+r计算g[i],如果该时刻开走的车数不足n2+1,则无影响
否则多了一辆车,选取后面最早的有空位的时刻j开走
因为j是单调变化的,所以复杂度为$O(m)$
#include<cstdio>
#define N 200010
typedef long long ll;
struct P{int t,k;P(){}P(int _t,int _k){t=_t,k=_k;}}q[N];
int n1,n2,m,r,i,a[N],b[N],now[N],rem,t,mx,fin;ll ans,f[N],g[N];
inline void read(int&a){char c;while(!(((c=getchar())>='0')&&(c<='9')));a=c-'0';while(((c=getchar())>='0')&&(c<='9'))(a*=10)+=c-'0';}
inline int min(int a,int b){return a<b?a:b;}
int main(){
for(read(n1),read(n2),read(m),read(r),i=1;i<=m;i++)read(a[i]),read(b[i]);
for(rem=ans=0,i=1;i<=m;i++)rem+=a[i],t=min(rem,n1+1),now[i]=t,rem-=t,ans+=rem;
mx=m+rem/n1+1,fin=rem%n1;
if(fin)ans+=(ll)(fin+rem-n1)*(rem/n1)/2;else ans+=(ll)rem*(rem/n1-1)/2;
for(q[t=1]=P(mx,fin),i=m;i;i--){
if(now[i]>n1){
while(t&&q[t].k==n1)t--;
if(!t)q[t=1]=P(++mx,0);
q[t].k++,ans+=q[t].t-i;
}else q[++t]=P(i,now[i]);
f[i]=ans;
}
for(rem=ans=0,i=1;i<=m+r;i++)rem+=b[i],t=min(rem,n2+1),now[i]=t,rem-=t,ans+=rem;
mx=m+r+rem/(n2+1)+1,fin=rem%(n2+1);
if(fin)ans+=(ll)(fin+rem-n2-1)*(rem/(n2+1))/2;else ans+=(ll)rem*(rem/(n2+1)-1)/2;
for(i=t=1;i<=m+r;i++){
g[i]=ans;
if(now[i]>n2){
while(t<=m+r&&(t<i||now[t]>n2))t++;
if(t<=m+r)now[t]++,ans+=t-i;else{
if(fin>n2)mx++,fin=0;
fin++,ans+=mx-i;
}
}
}
for(ans=1LL<<62,i=1;i<=m;i++)if(f[i]+g[i+r]<ans)t=i,ans=f[i]+g[i+r];
return printf("%d",t),0;
}
BZOJ3807 : Neerc2011 Lanes的更多相关文章
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 2632: [neerc2011]Gcd guessing game
2632: [neerc2011]Gcd guessing game Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 144 Solved: 84[S ...
- POJ 3895 Cycles of Lanes (dfs)
Description Each of the M lanes of the Park of Polytechnic University of Bucharest connects two of t ...
- BZOJ2646 : neerc2011 flight
答案由$3$部分构成: $1$.抛物线的极值. $2$.询问区间的左端点在抛物线上的值. $3$.询问区间的右端点在抛物线上的值. 对于$1$,就是某个矩形范围内最大值查询,使用KD-Tree可以在$ ...
- BZOJ3806: Neerc2011 Dictionary Size
题解: 这题搞得我真是酸(dan)爽(teng) 原来一直不会,一定会用到什么神奇的东西.因为重复的不知道如何计算. 今天中午睡起来忽然想到好像可以在正trie上故意走无出边,因为这样就保证了这次统计 ...
- POJ 3377 Ferry Lanes
虽然它出现在dp专场里···但是我第一反应是一道最短路题···不过幸好它出现在dp专场里···因为我不怎么会dijstra什么的··· 题意:一条河上有N+1对码头,每个相邻码头之间需要一定时间到达, ...
- poj-3895-Cycles of Lanes 简单DFS
题目链接: http://poj.org/problem?id=3895 题目意思: 在无向连通图中图中找一个经过边数最多的环. 解题思路: 从任意一点直接DFS,不用回溯,注意构成环的话至少有3条边 ...
- BZOJ2647 : [Neerc2011]Journey
$|x|+|y|=\max(x+y,x-y,-x+y,-x-y)$,设$f[i][j]$表示在$(0,0)$,朝向方向$j$,执行第$i$条指令后的信息: $cir$:是否陷入循环 $d$:朝向 $x ...
- bzoj4232: [Neerc2011 Northern]Kids Like Cakes
Description 给定一个n个点的严格凸多边形(各个内角<180°),现在要切出两个非退化三角形(三点不共线),要求两个三角形顶点必须是凸多边形的顶点,且三角形不可相交(但是点或边可以重合 ...
随机推荐
- CoreLoation
- (CLLocationManager *)locationManager { if (!_locationManager) { _locationManager = [[CLLocationMan ...
- iOS UILabel圆角
对于UIView 直接设置 uiview.layer.cornerRadius = 5 就可以有圆角了 但是对于UILabel则不然, 要多设置一个uilabel.clipsToBounds = YE ...
- PHP生成CSV文件
CSV文件的定义这里就不多做介绍了,难能可贵的是用Excel可以直接打开CSV文件.用PHP输出CSV文件本身很简单,但是大家如果有业务需求,下面的代码可以作为参考. $tableheader = a ...
- 【OpenStack】OpenStack系列16之OpenStack镜像制作
参考 参考: https://www.google.com.hk/?gws_rd=ssl#safe=strict&q=openstack+img+%E5%88%B6%E4%BD%9C http ...
- CSS本页写样式
<style type="text/css">p{ color:#ff0000; font-size:24px; font-family:"隶书"; ...
- scrapy爬虫成长日记之将抓取内容写入mysql数据库
前面小试了一下scrapy抓取博客园的博客(您可在此查看scrapy爬虫成长日记之创建工程-抽取数据-保存为json格式的数据),但是前面抓取的数据时保存为json格式的文本文件中的.这很显然不满足我 ...
- 如何分割一个utf8字符串(保证单个汉字的完整性)
std::list<std::string> split_utf8_string(const std::string& text) { std::list<std::stri ...
- Java for LeetCode 057 Insert Interval
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...
- codeforces 478B Random Teams 解题报告
题目链接:http://codeforces.com/problemset/problem/478/B 题目意思:有 n 个人,需要将这班人分成 m 个 组,每个组至少含有一个人,同一个组里的人两两可 ...
- cocos2dx实现经典飞机大战
游戏开始层 #ifndef __LayerGameStart_H__ #define __LayerGameStart_H__ #include "cocos2d.h" USING ...