Codeforces 301A. Yaroslav
Codeforces Tutorial
A. Yaroslav and Sequence
Problem Analysis
1、当n为奇数的时候,变换n个可以一次增加或减少1个负数,这样可以直到有n个负数,然后全变为整数ok
2、当n为偶数的时候,变换n个可以一次增加或减少2个负数,所以当有偶数个负数时都可以变为正数,当有奇数个负数时,最大和为(绝对值最小的那个为负数,其余的都为正数)。
用例子解释一下上面的内容。
n
为奇数
不妨设n=5
,有序列-1,-1,-1,-1,-1,-1,-1,-1,-1
。可以发现,始终可以做到使得负数的个数小于n/2
。序列变为1,1,1,1,1,-1,-1,-1,-1
。然后选取n/2+1
个正数,n/2
个负数,就可以增加一个负数。上例就是是选择3
个1
和2
个-1
。序列变为1,1,1,1,-1,-1,-1,-1,-1
。然后一步变为全正。n
为偶数
思路与奇数一样,不同的是对n
的划分,n只能划分为n/2-1
和n/2+1
Acepted Code
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#include<vector>
#include<cmath>
#include<map>
#include<istream>
#include<cassert>
#include<set>
#define DEBUG(x) cout<<#x<<" = "<<x<<endl
#define DEBUG2(x,y) cout<<#x<<" = "<<x<<" , "\
<<#y<<" = "<<y<<endl
using namespace std;
typedef long long ll;
const int MAXN=300;
int n;
int a[MAXN];
int main()
{
// freopen("in.txt","r",stdin);scanf("%d",&n);for(int ii=0;ii<2*n-1 ;ii++ ){scanf("%d",&a[ii]);}int ans=0;if(n%2){for(int ii=0;ii<2*n-1 ;ii++ ){ans+=abs(a[ii]);}}else {int cnt=0;int absmin=1e9;for(int ii=0;ii<2*n-1 ;ii++ ){if(a[ii]<0)cnt++;absmin=min(absmin,abs(a[ii]));ans+=abs(a[ii]);}if(cnt%2)ans-=2*absmin;}printf("%d\n",ans);
}
Wrong Answer Cases
What I Learn
- 奇偶性遇到的比较多
Reference
https://blog.csdn.net/xh_reventon/article/details/8892546
转载于:https://www.cnblogs.com/MalcolmMeng/p/10945531.html
Codeforces 301A. Yaroslav相关推荐
- 【cf】Codeforces 题解等汇总
[cf]Codeforces Round #774 (Div. 2) 前4题 [cf]Codeforces Round #774 (Div. 2) 前4题_legend_yst的博客-CSDN博客 [ ...
- Codeforces Round #182 (Div. 1)题解【ABCD】
Codeforces Round #182 (Div. 1)题解 A题:Yaroslav and Sequence1 题意: 给你\(2*n+1\)个元素,你每次可以进行无数种操作,每次操作必须选择其 ...
- 【Codeforces】A2组刷题记录(50 / 50)完结
目录 A1. Counterexample A2. Good Number A3. Dice Tower ★A4. Alyona and Numbers A5. Mountain Scenery rz ...
- 【11.9】Codeforces 刷题
DP\text{DP}DP : B. Yaroslav and Two Strings 题意: 如果两个只包含数字且长度为 n(1≤n≤105)n(1\leq n\leq 10^5)n(1≤n≤105 ...
- CodeForces 375D Tree and Queries
传送门:https://codeforces.com/problemset/problem/375/D 题意: 给你一颗有根树,树上每个节点都有其对应的颜色,有m次询问,每次问你以点v为父节点的子树内 ...
- 「日常训练」Bad Luck Island(Codeforces Round 301 Div.2 D)
题意与分析(CodeForces 540D) 是一道概率dp题. 不过我没把它当dp做... 我就是凭着概率的直觉写的,还好这题不算难. 这题的重点在于考虑概率:他们喜相逢的概率是多少?考虑超几何分布 ...
- 【codeforces 812C】Sagheer and Nubian Market
[题目链接]:http://codeforces.com/contest/812/problem/C [题意] 给你n个物品; 你可以选购k个物品;则 每个物品有一个基础价值; 然后还有一个附加价值; ...
- CodeForces 获得数据
针对程序的输出可以看见 CodeForces :当输入.输出超过一定字符,会隐藏内容 所以:分若干个程序进行输入数据的获取 1. 1 for (i=1;i<=q;i++) 2 { 3 scanf ...
- codeforces水题100道 第二十七题 Codeforces Round #172 (Div. 2) A. Word Capitalization (strings)...
题目链接:http://www.codeforces.com/problemset/problem/281/A 题意:将一个英文字母的首字母变成大写,然后输出. C++代码: #include < ...
最新文章
- apache prefork和worker
- Bluetooth LE(低功耗蓝牙) - 第五部分
- HMAC算法及其应用
- 推荐一个以动画效果显示github提交记录的黑科技工具:Gource
- html框架有什么作用,使用HTML5+CSS+JS框架有那些好处
- 元素(块、行内、行内块
- hive元数据为什么使用Mysql?不使用默认的Derby
- vue后台如何刷新过期的token_Vue刷新token,判断token是否过期
- Apache使用总结
- AD2017破解步骤
- 蓝桥杯官网 试题 PREV-253 历届真题 质数行者【第十一届】【决赛】【研究生组】【C++】【Java】两种解法
- 北京市常用电话号码表
- pxe网络启动_什么是网络启动(PXE),以及如何使用它?
- 故障分析 | OceanBase Proxy 无法连接 OBserver 集群
- 【BeetSQL入门学习】
- mysql list dbs 代替_mysql_list_dbs函数的用法实例汇总
- Cent OS 7.7 搭建蓝鲸智云社区版5.1.27(2)——标准部署
- 软件设计的哲学:第十六章 修改现有代码
- 【深度解刨C语言】符号篇(全)
- R语言环境安装及第三方包的下载地址及信息
热门文章
- OpenShift 4 之在不同的项目之间推送Image
- 项目管理工具project软件学习(八) - 关键路径查询、资源可用性
- Microsoft Blazor——快速开发与SQL Forms开源平台Platz.SqlForms
- 使用Blazor和SqlTableDependency进行实时HTML页面内容更新
- 将MongoDB.NET驱动程序与.NET Core WebAPI一起使用
- sklearn保存svm分类模型_机器学习100天-Day1601线性支持向量机分类
- httos双向认证配置_APP爬虫双向认证抓包的两种方法
- vue3 element el-tree 默认选中某个节点高亮
- Mysql错误1366的解决办法:Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1
- php 小程序 运动步数_微信小程序步数运动-收益讲解