[ 题解 ] [ 贪心 ] H. Roma and Changing Signs (待更名)

http://codeforces.com/group/NVaJtLaLjS/contest/236618/problem/H

题意:

给出N个数字,包括正负数;以及数值K。

这个K表示给数字变换符号的次数,必须变换K次,同一个数可以反复翻转正负。

现在输出K次变换后所有数字的最大总和。

示例:

Input:

3 2
-1 -1 1

Output:

3

Input:

3 1
-1 -1 1

Output:

1

又是贪心。优先把变换机会给最小的负值,负值会变成很大的整数。

如果负值都变正数后还有变换机会,就不停变换最小的数好了。

最终就能得到最大的总和。

 1 #include <cstdio>
 2 #include <algorithm>
 3 using namespace std;
 4 int N=0,K=0;
 5 int nums[100002]={0};
 6 int min=0;
 7 int answer=0;
 8 int main()
 9 {
10     scanf("%d%d",&N,&K);
11     for(int n=1;n<=N;n++)
12         scanf("%d",nums+n);
13     sort(nums+1,nums+1+N);
14     for(int n=1;n<=N;n++)
15     {
16         if(K)
17         {
18             if(nums[n]<0)
19             {
20                 nums[n]=-nums[n];
21                 K--;
22             }
23             else
24             {
25                 K=K%2;
26                 if(K)
27                 {
28                     sort(nums+1,nums+1+N);
29                     nums[1]=-nums[1];
30                     K--;
31                 }
32             }
33         }
34         else break;
35     }
36     if(K)
37     {
38         K=K%2;
39         if(K)
40         {
41             sort(nums+1,nums+1+N);
42             nums[1]=-nums[1];
43         }
44     }
45 //    for(int n=1;n<=N;n++)
46 //        printf("%d,",nums[n]);
47 //    puts("");
48     for(int n=1;n<=N;n++)
49         answer+=nums[n];
50     printf("%d\n",answer);
51     return 0;
52 }

原文地址:https://www.cnblogs.com/Kaidora/p/10527490.html

时间: 2024-10-04 07:47:25

[ 题解 ] [ 贪心 ] H. Roma and Changing Signs (待更名)的相关文章

Most financial institutions 贪心 H

H - 贪心 Crawling in process... Crawling failed Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Submit Status Description Most financial institutions had become insolvent during financial crisis and went bankrupt or were bought b

Leetcode题解 - 贪心算法部分简单题目代码+思路(860、944、1005、1029、1046、1217、1221)

leetcode真的是一个学习阅读理解的好地方 860. 柠檬水找零 """ 因为用户支付的只会有5.10.20 对于10元的用户必须找一个5 对于20元的用户可以找(三个5)或者(一个10一个5),每次都从大的开始找起来 """ class Solution: def lemonadeChange(self, bills) -> bool: five = 0 ten = 0 for i in bills: if i == 5: five

【bzoj3671】[Noi2014]随机数生成器 贪心

题目描述 输入 第1行包含5个整数,依次为 x_0,a,b,c,d ,描述小H采用的随机数生成算法所需的随机种子.第2行包含三个整数 N,M,Q ,表示小H希望生成一个1到 N×M 的排列来填入她 N 行 M 列的棋盘,并且小H在初始的 N×M 次交换操作后,又进行了 Q 次额外的交换操作.接下来 Q 行,第 i 行包含两个整数 u_i,v_i,表示第 i 次额外交换操作将交换 T_(u_i )和 T_(v_i ) 的值. 输出 输出一行,包含 N+M-1 个由空格隔开的正整数,表示可以得到的字

BZOJ-1029: [JSOI2007]建筑抢修(贪心+堆优化)

1029: [JSOI2007]建筑抢修 Time Limit: 4 Sec  Memory Limit: 162 MBSubmit: 5137  Solved: 2278[Submit][Status][Discuss] Description 小刚在玩JSOI提供的一个称之为"建筑抢修"的电脑游戏:经过了一场激烈的战斗,T部落消灭了所有z部落的入侵者.但是T部落的基地里已经有N个建筑设施受到了严重的损伤,如果不尽快修复的话,这些建筑设施将会完全毁坏.现在的情况是:T部落基地里只有一

HDU 6695 Welcome Party (贪心)

2019 杭电多校 10 1005 题目链接:HDU 6695 比赛链接:2019 Multi-University Training Contest 10 Problem Description The annual welcome party of the Department of Computer Science and Technology is coming soon! Many students have been applying to show up at the welcom

Codeforces 1119E Pavel and Triangles (贪心)

Codeforces Global Round 2 题目链接: E. Pavel and Triangles Pavel has several sticks with lengths equal to powers of two. He has \(a_0\) sticks of length \(2^0=1\), \(a1\) sticks of length \(2^1=2\), ..., \(a_{n?1}\) sticks of length \(2^{n?1}\). Pavel wa

Codeforces 578B Or Game (前缀和 + 贪心)

Codeforces Round #320 (Div. 1) [Bayan Thanks-Round] 题目链接:B. "Or" Game You are given \(n\) numbers \(a_1,?a_2,?...,?a_n\). You can perform at most \(k\) operations. For each operation you can multiply one of the numbers by \(x\). We want to make

hdu 3573(数学+贪心)

Buy Sticks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 868    Accepted Submission(s): 392 Problem Description Imyourgod need 3 kinds of sticks which have different sizes: 20cm, 28cm and 32cm

【bzoj4198】[Noi2015]荷马史诗 贪心+堆

题目描述 追逐影子的人,自己就是影子. ——荷马 Allison 最近迷上了文学.她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的<荷马史诗>.但是由<奥德赛>和<伊利亚特>组成的鸿篇巨制<荷马史诗>实在是太长了,Allison 想通过一种编码方式使得它变得短一些. 一部<荷马史诗>中有 n 种不同的单词,从 1 到 n 进行编号.其中第 i 种单词出现的总次数为 wi.Allison 想要用 k 进制串 si 来替换第 i