题目大意

又到了诺德县的百姓孝敬夹克大老爷的日子,带着数量不等的铜板的村民准时聚集到了村口。
夹克老爷是一位很”善良”的老爷,为了体现他的仁慈,有一套特别的收钱的技巧。
1、让所有的村民排成一队,然后首尾相接排成一个圈。
2、选择一位村民收下他的铜钱,然后放过他左右两边的村民。
3、让上述三位村民离开队伍,并让左右两边的其他村民合拢起来继续围成一个圈。
4、重复执行2、3直到村民全部离开。
夹克老爷的家丁早早的组织村民排成一队并清点了村民人数和他们手里的铜钱数量。
作为夹克老爷的首席师爷,你要负责按照夹克老爷的收钱技巧完成纳贡的任务。
聪明的你当然知道夹克老爷并不像他表现出来的那样仁慈,能否收到最多的钱财决定了你是否能够继续坐稳首席师爷的位置。
今年村民的人数是N,恰巧是3的倍数。

提示:第2步选择村民时不需要按照任何顺序,你可以选择任何一位仍然在队伍里的村民收取他手中的钱财并放走他两侧的村民(这就意味着你无法同时收取到这两位的铜钱了)

Input

第一行1个整数N(3 <= N <= 10^5 - 1, N % 3 == 0)
第2 - N + 1行:每行1个数对应村民i手中的铜钱。(0 <= m[i] <= 10^9)

Output

一个整数,说明在夹克老爷的收钱规则下你最多能够为夹克老爷搜刮到多少铜钱

Input示例
6
6
2
3
4
5
9

Output示例
13

Solution

一看到题,就想起了2016年的一道联考题“怎样打好隔膜”,但是那道题更难,还有好多连接不连续点的传送门,连打个爆搜都是NPC……

而这道题要简单些,一次只处理连续的民。如果我们只想到了贪心,一定会先收下钱最多的村民的钱。用优先队列维护即可。但这样的贪心显然不能证明……

其实在贪心的基础上,再加一步模拟退流就可以了。如果我们选了一个村民i,收走了他的钱aia_{i},就可以把他的钱数更新为aleft[i]a_{left[i]}+aright[i]a_{right[i]}-aia_{i}。其中left[i]和right[i]分别表示和i村民相邻的两个村民。这样再选上这个点时,就相当于不选i而选与i相邻的村民,这样就能保证正确性(其实我也没证过)。

代码

#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;
typedef long long ll;
typedef pair<ll,int> Pa;
priority_queue<Pa>q1,q2;
ll a[600010];
int next[300010],pre[300010];
int tp()
{while (!q2.empty()&&q1.top()==q2.top())//{q1.pop();q2.pop();}return q1.top().second;
}
void del(Pa x1)
{q2.push(x1);//q2队列里存的是删除的数
}
int main()
{int n;scanf("%d",&n);for (int i=1;i<=n;i++)scanf("%lld",&a[i]);for (int i=1;i<=n;i++){q1.push(make_pair(a[i],i));pre[i]=i-1,next[i]=i+1;if (!pre[i]) pre[i]=n;if (next[i]>n) next[i]=1;}int numm=n/3;ll ans=0;for (int i=1;i<=numm;i++){int x=tp();q2.push(make_pair(a[x],x));ans+=(ll)a[x];if (!pre[x]){q2.push(make_pair(a[next[x]],next[x]));pre[next[next[x]]]=0;continue;}else{if (next[x]>n){q2.push(make_pair(a[pre[x]],pre[x]));next[pre[pre[x]]]=n+1;continue;}}int pr=pre[x],ne=next[x];pre[x]=pre[pr];next[x]=next[ne];pre[next[x]]=x;next[pre[x]]=x;a[x]=a[pr]+a[ne]-a[x];q1.push(make_pair(a[x],x));q2.push(make_pair(a[ne],ne));q2.push(make_pair(a[pr],pr));}printf("%lld\n",ans);return 0;
}

