JZOJ4726. 种花
来源:互联网 发布:windows一键web安装包 编辑:程序博客网 时间:2024/04/30 04:38
题目大意
给定一个
求最大权值和。
Data Constraint
题解
题解好机智!支持撤销的贪心!
以
假如当前我们取出了位置
可以这样理解,删去了
SRC
#include<cstdio>#include<cstdlib>#include<cstring>#include<iostream>#include<algorithm>#include<queue>using namespace std ;#define N 200000 + 10struct Note { int v , h ; Note ( int V = 0 , int H = 0 ) { v = V , h = H ; }} ;bool operator < ( Note a , Note b ) { return a.v < b.v ; }priority_queue < Note > Q ;bool flag[N] ;int a[N] , Pre[N] , Next[N] ;int n , m , ans ;int main() { scanf( "%d%d" , &n , &m ) ; for (int i = 1 ; i <= n ; i ++ ) { scanf( "%d" , &a[i] ) ; Pre[i] = (i + n) % (n + 1); Next[i] = (i + 1) % (n + 1) ; if ( Pre[i] == 0 ) Pre[i] = n ; if ( Next[i] == 0 ) Next[i] = 1 ; Q.push( Note( a[i] , i ) ) ; } if ( m > n / 2 ) { printf( "Error!\n" ) ; return 0 ;} while ( !Q.empty() && m ) { Note top = Q.top() ; Q.pop() ; if ( flag[top.h] ) continue ; m -- ; ans += top.v ; top.v = a[top.h] = a[Pre[top.h]] + a[Next[top.h]] - a[top.h] ; flag[Pre[top.h]] = flag[Next[top.h]] = 1 ; Pre[top.h] = Pre[Pre[top.h]] ; Next[top.h] = Next[Next[top.h]] ; Next[Pre[top.h]] = top.h ; Pre[Next[top.h]] = top.h ; Q.push( top ) ; } printf( "%d\n" , ans ) ; return 0 ;}
以上.
1 0
- JZOJ4726. 种花
- Jzoj4726 种花
- jzoj4726. 【NOIP2016提高A组模拟8.22】种花 贪心+堆
- JZOJ4726【NOIP2016提高A组模拟8.22】种花 增加改错机制的后贪心
- JZOJ4726. 【NOIP2016提高A组模拟8.22】种花(2017.8DP&贪心专题)
- 【jzoj4726】【NOIP2016提高A组模拟8.22】【种花】【可撤销贪心】
- 种花
- sjtu1002.二哥种花生
- 二哥种花生
- 种花的邮差
- 种花的邮差
- 二哥种花生练习
- 无心插柳柳成荫,有心种花花不开
- 1002. 二哥种花生
- 1002 二哥种花生
- Java--种花的问题
- 算法5 种花
- 【NOIP2017模拟】猫&种花
- 数据结构实验之图论二:基于邻接表的广度优先搜索遍历
- 【POJ1487】——Single-Player Games(高斯消元)
- CSS3 垂直居中实现方法
- 把金额字符串加千分位
- 图书
- JZOJ4726. 种花
- C#实现用树型列表动态显示菜单,Winform 常用的UI设计
- android Fragments详解一:概述
- 程序员们,天天加班,真的有意义吗?
- 日志收集架构-ELK
- Recast & Detour 寻路引擎的基本流程
- 图片上传本地预览插件
- 大唐之路(1)PE/PP/PS/PVC/PET之间的区别
- Nginx(6) nginx反向代理配置websocket,以及配置后websocket连接后立即断开的解决方法