XTU 1264 Partial Sum【思维+贪心】

来源:互联网 发布:有深度的书籍推荐知乎 编辑:程序博客网 时间:2024/06/06 11:04

Partial Sum

Accepted : 75 Submit : 326Time Limit : 3000 MS Memory Limit : 65536 KB

Partial Sum

Bobo has a integer sequence a1,a2,,an of length n. Each time, he selects two ends 0l<rn and add |rj=l+1aj|C into a counter which is zero initially. He repeats the selection for at most m times.

If each end can be selected at most once (either as left or right), find out the maximum sum Bobo may have.

Input

The input contains zero or more test cases and is terminated by end-of-file. For each test case:

The first line contains three integers nmC. The second line contains n integers a1,a2,,an.

  • 2n105
  • 12mn+1
  • |ai|,C104
  • The sum of n does not exceed 106.

Output

For each test cases, output an integer which denotes the maximum.

Sample Input

4 1 1-1 2 2 -14 2 1-1 2 2 -14 2 2-1 2 2 -14 2 10-1 2 2 -1

Sample Output

3420

Source

XTU OnlineJudge
题目大意:
给你N个数,最多有m次操作,每次操作选择两个端点,l,r,取得的值为|Σ(【l+1,r】)a【i】|-C.
任意点最多只能做为一次端点。
问最多能够取得的值为多少?

思路:

每次操作可以看成两个区间和相减:

|Σ(【l+1,r】)a【i】|=Sum【1,r】-Sum【1,l】或者是-(Sum【1,r】-Sum【1,l】);
那么每次操作肯定是要加一个前缀和,以及减去一个前缀和。
那么m次操作就是加上m个前缀和,以及减去m个前缀和。

那么我们贪心的去操作,每次操作的时候都加入此时没选过的最大的前缀和作为正的,最小的前缀和作为负的。
那么枚举操作次数然后维护一个最大值即可。

Ac代码:

#include<stdio.h>#include<string.h>#include<iostream>#include<algorithm>using namespace std;#define ll __int64ll a[150000];ll sum[150000];int main(){    int n,m;    ll C;    while(~scanf("%d%d%I64d",&n,&m,&C))    {        for(int i=1;i<=n;i++)scanf("%I64d",&a[i]);        for(int i=1;i<=n;i++)        {            if(i==1)sum[i]=a[i];            sum[i]=sum[i-1]+a[i];        }        ll output=0;        sort(sum,sum+1+n);        ll cnt=0;        ll ans=0;        for(int i=0;i<m;i++)        {            cnt+=(sum[n-i]-sum[i]-C);            ans=max(ans,cnt);        }        printf("%I64d\n",ans);    }} 







原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 拉轿车的大车出车祸车怎么办 美图m6手机忘记锁屏密码怎么办 微信验证码登录收不到验证码怎么办 微信被限制登录收不到验证码怎么办 微信登录申诉收不到短信怎么办 登录微信手机收不到验证码怎么办 美图t8冲一会电就发烧怎么办 美图t8系统不小心升级了 怎么办 美图手机看相册视频就会变黑怎么办 苹果4s屏幕唤醒速度慢怎么办 美图m4换电池后不显示卡怎么办 美图手机久没充电再充没反应怎么办 美图6s开不开机怎么办 苹果4s照片不能拍照黑屏怎么办 美图手机开机键坏了怎么办 金立金刚二手机烧卡怎么办 金立金刚手机开不开机怎么办 小米4手机拆机信号不好怎么办 荣耀自带游览器无法正常打开怎么办 苹果4s电池越来越不耐用怎么办 苹果4s电池不耐用了怎么办 苹果手机4s电池不耐用怎么办 红米4s电池不耐用怎么办 32位app私密相册打不开怎么办 红米手机取卡针断手机里了怎么办 我差评了客服打电话骂我怎么办 顺丰快递在预计时间没有回来怎么办 同款商品比京东便宜怎么办 京东自营不支持7天退货怎么办 天猫买了一个月的电动车坏了怎么办 发票号码和机打号码不一致怎么办 交电费的本子弄丢了怎么办 快递正在派件中发现地址错了怎么办 快递当天送达当天签收还算延怎么办 深圳国税公众号预约取号公司怎么办 社保买了停了2年怎么办 qq号被冻结申请不回来了怎么办 qq号被冻结 手机密保忘了怎么办 微信账号封了2天怎么办 买qq号被申诉找回了怎么办 收到了京东白条的催款通知单怎么办