$Noip2018/Luogu5019/Luogu1969$ 铺设道路
2024-09-03 08:43:58
去年$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
最新文章
- 正则表达式工具RegexBuddy使用教程
- 【UOJ#33】【UR#2】树上GCD 有根树点分治 + 容斥原理 + 分块
- c#中各类日期的计算方法,收藏
- Longest Palindromic Substring
- coreData 深入理解4 --总结 (线程安全与同步--iOS5 前后对比)
- c++网络通信(与服务器通信聊天)和c#网络通信
- apk当安装程序将文件复制到手机自带的指定文件夹
- SEQ序号与ACK序号理解总结
- LeetCode 339. Nested List Weight Sum (嵌套列表重和)$
- LeetCode - 520. Detect Capital
- springboot~Profile开发环境与单元测试用不同的数据库
- WPF气泡样式弹窗效果
- SQL性能优化十条经验,后台程序员都需要掌握
- Shell 变量、脚本参数
- java实现随机产生6位数的方法总结
- 网站优化--减少HTTP请求
- spark sql中进行sechema合并
- MongoDB整库备份+整库导入
- 我们为什么选择JAVA
- Java进阶知识点7:不要只会写synchronized - JDK十大并发编程组件总结
热门文章
- 2018-11-26-WPF-通过-DrawingContext-DrawImage-绘制图片
- Data Flow-File Read-详细过程
- linux下修改gcc编译器版本
- JavaScript 字符串转为数字
- 如果用HTML5做一个在线视频聊天【原创】
- HTML静态网页---样式属性
- POJ 2752 Seek the Name, Seek the Fame next数组理解加深
- iptables [match] 常用封包匹配参数
- Python--day24--继承
- CodeForces 620E";New Year Tree";(DFS序+线段树+状态压缩)