金中欢乐赛 A题
这道题就贪心.... 正的一坨和负的一坨间隔
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<queue>
#include<cmath>
#include<cstdlib>
#define LL long long
using namespace std;
const int M=;
LL read(){
LL ans=,f=,c=getchar();
while(c<''||c>''){if(c=='-') f=-; c=getchar();}
while(c>=''&&c<=''){ans=ans*+(c-''); c=getchar();}
return ans*f;
}
LL lx[M],rx[M],w[M];
LL n,k,tot;
LL cnt=;
LL sum[M],ans;
bool f[M];
struct node{
LL w,pos;
bool operator<(const node &x) const{return w>x.w;}
};
priority_queue<node>q;
LL pd(LL x){return x>=?x:-x;}
int main()
{
//freopen("input.in","r",stdin);
LL v;
n=read(); k=read();
for(int i=;i<=n;i++){
v=read();
if(v*sum[cnt]>=) sum[cnt]+=v;
else sum[++cnt]=v;
}
if(sum[]*sum[cnt]>=) sum[]=sum[cnt]+sum[],cnt--;
for(int i=;i<=cnt;i++)
if(sum[i]>) ans+=sum[i],tot++;
//printf("%lld\n",ans);
if(tot<=k){printf("%lld\n",ans); return ;}
LL now=tot-k; //printf("[%lld]\n",ans);
q.push((node){pd(sum[]),});
lx[]=cnt; rx[]=; w[]=pd(sum[]);
q.push((node){pd(sum[cnt]),cnt});
lx[cnt]=cnt-; rx[cnt]=; w[cnt]=pd(sum[cnt]);
for(int i=;i<cnt;i++)
q.push((node){pd(sum[i]),i}),lx[i]=i-,rx[i]=i+,w[i]=pd(sum[i]);//printf("%d\n",pd(sum[i]));
//printf("[%d]\n",now);
while(now){
node x=q.top(); q.pop();
LL k=x.pos;
if(f[k]) continue;
//printf("%lld\n",w[k]);
ans-=w[k]; now--;
LL l=lx[k],r=rx[k];
f[l]=; f[r]=;
cnt++;
sum[cnt]=sum[k]+sum[l]+sum[r];
w[cnt]=pd(sum[cnt]);
q.push((node){w[cnt],cnt});
lx[cnt]=lx[l]; rx[cnt]=rx[r];
rx[lx[l]]=cnt; lx[rx[r]]=cnt;
}
//printf("%lld\n",cnt);
printf("%lld\n",ans);
return ;
}
金中欢乐赛 A题的更多相关文章
- 金中欢乐赛 C题
题目传送门 这道题 hash就可以写了 弄了半天有点智障 强行压一压就okay了的说 #include<cstdio> #include<cstring> #include&l ...
- 上海高校金马五校赛 F题:1 + 2 = 3?
链接:https://www.nowcoder.com/acm/contest/91/F来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语言26214 ...
- 无聊的活动/缘生意转(2018 Nova OJ新年欢乐赛B题)解题报告
题目2(下面的太抓 我重新写了个背景 其他都一样) 无聊的活动 JLZ老师不情愿的参加了古风社一年一度的活动,他实在不觉得一群学生跳舞有什么好看,更不明白坐在身后的学生为什么这么兴奋(看小姐姐),于是 ...
- Comet OJ - 2019国庆欢乐赛 C题 两排房子
###题目链接### 题目大意:这里有横着的两排房子,给你每个房子的左端点和右端点.若两排房子中分别有两个房子 x y ,他们在横坐标上有重叠部分(端点重叠也算),则被称为 “对门” 关系. 问你总共 ...
- contesthunter CH Round #64 - MFOI杯水题欢乐赛day1 solve
http://www.contesthunter.org/contest/CH Round %2364 - MFOI杯水题欢乐赛 day1/Solve Solve CH Round #64 - MFO ...
- 2014.8.3情人节欢乐赛【Benny的农场】
Benny的农场 (farm.pas/.c/.cpp) 时间限制:1s.空间限制:128MB 题目描述: Benny有一片农田需要灌溉.农田的形状为矩形,并被分为许多小块.每一块中都有一些水管.共有1 ...
- 2017年第六届数学中国数学建模国际赛(小美赛)C题解题思路
这篇文章主要是介绍下C题的解题思路,首先我们对这道C题进行一个整体的概括,结构如下: C题:经济类 第一问:发现危险人群. 发现:欺诈的方式开始.雇佣或浪漫的承诺. 数据→确定特定的经济萧条地区→确定 ...
- 2018年数学建模国赛B题 智能RGV的动态调度策略
第一种情况大致思路: 每秒判断各个CNC的状态,若工作完成或者是出于空闲状态下则向RGV发出一个请求.同时,RGV每秒判断自己的状态(上下料.移动.闲置.清洗等),如果是处于闲置状态,则启用调度算法, ...
- 金中半日baoling游-----stoi
蒟蒻又来水博客了,写个游记啦啦啦啦,好像是第一篇游记咯. 温馨提示:愚人节写的博客看了后会变棒棒哦!(麻麻再也不用担心我被骗) 进入正题 3月31日早6:30左右起床了,然后就是....(此处可省略) ...
随机推荐
- mysql 5.7.19 zip版本 windows安装步骤
请注意此文档用于msyql5.7系列及以后版本(包括最新 mysql 8.0.11)zip版本windows下的安装1.下载mysql省略2.解压mysql到D:\Program Files\mysq ...
- 环境变量 - Maven
Linux 1. 备份并编辑配置文件 # cp /etc/profile /etc/profile.bak # vi /etc/profile 2. 设置Maven环境变量 export MAVEN_ ...
- Python的文件输入输出,如何追加内容,读取内容,添加内容
python主要的文件打开的几种访问模式 模式可以为读模式('r').写模式('w')或追加模式('a'),当然还有rb.wb.ab.r+.w+.a+.rb+.wb+.ab+,然而实际从代码上我也没看 ...
- 基于HTML5移动web应用
一.基于HTML5移动web应用 1.canvas 绘图 2.多媒体 3.本地存储 4.离线应用 5.使用地理位置 6.移动web框架 二.具体说明 1.HTML5标准最大的变化就是支持Web绘图 ...
- zabbix从入门到精通
第1章 zabbix监控 1.1 为什么要监控 在需要的时刻,提前提醒我们服务器出问题了 当出问题之后,可以找到问题的根源 网站/服务器 的可用性 1.1.1 网站可用性 在软件系统的高可靠性(也 ...
- 安装 Win10 & Ubuntu 16.04 双系统以及 Ubuntu 配置深度学习环境记录
0. 前言 坑爹的Ubuntu晚上运行还是好好的,第二天中午的时候打开机器发现屏幕分辨率不正常了:2K屏显示800*600左右的分辨率(无法调节),一个图标一拳头大,窗口和网页显示不全.Google查 ...
- linux备忘录-shell脚本
知识 shell执行方式 shell执行方式有 通过source或. 在现在的bash环境中执行脚本 变量等会保持 通过bash shell.sh或sh shell.sh 使用一个新的bash环境执行 ...
- UVA 1085 House of Cards(对抗搜索)
Description Axel and Birgit like to play a card game in which they build a house of cards, gaining ...
- 牛客网/LeetCode/七月在线/HelloWorld114
除了知乎,还有这些网站与offer/内推/秋招/春招相关. 其中HelloWorld114更是囊括许多IT知识. 当然,我们可以拓宽思考的维度,既然课堂上的老师讲不好,我们可以自己找资源啊= => ...
- DFS(1)——hdu1518Square
一.题目回顾 题目链接:Square 题意:给你M根木棒,请判断这些木棒能否组成正方形. 二.解题思路 DFS+剪枝 [变量说明] sum:木棒的总长度 ave:形成的正方形的边长 maxlen:最长 ...