原题链接:https://codeforces.com/contest/1180/problem/B

题意:给定一个整数序列,你可以对任意元素进行nums[i]=-nums[i]-1的操作,但不能改变顺序,问怎样才能使得这个整数序列乘积最大。

解题思路:我们发现要使得乘积最大,即首先应保证乘积为正,在整数序列中,进行那个操作能使负数的绝对值+1,正数的绝对值-1,那么我们想要乘积最大,就自然想要让绝对值最大,对于偶数序列,将大于等于0的数全部进行那个操作即可。那么对于奇数序列,我们仍可以这样做,只不过我们还要选取一个整数将其转换为正,为了使乘积最大,我们要选取绝对值最大的负数进行转换即可。

AC代码:

/*
*邮箱:2825841950@qq.com
*blog:https://blog.csdn.net/hzf0701
*注:代码如有问题请私信我或在评论区留言,谢谢支持。
*/
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<string>
#include<stack>
#include<queue>
#include<cstring>
#include<map>
#include<iterator>
#include<list>
#include<set>
#include<functional>
#include<memory.h>//低版本G++编译器不支持,若使用这种G++编译器此段应注释掉
#include<iomanip>
#include<vector>
#include<cstring>
#define scd(n) scanf("%d",&n)
#define scf(n) scanf("%f",&n)
#define scc(n) scanf("%c",&n)
#define scs(n) scanf("%s",n)
#define prd(n) printf("%d",n)
#define prf(n) printf("%f",n)
#define prc(n) printf("%c",n)
#define prs(n) printf("%s",n)
#define rep(i,a,n) for (int i=a;i<=n;i++)//i为循环变量,a为初始值,n为界限值,递增
#define per(i,a,n) for (int i=a;i>=n;i--)//i为循环变量, a为初始值,n为界限值,递减。
#define pb push_back
#define fi first
#define se second
#define mp make_pair
using namespace std;
const int inf = 0x3f3f3f3f;//无穷大
const int maxn = 1e5;//最大值。
typedef long long ll;
typedef long double ld;
typedef pair<ll, ll>  pll;
typedef pair<int, int> pii;
//*******************************分割线,以上为代码自定义代码模板***************************************//int main(){//freopen("in.txt", "r", stdin);//提交的时候要注释掉ios::sync_with_stdio(false);//打消iostream中输入输出缓存,节省时间。cin.tie(0); cout.tie(0);//可以通过tie(0)(0表示NULL)来解除cin与cout的绑定,进一步加快执行效率。int n;int nums[maxn];while(cin>>n){rep(i,0,n-1){cin>>nums[i];if(nums[i]>=0){//为了让乘积最大,将整数变负数,绝对值+1.nums[i]=-nums[i]-1;}}if(n&1){//判断是否为奇数。int minn=inf;int pos;//记录要更改的下标。rep(i,0,n-1){if(nums[i]<minn){minn=nums[i];pos=i;}}//变换使得乘积为正达到最大。nums[pos]=-nums[pos]-1;}rep(i,0,n-1){cout<<nums[i];if(i!=n-1)cout<<" ";}cout<<endl;}return 0;
}

