Link:https://www.lydsy.com/JudgeOnline/problem.php?id=1150

Solution:

思路和洛谷P1484完全相同

只不过将求最大不相邻的点权改为最大不相邻的边权

([P1484] 种树:http://www.cnblogs.com/newera/p/8977924.html)

但在边界条件上还是卡了好长时间,也许一开始我就理解错了

正解应该是将a[0]=INF,保证选过a[1]后绝不选a[2],因为a[1]在不影响剩余点的位置的前提下比a[2]更优

我一开始认为可以由a[1]转移到a[2],于是把left[0]=1

这明显是没有必要的,但为什么会WA?以后再看吧

Code:

#include <bits/stdc++.h>

using namespace std;
#define F first
#define S second
typedef long long ll;
typedef pair<ll,int> P; const int MAXN=1e5+;
priority_queue<P,vector<P>,greater<P> > que;
int n,k,dat[MAXN],l[MAXN],r[MAXN],vis[MAXN];
ll d[MAXN],res=; int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++) scanf("%d",&dat[i]);
for(int i=;i<=n;i++)
l[i-]=i-,r[i-]=i,d[i-]=dat[i]-dat[i-],que.push(P(d[i-],i-)); d[]=d[n]=1e17; //边界处理
while(k--)
{
while(vis[que.top().S]) que.pop();
P t=que.top();que.pop();
res+=t.F;vis[l[t.S]]=vis[r[t.S]]=true; d[t.S]=t.F=d[l[t.S]]+d[r[t.S]]-d[t.S];que.push(t); l[t.S]=l[l[t.S]];r[t.S]=r[r[t.S]];
r[l[t.S]]=t.S;l[r[t.S]]=t.S;
} printf("%lld",res);
return ;
}

最新文章

  1. JS中误用/g导致的正则test()无法正确重复执行
  2. 操作系统开发系列—13.a.进程 ●
  3. 添加css的方式:link与@import区别
  4. Python全栈--7.3--模块补充configparser--logging--subprocess--os.system--shutil
  5. eclipse中的maven配置
  6. HTML5 Canvas渐进填充与透明
  7. Linux系统编程(5)——文件与IO之mmap函数
  8. 简单的CSS网页布局--三列布局
  9. Spark简述及基本架构
  10. 中位数的和_KEY
  11. (Python3) 运行结果 = 10,40 的困扰我一顿饭时间的 代码
  12. (已解决)Eclipsez中打不开c++文件,显示Editor could not be initialized.
  13. centos /data目录扩容
  14. arcgis pro2.3教程与问题集持续更新(一)
  15. NUC972裸机调试步骤
  16. python循环结构
  17. Centos7 安装单节点Torque PBS
  18. linux系统命令记录
  19. 51nod-1103-抽屉原理
  20. 文件 md5 查看 命令

热门文章

  1. JQuery队列queue与原生模仿其实现
  2. WordPress后台edit-tags.php里无限栏目分类实现
  3. WCF分布式开发步步为赢(13):WCF服务离线操作与消息队列MSMQ
  4. NOIP2016愤怒的小鸟 [状压dp]
  5. 【BZOJ2832&amp;&amp;3874】宅男小C [模拟退火][贪心]
  6. 【STSRM12】夏令营(分治决策单调+主席树)
  7. [bzoj1568][JSOI2008]Blue Mary开公司——李超线段树
  8. Educational Codeforces Round 40 A B C D E G
  9. cygwin与vim配置
  10. vim 源码分析