[2016北京集训测试赛3]masodik-[凸包]
Description

Soluton
666这道题竟然用凸包。。。
维护r和c的下凸壳。哪个斜率大走哪个。
证明:我们先不考虑其他的,只考虑两条路,如下图:

设图的长度为x,宽度为y。如果我们要走上面的路径,则r1*y+c1*x>=r2*y+c2*x。
移项得$\frac{(r1-r2)}{x}\geq \frac{(c2-c1)}{y}$。
显然对于只有两条路的情况,证明成立。
感性理解一下,最终的最优路径必然是由无数点的最优路径组成,如S->T1->T2->T3->T4。。。->T
所以,我就厚着脸皮认为它成立啦。
Code
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
int n,m;
int r[],c[],qr[],topr=,qc[],topc=;
int tpr,tpc;
long long ans;
int main()
{
scanf("%d%d",&n,&m);
for (int i=;i<=n;i++)
{
scanf("%d",&r[i]);
while (topr>&&1ll*(r[i]-r[qr[topr]])*(qr[topr]-qr[topr-])<1ll*(r[qr[topr]]-r[qr[topr-]])*(i-qr[topr])) topr--;
qr[++topr]=i;
}
for (int i=;i<=m;i++)
{
scanf("%d",&c[i]);
while (topc>&&1ll*(c[i]-c[qc[topc]])*(qc[topc]-qc[topc-])<1ll*(c[qc[topc]]-c[qc[topc-]])*(i-qc[topc])) topc--;
qc[++topc]=i;
}
tpr=tpc=;
while (tpr<topr&&tpc<topc)
{
if (1ll*(r[qr[tpr+]]-r[qr[tpr]])*(qc[tpc+]-qc[tpc])<=1ll*(c[qc[tpc+]]-c[qc[tpc]])*(qr[tpr+]-qr[tpr]))
ans+=1ll*(qr[tpr+]-qr[tpr])*c[qc[tpc]],tpr++;
else ans+=1ll*(qc[tpc+]-qc[tpc])*r[qr[tpr]],tpc++;
}
if (tpr==topr) ans+=1ll*(m-qc[tpc])*r[n];else ans+=1ll*(n-qr[tpr])*c[m];
cout<<ans;
}
[2016北京集训测试赛3]masodik-[凸包]的更多相关文章
- 2016北京集训测试赛(九)Problem C: 狂飙突进的幻想乡
		
Solution 我们发现, 对于一条路径来说, 花费总时间为\(ap + q\), 其中\(p\)和\(q\)为定值. 对于每个点, 我们有多条路径可以到达, 因此对于每个区间中的\(a\)我们可以 ...
 - 【2016北京集训测试赛(十)】 Azelso      (期望DP)
		
Time Limit: 1000 ms Memory Limit: 256 MB Description 题解 状态表示: 这题的状态表示有点难想...... 设$f_i$表示第$i$个事件经过之 ...
 - 【2016北京集训测试赛(二)】 thr  (树形DP)
		
Description 题解 (这可是一道很早就碰到的练习题然后我不会做不想做,没想到在Contest碰到欲哭无泪......) 题目大意是寻找三点对的个数,使得其中的三个点两两距离都为d. 问题在于 ...
 - 【2016北京集训测试赛(八)】 crash的数列  (思考题)
		
Description 题解 题目说这是一个具有神奇特性的数列!这句话是非常有用的因为我们发现,如果套着这个数列的定义再从原数列引出一个新数列,它居然还是一样的...... 于是我们就想到了能不能用多 ...
 - 【2016北京集训测试赛(十六)】 River (最大流)
		
Description Special Judge Hint 注意是全程不能经过两个相同的景点,并且一天的开始和结束不能用同样的交通方式. 题解 题目大意:给定两组点,每组有$n$个点,有若干条跨组 ...
 - 【2016北京集训测试赛】river
		
HINT 注意是全程不能经过两个相同的景点,并且一天的开始和结束不能用同样的交通方式. [吐槽] 嗯..看到这题的想法的话..先想到了每个点的度为2,然后就有点不知所措了 隐隐约约想到了网络流,但并没 ...
 - 【2016北京集训测试赛】azelso
		
[吐槽] 首先当然是要orzyww啦 以及orzyxq奇妙顺推很强qwq 嗯..怎么说呢虽然说之前零零散散做了一些概d的题目但是总感觉好像并没有弄得比较明白啊..(我的妈果然蒟蒻) 这题的话可以说是难 ...
 - [2016北京集训测试赛17]crash的游戏-[组合数+斯特林数+拉格朗日插值]
		
Description Solution 核心思想是把组合数当成一个奇怪的多项式,然后拉格朗日插值..:哦对了,还要用到第二类斯特林数(就是把若干个球放到若干个盒子)的一个公式: $x^{n}=\su ...
 - [2016北京集训测试赛15]statement-[线段树+拆环]
		
Description Solution 由于题目要求,将a[i]->b[i](边权为i)后所得的图应该是由森林和环套树组合而成. 假如是树形结构,所有的t[i]就直接在线段树t[i]点的dfs ...
 
随机推荐
- centos7源码安装vim8.0
			
centos 6和7通过yum安装的vim版本仍为7.4,若想尝鲜,可获取源码包编译安装. 准备工作 1.检查vim旧版本,若已存在,将其卸载. $ vim$ yum remove vim* -y 2 ...
 - [luogu1979] 华容道
			
题面  先讲点无关的,这道题是真的恶心...  好了,第一眼看到这道题,肯定是准备暴搜的,但是想了一想,省选难度的题目不可能一上来就让你暴搜吧,于是开启了无穷无尽的分析,我们不妨设指定棋子叫做移动 ...
 - js中时间的操作
			
var myDate = new Date();myDate.getYear(); //获取当前年份(2位)myDate.getFullYear(); //获取完整的年份(4位,1 ...
 - html字段验证
			
(1)连接去掉下划线:style="text-decoration:none" <a href="/example/html/lastpage.html" ...
 - mongoDB的常用语法
			
安装: 到mongodb官网下载安装包或者压缩包:https://www.mongodb.com/download-center?jmp=nav 1.如果是msi包的话则点击按步骤安装,如果是压缩包的 ...
 - 推荐一个WPF仪表盘开源控件
			
前段时间,做服务器端监控系统,为了界面好看,采用WPF.硬件相关监控,比如CPU.内存等,想用仪表盘控件.网上找了很多这种控件,基本上都是第三方商业控件(虽然很漂亮,不过得money...).最后在C ...
 - 设置af对 Cookies 的管理
			
manager.requestSerializer.HTTPShouldHandleCookies = NO;
 - C# 处理json字符串中image数据(byte)Base64
			
static void Main(string[] args) { string factString = "中华人民共和国"; byte[] myByte; str ...
 - 【luogu P3959 宝藏】 题解
			
题目链接:https://www.luogu.org/problemnew/show/P3959 我只是心血来潮想学SA(考场上骗分总行吧). 这个题可以状压DP.爆搜+剪枝.有意思的还是随机化搜索( ...
 - HDU 1058(打表)
			
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1058 Humble Numbers Time Limit: 2000/1000 MS (Java/O ...