B. Nick and Array(数学+贪心)Codeforces Round #569 (Div. 2)相关推荐

  1. 贪心 Codeforces Round #236 (Div. 2) A. Nuts

    题目传送门 1 /* 2 贪心:每一次选取最多的线段,最大能放置nuts,直到放完为止,很贪婪! 3 题目读不懂多读几遍:) 4 */ 5 #include <cstdio> 6 #inc ...

  2. 贪心 Codeforces Round #191 (Div. 2) A. Flipping Game

    题目传送门 1 /* 2 贪心:暴力贪心水水 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #include <cs ...

  3. 贪心 Codeforces Round #273 (Div. 2) C. Table Decorations

    题目传送门 1 /* 2 贪心:排序后,当a[3] > 2 * (a[1] + a[2]), 可以最多的2个,其他的都是1个,ggr,ggb, ggr... ans = a[1] + a[2]; ...

  4. 贪心 Codeforces Round #301 (Div. 2) B. School Marks

    题目传送门 1 /* 2 贪心:首先要注意,y是中位数的要求:先把其他的都设置为1,那么最多有(n-1)/2个比y小的,cnt记录比y小的个数 3 num1是输出的1的个数,numy是除此之外的数都为 ...

  5. Codeforces Round #569 (Div. 2)

    https://codeforces.com/contest/1180 A. Alex and a Rhombus  找规律,不难发现 a[i] = a[i-1]+4*(i-1) 或者  a[n] = ...

  6. B. Multiply by 2, divide by 6(数学) Codeforces Round #653 (Div. 3)

    原题链接:https://codeforces.com/problemset/problem/1374/B 题意:有一个数能进行两种操作,除以6乘以2,问经过多少次操作能变成1.若不行则输出-1. 解 ...

  7. 贪心 ---- Codeforces Round #618 (Div. 2)B. Assigning to Classes+贪心[证明过程]

    题目链接 题目大意:给你2∗n2*n2∗n个数,将这些数分成2个集合使得两个集合中位数的差值最小 解题思路:我懵了一个结论就是排序之后取中间的两个数然后就ac了 我们先对这些数字从小到大排序 证明:1 ...

  8. Era 贪心 Codeforces Round #752 (Div. 2)

    题意: 给一序列,每次操作是插入一个任意大小的数,求最小操作次数使得序列每个数值小于等于下标 思路: 对于每个值大于下标的数,在它前面填上恰好足够多的1,使值刚好等于下标即可,由于前面的数增加了1也会 ...

  9. 【模拟+数学】Codeforces Round #621 (Div. 1 + Div. 2) 1307E Cow and Treats

    Cow and Treats [cf链接] After a successful year of milk production, Farmer John is rewarding his cows ...

最新文章

  1. css transform旋转属性
  2. quota在oracle,Oracle的表空间quota详解
  3. Rest 微服务工程搭建02——微服务消费者订单Module模块 || @RequestBody 的重要作用
  4. 算法提高课-图论-负环-AcWing 361. 观光奶牛:spfa判正环、负环、01分数规划、二分
  5. jsonobject转map对象_解析JSON中JSONObject的高级使用
  6. 学习IOS开发UI篇--UIView\UIButton\UILabel\UIImageView\UITextField
  7. python 迭代器 生成器_Python迭代器和生成器
  8. 【C#】【MySQL】C# 查询数据库语句@Row:=@Row+1以及执行存储过程失败解决方案
  9. 数学建模实验——举重模型的matlab实现
  10. 监狱智能管理平台 ——监室点名(人脸识别)
  11. java dh算法_java 非对称加密算法DH实现详解
  12. Laravel Scout 包在 Elasticsearch 中的使用记录
  13. adb命令之:手机与电脑文件之间的粘贴复制
  14. 音频电解电容应用方法及经验
  15. Android SystemUI 架构详解
  16. 连接查询之内连接(等值连接、非等值连接和自连接)
  17. 李元佳:漫谈 Greenplum 开源背后的动机
  18. easyui01人门基础
  19. 输入年月日,获得下个月的同一天,如果该天不存在,则顺延一天
  20. Android实现仿真iPhone界面

热门文章

  1. 基于tomcat的javaweb在线教学网站的开发--完成登录、注册以及考试页面
  2. 流量劫持是什么?常用方法有哪些?
  3. babel安装后无法使用:babel : 无法加载文件 C:\Users\DZG\AppData\Roaming\npm\babel.ps1
  4. 苹果主题商店_盒子电视模拟器电视直播+影视点播!苹果安卓手机影视点播!...
  5. 中标麒麟v7服务器宕机问题分析
  6. 人脸识别60年:欧盟通用数据保护条例真的算“史上最严”吗
  7. 【SQL Server】无需公网IP,就可以远程连接SQL Server数据库
  8. mima接收数据时粘包和大小端问题解决方案具体实现
  9. CAD图纸怎么转换PDF格式?怎样转换更加高效?
  10. JAVA设计模式——第 8 章 适配器模式【Adapter Pattern】(转)