题目链接: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.lang.ClassCastException: java.util.ArrayList cannot be cast to com.github.pagehelper.Page pagehelper报错无法类型转化。

    报错信息: 严重: Servlet.service() for servlet [springmvc] in context with path [] threw exception [Request ...

  2. javascript 函数初探 (六)--- 闭包初探#3

    相关定义与闭包: 实际上,每个函数都可以被认为是一个闭包.因为每个函数都在其所在域(即该函数的作用域)中维护了某种联系. 但在大多数的时候,该作用于在函数体内被执行完之后就被自行销毁了.---除非发生 ...

  3. Unix domain socket

    转载:http://www.cnblogs.com/chekliang/p/3222950.html socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是 ...

  4. Git使用笔记01

    本文基本的參考文章链接例如以下所看到的: Pro Git(中文版) Git教程 Git使用教程 简单介绍与说明 Git是一个分布式版本号管理系统,是为了更好地管理Linux内核开发而创立的.Git能够 ...

  5. react request.js 函数封装

    1.request.js  函数封装 import { Toast } from 'antd-mobile'; import axios from 'axios'; import store from ...

  6. Word Ladder(找出start——end的最短长度)——bfs

    Word Ladder Given two words (start and end), and a dictionary, find the length of shortest transform ...

  7. linux遍历目录源代码

    <pre code_snippet_id="1622396" snippet_file_name="blog_20160324_1_744516" nam ...

  8. OA权限树搭建 代码

    <ul id="tree"> <s:iterator value="#application.topPrivilegeList"> &l ...

  9. java开始到熟悉105-107

    1,HashMap基本用法 package list; import java.util.HashMap; import java.util.Map; /** * 测试map的基本用法 * @auth ...

  10. mysql手动停止无响应查询方法

    http://www.chenweionline.cn/archives/61.htm