汕头市队赛 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博丽灵梦虐了很长一段时间之后,众人决定联合反抗. 魂魄妖梦:“野怪好像被抢光了?” 十六夜咲夜:“没事,我们人多.” 然后当然是以失败告终了. 八 ...
随机推荐
- C语言基础篇(一)关键字
导航: 1. 数据类型 !!! 2. 自定义类型 !!!! 3. 逻辑结构 4. 类型修饰符 !! 5. 杂项 !! ----->x<------------->x<----- ...
- B1086 就不告诉你 (15分)
B1086 就不告诉你 (15分) 做作业的时候,邻座的小盆友问你:"五乘以七等于多少?"你应该不失礼貌地围笑着告诉他:"五十三."本题就要求你,对任何一对给定 ...
- Windows Server 远程桌面连接不上问题解决
关于Windows Server 远程桌面连接不上的问题需要从服务.端口.防火墙这几方面进行检查: 服务器上需要 开启的服务: - Remote Access Auto Connection Mana ...
- P3817 小A的糖果(洛谷月赛)
P3817 小A的糖果 题目描述 小A有N个糖果盒,第i个盒中有a[i]颗糖果. 小A每次可以从其中一盒糖果中吃掉一颗,他想知道,要让任意两个相邻的盒子中加起来都只有x颗或以下的糖果,至少得吃掉几颗糖 ...
- SpringBoot推荐基础包
技术交流群:233513714 Spring Boot 推荐的基础包 名称 说明 spring-boot-starter 核心 POM,包含自动配置支持.日志库和对 YAML 配置文件的支持. spr ...
- easyui-datagrid单选模式下隐藏表头的全选框
easyui-datagrid可以不使用复选框来进行单选,直接使用onSelect和 singleSelect:true就可以实现单选,但是有一些用户会比较习惯使用勾选框,这时会加一列checkbox ...
- 如何创造财富?硅谷创业之父 Paul Graham 《黑客与画家》思维导图
先送上亚马逊传送门:<黑客与画家>:硅谷创业之父 Paul Graham 文集 再送上一个思维导图: 下载大图:http://caifujianghu.com/article/ruhe-c ...
- 使用原生node写一个聊天室
在学习node的时候都会练习做一个聊天室的项目,主要使用socket.io模块和http模块.这里我们使用更加原始的方式去写一个在命令行聊天的聊天室. http模块,socket.io都是高度封装之后 ...
- 2、shader基本语法、变量类型、shader的三种形式、subshader、fallback、Pass LOD、tags
新建一个shader,名为MyShader1内容如下: 1._MainTex 为变量名 2.“Base (RGB)”表示在unity编辑面板中显示的名字,可以定义为中文 3.2D 表示变量的类型 4. ...
- StaticBox布局管理器
wx.StaticBoxSizer构造方法如下: wx.StaticBoxSizer(box,orient = HORIZONTAL) box 是静态框对象,orient参数是布局方向 wx.HOR ...