51nod138夹克老爷的逢三抽一相关推荐

  1. 51nod1380 夹克老爷的逢三抽一

    问题等价于选出$n / 3$个不相邻元素是权值和最大 这是一个经典贪心问题,同种树,拿堆维护即可,复杂度$O(n \log n)$ #include <queue> #include &l ...

  2. C语言逢三必过的小游戏,逢3过游戏全部数字表 逢七必过和逢三必过,都是哪些数字要喊过。哪位高人有准确数字呢?...

    逢七必过和逢三必过,都是哪些数字要喊过.哪位高人有准确数字呢? 这位兄台打算喝酒的时候用啊,你准备用到多少呢.100以内的有以下这些.估计因该够用了吧,喝高了后用不到多少的. 3.6.7.9.12.1 ...

  3. 基于酷Q的崩坏三抽卡模拟_C++入门级酷Q插件开发

    插件简介 为了高仿官方抽卡概率,我设计调整了数据,在一定程度上满足了出货期望和官方概率近视相等~(注意:不同十连间抽卡保底事件是相互独立的,同卡池单抽十连共享保底,抽卡保底不与抽卡的人有关)(Pro和 ...

  4. 【JAVA】逢三退一的第二种思路(面向对象)

    提供第二种思路: 题目:500个小孩手拉手围成一圈,每个小孩有一编号,数数,当数到第三个时,将该小孩删除,求最后剩下的那个小孩是这500个小孩中的第几个. 面向对象编程,首先分析,有多少个对象? 两个 ...

  5. linux如何运行java程序,Linux环境下运行简单java程序

    一.安装java 1.下载jdk8 选择对应jdk版本下载.(Tips:可在Windows下载完成后,通过FTP或者SSH到发送到Linux上) 2. 登录Linux,切换到root用户 su roo ...

  6. python的内置字典数据类型_python 数据类型元组与字典内置方法

    1.元组 (1)元组是不可变的列表,能存多个值:如果多个值只有取得需求,没有改的需求,用元组最合理 (2)定义:在()内用逗号隔开,可以存任意类型的值 注意:当元组只有一个元素时,要在后面加逗号 # ...

  7. 市场调研工具—铺货率调查

    什么是铺货率调查,铺货率调查不做不行吗,非做不可吗? 要回答这个问题,可能需要重新回到管理的层面上来看. 实际上,铺货率调查也谈不上什么非可非不可的,对于粗放式经营,铺货率调查的意义不大,对于精细化运 ...

  8. 说话中的引题技巧,及电影刘三姐中的歌词汇总

    电影刘三姐的插曲,真是简单好唱又好听.其中的歌词,通俗易懂.因为觉得歌词好,所以在这里汇总一下. 这些歌词的共同特点,就是先引题,再说话.比如说: 隔山唱歌山答应,隔水唱歌水回声,今日歌场初会面,三位 ...

  9. (二进制枚举+思维)1625 夹克爷发红包

    1625 夹克爷发红包 1 秒 131,072 KB 20 分 3 级题 在公司年会上,做为互联网巨头51nod掌门人的夹克老爷当然不会放过任何发红包的机会. 现场有n排m列观众,夹克老爷会为每一名观 ...

最新文章

  1. 无边框窗体和用户控件以及权限
  2. 【重磅】助力企业复工,飞书宣布为中小企业提供三年免费服务
  3. tensorflow-gpu 常用网址
  4. ipadpro+打开html文件,iPadPro日常基本功能的使用技巧汇总
  5. UVA 1646 Edge Case
  6. Leetcode 160. 相交链表 解题思路及C++实现
  7. 【数理知识】《数值分析》李庆扬老师-第1章-数值分析与科学计算引论
  8. 导出PDF和Zip文件的工具类
  9. 网络编程中的超时检测
  10. 2018年技术上该怎样努力
  11. 让美团、京东、搜狐都说好的数据仓库,牛在哪?
  12. 用java代码模拟鼠标双击事件
  13. 我常去的编程技术网站
  14. java写一个android程序_【Android开发笔记】3.编写第一个Android程序
  15. 2020北京邮电大学计算机学院803初试经验分享
  16. HTTP状态码完整介绍
  17. 【计算机体系结构-01】指令集体系结构、微体系结构简介
  18. 首台微型计算机,全球首台骁龙820微型电脑:DragonBoard 820c
  19. 我爱我专业计算机为主题的演讲稿,我爱我专业演讲稿
  20. java 画笔粗细,javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板

热门文章

  1. SD-WAN组网:一文读懂万千站点自由互联的奥秘
  2. 苹果、FB和谷歌都准备解读情绪 它们打算怎么做?
  3. python两个for循环顺序_python两个for循环顺序_Python编程基础2——顺序、循环、选择...
  4. 智伴机器人或阿尔法蛋_阿尔法蛋S为何销量第一,看完这篇儿童智能机器人的测评就懂了...
  5. 服务器信号不好怎么弄,手机信号不好怎么办?教你几招,再也不用满世界找信号了...
  6. 2021年中国信托行业发展现状及56家信托公司营业情况分析[图]
  7. 【BP数据预测】基于matlab鸟群算法优化BP神经网络数据预测【含Matlab源码 1772期】
  8. Vue3 直接使用Vuex的mapState和mapGetters时报错的分析及解决方案
  9. PS中渐变映射使用方法与技巧
  10. 《刀剑封魔录》原创全攻略 二