题目链接:http://codeforces.com/problemset/problem/262/B

题目意思:给出 n 个数和恰好一共要做的操作总数k。通过对n个数进行k次操作,每次操作可以把a[i] 转化为 -a[i](当然也可以对同一个数进行 <= k次操作)。问k次操作之后,整个序列的和最大为多少。

首先要知道整个序列中数的分布是如何的,有3种情况:1、都为正数。此时k次操作只需要考虑序列中第一个数,因为它是最小的。  2、都为负数。容易想到,要尽可能把最小的负数变为相应的正数,如果变完之后,还没有到k次操作,那么就考虑负数和正数的交接处,看究竟是哪个数较小。

3、负正都有。这种情况和第2种情况处理类似。

另外要注意n = 1,即整个序列只有一个数的情况。

 #include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
using namespace std; const int maxn = 1e5 + ;
int a[maxn]; int main()
{
int n, k, i, ans, cnt;
while (scanf("%d%d", &n, &k) != EOF)
{
cnt = ans = ;
for (i = ; i <= n; i++)
{
scanf("%d", &a[i]);
ans += a[i];
}
if (a[] >= && a[n] >= ) // positive
{
if (k % )
ans -= * a[];
}
else // negative or ne+po
{
for (i = ; i <= n; i++)
{
if (a[i] < && cnt < k)
{
ans -= * a[i];
cnt++;
}
else if (cnt >= k || a[i] >= )
break;
}
if (cnt != k)
{
k -= cnt;
if (n != )
{
a[i] = (-a[i-] > a[i] ? a[i] : -a[i-]); // 正负交接处哪个数更小
if (k % )
ans -= * a[i];
}
else // 整个序列只有1个数的情况
if (k % )
ans += * a[];
}
}
printf("%d\n", ans);
}
return ;
}

codeforces B. Roma and Changing Signs 解题报告的更多相关文章

  1. codeforces C1. The Great Julya Calendar 解题报告

    题目链接:http://codeforces.com/problemset/problem/331/C1 这是第一次参加codeforces比赛(ABBYY Cup 3.0 - Finals (onl ...

  2. codeforces B. Eugeny and Play List 解题报告

    题目链接:http://codeforces.com/problemset/problem/302/B 题目意思:给出两个整数n和m,接下来n行给出n首歌分别的奏唱时间和听的次数,紧跟着给出m个时刻, ...

  3. codeforces 433C. Ryouko's Memory Note 解题报告

    题目链接:http://codeforces.com/problemset/problem/433/C 题目意思:一本书有 n 页,每页的编号依次从 1 到 n 编排.如果从页 x 翻到页 y,那么| ...

  4. codeforces 556B. Case of Fake Numbers 解题报告

    题目链接:http://codeforces.com/problemset/problem/556/B 题目意思:给出 n 个齿轮,每个齿轮有 n 个 teeth,逆时针排列,编号为0 ~ n-1.每 ...

  5. codeforces 510B. Fox And Two Dots 解题报告

    题目链接:http://codeforces.com/problemset/problem/510/B 题目意思:给出 n 行 m 列只有大写字母组成的字符串.问具有相同字母的能否组成一个环. 很容易 ...

  6. codeforces 505A. Mr. Kitayuta's Gift 解题报告

    题目链接:http://codeforces.com/problemset/problem/505/A 题目意思:给出一个长度不大于10的小写英文字符串 s,问是否能通过在字符串的某个位置插入一个字母 ...

  7. codeforces 499A.Inna and Pink Pony 解题报告

    题目链接:http://codeforces.com/problemset/problem/499/A 题目意思:有两种按钮:1.如果当前观看的时间是 t,player 可以自动处理下一分钟,姑且理解 ...

  8. codeforces 374A Inna and Pink Pony 解题报告

    题目链接:http://codeforces.com/problemset/problem/374/A 题目意思:给出一个 n 行  m 列 的棋盘,要将放置在坐标点为(i, j)的 candy 移动 ...

  9. codeforces 471B. MUH and Important Things 解题报告

    题目链接:http://codeforces.com/problemset/problem/471/B 题目意思:有 n 个 tasks,编号依次为 1 - n,每个 task 都有一定的难度值来评估 ...

随机推荐

  1. 天天算法————快排及java实现。

    快排说的很邪乎,原理懂了,实现自然也就出来了: public void static quickSorted( int[] a ,int low ,int high){ //递归结束条件 if(low ...

  2. javascript 对象初探 (六)--- call()和apply()初探

    在javascript中,每个函数都具有call()和apply()两个方法,您可以用她们来触发函数,并指定相关的调用参数. 此外,这两个方法还有另一个功能,就是她可以让一个对象去‘借用‘另一个对象的 ...

  3. Code Sign error: a valid provisioning profile matching the application's Identifier 'com. sensoSource.VoiceRecorder' could not be found

    如果不是com. sensoSource.VoiceRecorder,在xxx-info.plist里Bundle identifier里替换成你的证书名 xxx是你的工程名 在Bundle iden ...

  4. gulp安装+一个超简单入门小demo

    gulp安装參考.gulp安装參考2. 一.NPM npm是node.js的包管理工具.主要功能是管理.更新.搜索.公布node的包. Gulp是通过npm安装的. 所以首先,须要安装node.js. ...

  5. Examples osgparticleshader例子学习

    Examples osgparticleshader  粒子与shader的使用 参考文档 http://blog.csdn.net/csxiaoshui/article/details/234345 ...

  6. 转: linux下的自动对时

    转自: http://www.cnblogs.com/vimmer/archive/2012/05/17/2505785.html 评注:date 命令格式为: date -s 2012-08-02 ...

  7. mysql主从一致问题

    https://www.cnblogs.com/gomysql/p/3662264.html

  8. Android Design Support Library概览

    尊重劳动成果.转载请注明出处:http://blog.csdn.net/growth58/article/details/47972467 关注新浪微博:@于卫国 邮箱:yuweiguocn@gmai ...

  9. Go语言中的单引号、双引号、反引号

    =Start= 搜索关键字: golang single quotes golang double quotes golang back quotes 参考结果: 结论写在最前:在Go语言中不倾向于使 ...

  10. Asp.Net初学小结 判断数组中是否有重复的数据

    Asp.Net初学小结   第一章   1.搭建Asp.net开发环境   1).net FrameWork(VS) 2)IIS(xp:5.1,2003:6.0,vista:70,win7:7.5)  ...