$Noip2018/Luogu5019/Luogu1969$ 铺设道路
去年$Noip$的时候我并没有做过原题,然后考场上也没有想出正解,就写了个优化了一点的暴力:树状数组+差分,然后就$A$了$ovo$.
$Sol$
只要$O(N)$扫一遍,只要当前值比前一个值大,那么答案就累计这两个值的差的绝对值.$over.$
$Code$
#include<iostream>
#include<cstdio>
#define rg register
#define ll long long
using namespace std;
int read()
{
int x=,y=;char c;
c=getchar();
while(c<''||c>'') {if(c=='-') y=-;c=getchar();}
while(c>=''&&c<='') {x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
int n;
ll ans;
int a[],b[];
int lowbit(int x)
{
return x&(-x);
}
void add(int x,int k)
{
for(rg int i=x;i<=n;i+=lowbit(i)) b[i]+=k;
}
ll sum(int x)
{
ll sum1=;
for(rg int i=x;i>=;i-=lowbit(i))
sum1+=b[i];
return sum1;
}
int minn,l,r;
int main()
{
freopen("road.in","r",stdin);
freopen("road.out","w",stdout);
n=read();minn=;
for(rg int i=;i<=n;i++)
{
a[i]=read();
minn=min(a[i],minn);
add(i,a[i]-a[i-]);
}
ans+=minn;
add(,-minn);
if(a[]!=) l=;
for(rg int i=;i<=n;i++)
{
int s=sum(i);
if(s)
{
if(l==) {l=i;r=i;minn=s;}
else {minn=min(minn,s);r=i;}
if(i!=n) continue ;
}
else if(l==) continue;
ans+=minn;
add(l,-minn);
if(r<n) add(r+,minn);
i=l-;l=;
}
printf("%lld",ans);
return ;
}
View 考场 Code
#include<iostream>
#include<cstdio>
#define il inline
#define Rg register
#define go(i,a,b) for(Rg int i=a;i<=b;++i)
#define ll long long
using namespace std;
il int read()
{
Rg int x=,y=;char c=getchar();
while(c<''||c>''){if(c=='-')y=-;c=getchar();}
while(c>=''&&c<=''){x=(x<<)+(x<<)+c-'';c=getchar();}
return x*y;
}
int n,x,y;ll as;
int main()
{
n=read();
go(i,,n){y=read();if(y>x)as+=y-x;x=y;}
printf("%lld\n",as);
return ;
}
View 正解 Code
随机推荐
- cPickle对python对象进行序列化,序列化到文件或内存
pickle模块使用的数据格式是python专用的,并且不同版本不向后兼容,同时也不能被其他语言说识别.要和其他语言交互,可以使用内置的json包 cPickle可以对任意一种类型的python对象进 ...
- UIImageView xib里面拉伸图片技巧
拉伸图片的时候代码里和xib里面的图片名字去掉@2x,但是原始图片文件得要xxx@2x.png The X and Y values seem to be the positions for the ...
- phpstorm 左边的文件列表没用了 怎么弄出来
ALT+1ALT+数字键,是各种工具栏的显示与隐藏快捷键,你可以挨个试一下.
- pytorch 优化器调参
torch.optim 如何使用optimizer 构建 为每个参数单独设置选项 进行单次优化 optimizer.step() optimizer.step(closure) 算法 如何调整学习率 ...
- jquery tab点击切换的问题
问题: 页面结构见下 <div id="wrap"> <li> <a href="#" class="active&qu ...
- SuperSocket根据条件获取 Session
如果你有一个自定义的属性 "CompanyId" 在你的 AppSession 类之中,如果你想要获取这个属性等于某值的 的所有 Session, 你可以使用 AppServer ...
- HDU 2546 01背包问题
这里5元是个什么意思呢.差不多就是特殊情况了. 就是说最贵的那个东西先不买.并且最后要留下5元去买那个最贵的. 也就是说对现在金钱-5 拿剩下的钱去对减去最贵的商品后的商品dp.看这些剩下的钱能买多少 ...
- Python--day30--软件开发架构
软件开发架构: C/S架构: B/S架构: B/S架构和C/S架构的关系:
- js将单个反斜杠转化为斜杠的问题
var two="https://192.255.255.255:3215/2019/2/26/16/13/b2e8929483c66cefddbe1e49a007e3f8-47358FC3 ...
- css 百分比继承关系的探讨
引入:近日在回顾css基础的时候发现了一个有趣的问题,就是css在继承百分比类属性的时候是继承百分比后再根据父级宽高计算,还是继承父级根据百分比计算过后的绝对值.下面举一个简单的例子来描述这一个问题, ...