[POI2007]驾驶考试egz
题目
BZOJ
神仙题,可比那些氵紫题有意思多了
做法
\(i\)能作为起始点,当\(i\)能到达\(1\)$i-1$和$i+1$\(n\)
这样处理显然会麻烦,因为要从每个点都特判一次
所以我们转换条件,当且仅当\(i\)能到达\(1\)和\(n\)
这样虽然判断次数少了,但是仍然要每个点跑一遍
转换问题:连反向边,则当且仅当\(1\)和\(n\)能到达\(i\),由于单调性,跑的次数为常数级别
考虑增加边,\(i\)能到达\(1\),转换为且单调序列的补集
显然,向左向右的补集有单调性,扫一遍就好了
My complete code
#include<bits/stdc++.h>
using namespace std;
typedef int LL;
const LL maxn=1e6+9;
LL n,ans,m,p,k;
LL tree[maxn],L[maxn],R[maxn];
inline LL Lowbit(LL x){ return x&-x; }
inline void Modify(LL x,LL val){ for(;x<=m;x+=Lowbit(x)) tree[x]=max(tree[x],val); }
inline LL Qmx(LL x){ LL ret(0); for(;x;x-=Lowbit(x)) ret=max(ret,tree[x]); return ret; }
struct node{
LL to,nxt,val;
}Ldis[maxn],Rdis[maxn];
LL Lnum,Rnum;
LL Lhead[maxn],Rhead[maxn];
inline void RI(LL u,LL v){
Rdis[++Rnum]=(node){v,Rhead[u],0}; Rhead[u]=Rnum;
}
inline void LI(LL u,LL v){
Ldis[++Lnum]=(node){v,Lhead[u],0}; Lhead[u]=Lnum;
}
int main(){
scanf("%d%d%d%d",&n,&m,&p,&k); ++m;
for(LL i=1;i<=p;++i){
LL x,y,op; scanf("%d%d%d",&x,&y,&op);
y=m-y;
if(!op) RI(x,y);
else LI(x+1,y);
}
for(LL i=2;i<=n;++i){
for(LL j=Lhead[i];j;j=Ldis[j].nxt) L[i]=max(L[i],Ldis[j].val=Qmx(Ldis[j].to)+1);
for(LL j=Lhead[i];j;j=Ldis[j].nxt) Modify(Ldis[j].to,Ldis[j].val);
L[i+1]=L[i]; L[i]=i-1-L[i];
}
memset(tree,0,sizeof(tree));
for(LL i=n-1;i>=1;--i){
for(LL j=Rhead[i];j;j=Rdis[j].nxt) R[i]=max(R[i],Rdis[j].val=Qmx(Rdis[j].to)+1);
for(LL j=Rhead[i];j;j=Rdis[j].nxt) Modify(Rdis[j].to,Rdis[j].val);
R[i-1]=R[i]; R[i]=n-i-R[i];
}
LL r=1,free(0);
for(LL l=1;l<=n;++l){
while(r<=n && L[r]+R[l]<=k) ++r;
ans=max(ans,r-l);
if(!L[l] && !R[l]) ++free;
}
printf("%d\n",ans-free);
return 0;
}
[POI2007]驾驶考试egz的更多相关文章
- BZOJ1107 : [POI2007]驾驶考试egz
i可以作为起点说明把边反向后可以从1和n到达i. 设fl[i]表示从1到达i至少需要加几条边,fr[i]表示从n到达i至少需要加几条边. 把图上下翻转后,从左往右依次计算fl[i],有fl[i]=i- ...
- BZOJ 1107: [POI2007]驾驶考试egz / Luogu P3463 [POI2007]EGZ-Driving Exam (树状数组 LIS)
能从iii走到所有跑道 相当于 能从iii走到111和nnn. 边反向后就相当于 能从111和nnn走到iii. 为了方便叙述,把111~nnn叫做x坐标,111~(m+1)(m+1)(m+1)叫做y ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2221 Solved: 1179[Submit][Sta ...
- BZOJ1098: [POI2007]办公楼biu
从问题可以看出是求补图的连通块及点数 但补图太大.所以考虑缩小规模. 当一个点归属于一个连通块后,它以后就不需要了.所以可以用链表,删去这个点,也就减小了规模. 一个点开始bfs,每个点只会进队一次, ...
- BZOJ1097: [POI2007]旅游景点atr
..k次最短路后,考虑如何满足先走一些点 用状压dp,每一个点考虑它所需要经过的点a[i],当当前走过的点包含a[i]时,i 这个点才可以到达. 写的时候用记忆化搜索. #include<bit ...
- BZOJ 1101: [POI2007]Zap
1101: [POI2007]Zap Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2262 Solved: 895[Submit][Status] ...
- BZOJ 1100: [POI2007]对称轴osi
1100: [POI2007]对称轴osi Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 630 Solved: 243[Submit][Statu ...
- BZOJ 1111: [POI2007]四进制的天平Wag
1111: [POI2007]四进制的天平Wag Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 223 Solved: 151[Submit][St ...
随机推荐
- php 遍历静态html成文章列表
准备 代码 <?php $root=__DIR__; //全站目录 function my($dir){ static $item_arr=array(); $a=scandir($dir); ...
- ThinkPHP带表情无限级评论回复
今天就tp中(含表情)无限级评论回复做一个个人总结. 1.准备TP基本框架 2.数据库,数据表的建立 A.先说说数据库(表)的建立. a-1,数据库:blog a-2,数据表:bolg_comment ...
- Unity3D学习笔记——GUI高级组件
Unity3D中的高级控件都是由GUI类引出的,高级控件是由系统实现的,所以效率很高,但也可以自己实现,优点是任意修改灵活性高. 一:Label控件:用于展示一段文字的控件.可以输入字符串,也可以是贴 ...
- JAVA学习第六十三课 — 关于client服务端 && URL类 & URLConnection
常见的client和服务端 client: 浏览器:IE:弹窗体,猎豹:弹窗体.多标签,争强效果 服务端: server:TomCat:1.处理请求 2.给予应答 想让TomC ...
- Linux下OpenOffice的安装与启动
公司项目需求中增加了文档预览功能,所以采用了OpenOffice提供的将office文件转换为pdf的工具.那么我们的程序运行在服务器端,服务器系统版本多是Linux,因此有必要记录下Linux下Op ...
- 关于微信小程序的尺寸关系
在微信小程序开发中,大家尽量使用rpx为单位, px实际上就是系统级的rem(把页面按比例分割750份,1rpx=window.innerWidth/750),或者scale伸缩布局的width=75 ...
- influxDB---数据库操作SQL
查询 查询不能只查tag标签,一定要加上fields. 如:select val,"班组" FROM "测试表" WHERE dev = 'cs123' and ...
- swift笔记——环境搭建及Hello,Swift!
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/enson16855/article/details/29829601 首先要下载XCode6,仅仅有 ...
- pip升级或卸载安装的包的方法
先 pip list 看看包的具体名字是什么,然后 pip uninstall **包名** ===== 打印出有新版本的包: pip list --outdated --format=freeze ...
- 20171104 DOI Excel 导出
1. OAOR 创建模板, Class name:SOFFICEINTEGRATIONClass type: OTObject key: ZZCSDRP_0030 2.双击表模板创建Excel 模 ...