汕头市队赛 SRM14 T1 计算几何瞎暴力
计算几何瞎暴力
(easy.pas/c/cpp) 128MB 1s
在平面上,给定起点和终点,有一面墙(看作线段)不能穿过,问从起点走到终点的最短路程。
输入格式
输入一行,包含8个用空格分隔的整数xS,yS,xT,yT,x1,y1,x2,y2,依次表示起点(xS,yS),终点(xT,yT),线段(x1,y1)-(x2,y2)。
输出格式
输出一个整数,表示答案四舍五入到整数后的值,保证答案精确值的小数点后一位不是4或5。
样例输入
1 1 2 2 1 2 2 1
样例输出
2
样例解释
走折线(1,1)-(1,2)-(2,2)或(1,1)-(2,1)-(2,2)路程最短。
数据范围
对30%的数据,xS<=xT<=x1<=x2
对所有的数据,输入的整数在范围1..1000内,保证起点和终点不在线段上
————————————————————————————————————
这道题判一下线段是否和起点终点连线想交就好了
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int M=2e4+,inf=0x3f3f3f3f;
int read(){
int ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
int n,m,l,ans;
int sum[M],w[M],f[][M],mx;
int q[M],ql,qr,k;
int F(int x){return f[k-][x]-sum[x];}
int main(){
freopen("hard.in","r",stdin);
freopen("hard.out","w",stdout);
n=read(); m=read(); l=read();
for(int i=l;i<n+l;++i) w[i]=read();
n=n+*l-;
for(int i=;i<=n;++i) sum[i]=sum[i-]+w[i];
for(int i=;i<l;++i) f[][i]=-inf;
for(int i=l;i<=n;++i) f[][i]=sum[i]-sum[i-l];
for(k=;k<=m;++k){
ql=,qr=;
mx=-inf;
for(int i=;i<l;++i) f[k][i]=-inf;
for(int i=l;i<=n;++i){
while(ql<=qr&&q[ql]<=i-l) ++ql;
while(ql<=qr&&F(q[qr])<=F(i-)) --qr;
q[++qr]=i-;
mx=max(mx,f[k-][i-l]);
f[k][i]=max(mx+sum[i]-sum[i-l],F(q[ql])+sum[i]);
}
}
ans=;
for(int i=;i<=m;++i)
for(int j=l;j<=n;++j) ans=max(ans,f[i][j]);
printf("%d\n",ans);
return ;
}
汕头市队赛 SRM14 T1 计算几何瞎暴力的更多相关文章
- 汕头市队赛SRM14 T3覆盖
我们可以考虑两种情况 区间之间不相重叠 和 重叠 f[i][j]表示以当前最后一个区间以 i 结尾 并且选了 j 个区间 不相重叠的话 只要选 1-i-w 的max再加上 包含i在内的前四个数的和 相 ...
- 汕头市队赛 SRM14 T2 最长上升子序列
最长上升子序列 (tree.pas/c/cpp) 128MB 1s 有一个长度为n的序列a[i],其中1到n的整数各自在a[i]中出现恰好一次. 现在已知另一个等长的序列f[i],表示a[i]中以第i ...
- 汕头市队赛 SRM1X T1
木之本樱 背景 “西瓜是可以种在树上的!”——木之本樱 描述 空地上,一排排的西瓜树拔地而起. 魔法世界里,空地是无限大的.所有的树排成了n条直线,每条直线也是向左右两端无限延伸的. 由于自己姓木(之 ...
- 汕头市队赛 SRM10 T1 贪心只能过样例
贪心只能过样例 SRM 10 描述 给出n个数a[i](1<=a[i]<=n),问最多能把这些数分成几组,使得每个数a[i]所在的组至少有a[i]个数 输入格式 第一行一个整数n,接下来n ...
- 汕头市队赛 SRM10 T1模拟只会猜题意
模拟只会猜题意 SRM 10 描述 有一本n个单词的词典,求按下列方法能造出的不相同的词汇数目. 1.词典中的单词是一个词. 2.能分为两部分的,其中前一部分是一个词典词或者其非空前缀,后一部分是一 ...
- 汕头市队赛 C KMP codeforces B. Image Preview
汕头市队赛题目传送门 codeforces题目传送门 这道题我的做法是 尝试先往左走然后往右走 或者先往右走然后往左走 然后注意一下枚举顺序就okay啦 #include<cstdio> ...
- LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力
二次联通门 : LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力 /* LibreOJ #517. 「LibreOJ β Round #2」计算几何瞎暴力 叫做计算几 ...
- loj517 计算几何瞎暴力
在序列上维护4个操作 1.在序列的尾端添加x 2.输出Al~Ar的和 3.将所有数异或x 4.将序列从小到大排序 第一眼看上去是Splay于是头铁硬刚了一发 后来发现splay没法异或 去百度“维护异 ...
- 汕头市队赛SRM 20 T1魔法弹
T1 背景 “主角光环已经不能忍啦!” 被最强控制AP博丽灵梦虐了很长一段时间之后,众人决定联合反抗. 魂魄妖梦:“野怪好像被抢光了?” 十六夜咲夜:“没事,我们人多.” 然后当然是以失败告终了. 八 ...
随机推荐
- vbox+Vagrant 入门指南
Vagrant 简介 Vagrant 是一个用来构建和管理虚拟机环境的工具.Vagrant 有着易于使用的工作流,并且专注于自动化,降低了开发者搭建环境的时间,提高了生产力.解决了"在我的机 ...
- 笔记-scrapy-pipeline
笔记-scrapy-pipeline 1.简介 scrapy抓取数据后,使用yield发送item对象至pipeline,pipeline顺序对item进行处理. 一般用于: 清洗,验证,检查数据: ...
- 清空Fragment回退栈中某个Fragment之上的所有Fragment
根据debug信息查看Fragment回退栈的情况,具体debug代码如下: int num = getActivity().getSupportFragmentManager().getBackSt ...
- Wind Of Change
Wind of change until the end 变革的风一直吹直至最后 You will see that I will be your friend 你会看见我成为你的朋友 If you ...
- Linux下添加桌面快捷方式
这里用Ubuntu下BurpSuite举例 sudo vim /home/user/Desktop/burpsuite.desktop //burpsuite随意起名,系统会系动创建文件 文件写入 # ...
- android stadio open recent 在同一窗口打开
Android staido 有一个功能是open recent ,默认是下面这样的: 就出来一个框,给你选择,是在新的窗口打开,还是在当前窗口打开.如果你选了当前窗口,并且点了Remember,do ...
- webstrom Certificate validation failed
今天好烦.因为装了一个webstrome,我的svn不管用了. 为了防止webstrom,我的日期改了,日期改了,csdn登不上去了.告诉我时期不对. 草草哦哦. 这就是那个svn出问题之后的画面. ...
- centos7.3配置guacamole
目录 1 安装guacamole所需要的依赖库 2 安装配置tomcat,架设服务 2.1 下载tomcat 2.2 配置环境变量,使tomcat可以找到guacamole客户端配置 2.3 安装gu ...
- centos使用--排查服务是否可用
端口与服务的关系 一台拥有IP地址的主机可以提供许多服务,比如Web服务.FTP服务.SMTP服务等,这些服务完全通过1个IP地址来实现.那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因 ...
- JQuery方法总结
JQuery方法总结 Dom: Attribute:(属性) $("p").addClass(css中定义的样式类型); 给某个元素添加样式 $("img"). ...