bzoj1533: [POI2005]Lot-A Journey to Mars
来源:互联网 发布:雕刻机编程软件 编辑:程序博客网 时间:2024/06/02 05:23
传送门
如果总油量小于总里程显然gg
考虑维护前缀油量-里程
维护区间最小值。
如果最小值<头上的值显然gg
然后随便水水。
#include<cmath>#include<cstdio> #include<cstring>#include<cstdlib>#include<iostream>#include<algorithm>#define N 1000005using namespace std;struct data{int x,y;}a[N];int b[N*2],c[2][N],sta[N*2],r[N*2];int n,res,top;void work(int x){ b[0]=0; for (int i=1;i<=n;i++) b[i]=b[i-1]+a[i].x-a[i].y; for (int i=1;i<=n;i++) b[n+i]=b[n+i-1]+a[i].x-a[i].y; b[n*2+1]=-1e9; top=0; for (int i=0;i<=n*2+1;i++){ while (top&&b[i]<b[sta[top]]){ r[sta[top]]=i-1; top--; } sta[++top]=i; } for (int i=0;i<n;i++) if (r[i]-i+1>=n) c[x][i+1]=1;}int main(){ scanf("%d",&n); for (int i=1;i<=n;i++){ scanf("%d%d",&a[i].x,&a[i].y); res+=a[i].x-a[i].y; } if (res<0){ for (int i=1;i<=n;i++) puts("NIE"); return 0; } work(0); for (int i=1,j=n;i<j;i++,j--) swap(a[i],a[j]); int tmp=a[1].y; for (int i=1;i<n;i++) a[i].y=a[i+1].y; a[n].y=tmp; work(1); for (int i=1;i<=n;i++) if (c[0][i]||c[1][n-i+1]) puts("TAK"); else puts("NIE"); }
阅读全文
1 0
- bzoj1533: [POI2005]Lot-A Journey to Mars
- BZOJ153/POI2005 A Journey to Mars
- Trevor Noah Has a Lot to Say
- a lot的用法
- A lot of things
- A Lot of Joy
- Miss My Honey A Lot
- C# open source a lot
- lot
- Lot
- Leaning Into Six Sigma : A Parable of the Journey to Six Sigma and a Lean Enterprise
- Happiness Is A Journey
- A new journey begin
- A Knight's Journey
- A Knight's Journey
- A knight's journey
- A Knight's Journey
- A Knight's Journey
- UVa 136 丑数
- POJ 1715 Hexadecimal Numbers 笔记
- HDU-4597-区间DP-(博弈)
- 洛谷3377【【模板】左偏树】--左偏树&并查集
- js添加class属性
- bzoj1533: [POI2005]Lot-A Journey to Mars
- windows+opencv的配置和使用
- 链式队列的实现与项目中的应用
- WEBGL 3D AR VR 梅花 骨骼动画 粒子系统
- Rxtx串口通信
- Java网络编程之服务器与客户端通信
- linux环境下成功编译GDAL为JAVA库
- 常用控件(TextView-EditText-Shape-Selector)
- Vue学习-构造器