CF1427A Avoiding Zero 题解
Content
请将一个长度为 \(n\) 的数列 \(A\) 重新排序,使得这个数列所有的前缀和 \(\neq 0\),或者证明没有这样的方案。
数据范围:\(t\) 组数据,\(1\leqslant t\leqslant 1000\),\(1\leqslant n\leqslant 50\),\(-50\leqslant a_i\leqslant A_i\leqslant 50\)。
Solution
不难发现,当且仅当所有数的和都为 \(0\) 的时候不存在满足题目要求的方案。
否则,将所有的正整数放进一起,将所有的负整数放在一起,然后分类讨论:
- 如果所有正整数的和大于所有负整数的和的绝对值,那么我们就考虑先把所有的正整数放在前面,再把所有的负整数放在后面,这样可以保证前缀和不为 \(0\)。
- 否则,我们先把所有的负整数放在前面,再把所有的正整数放在后面。
至于如果存在 \(0\),那就放在在所有的非零数后面就行了。
想法略显复杂,但是实现起来也是不难的,对吧?
Code
int n, a[57], sum, sump, sumn, po[57], ne[57];
int main() {
MT {
n = Rint, sum = sump = sumn = 0;
F(int, i, 0, n) po[i] = ne[i] = 0;
F(int, i, 1, n) sum += (a[i] = Rint), sump += a[i] * (a[i] > 0), sumn += (-a[i]) * (a[i] < 0);
if(!sum) {NO; continue;}
YES;
F(int, i, 1, n) if(a[i] > 0) po[++po[0]] = a[i]; else if(a[i] < 0) ne[++ne[0]] = a[i];
if(sump > sumn) {F(int, i, 1, po[0]) print_space(po[i]); F(int, i, 1, ne[0]) print_space(ne[i]); F(int, i, 1, n - po[0] - ne[0]) printf("0 ");}
else {F(int, i, 1, ne[0]) print_space(ne[i]); F(int, i, 1, po[0]) print_space(po[i]); F(int, i, 1, n - po[0] - ne[0]) printf("0 ");}
puts("");
}
return 0;
}
CF1427A Avoiding Zero 题解的更多相关文章
- Codeforces Global Round 11 A~D题解
A.Avoiding Zero 题目链接:https://codeforces.ml/contest/1427 题目大意:给定一个数组a1,a2...,an,要求找出一个a重排后的数组b1,b2,.. ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
- 哈尔滨理工大学ACM全国邀请赛(网络同步赛)题解
题目链接 提交连接:http://acm-software.hrbust.edu.cn/problemset.php?page=5 1470-1482 只做出来四道比较水的题目,还需要加强中等题的训练 ...
- 2016ACM青岛区域赛题解
A.Relic Discovery_hdu5982 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Jav ...
- poj1399 hoj1037 Direct Visibility 题解 (宽搜)
http://poj.org/problem?id=1399 http://acm.hit.edu.cn/hoj/problem/view?id=1037 题意: 在一个最多200*200的minec ...
- 网络流n题 题解
学会了网络流,就经常闲的没事儿刷网络流--于是乎来一发题解. 1. COGS2093 花园的守护之神 题意:给定一个带权无向图,问至少删除多少条边才能使得s-t最短路的长度变长. 用Dijkstra或 ...
随机推荐
- 将vue文档下载到本地预览
1下载:https://github.com/vuejs/cn.vuejs.org 到本地 2. npm install npm start # 开发服务器地址为 http://localhost ...
- HCNP Routing&Switching之组播技术-组播地址
前文我们聊到了组播技术背景,单播.广播在点到多点应用中的问题,以及组播对比单播.广播在点到多点的网络环境中的优势.劣势,相关回顾请参考https://www.cnblogs.com/qiuhom-18 ...
- R语言实战-Part 2笔记
R 语言实战(第二版) part 2 基本方法 -------------第6章 基本图形------------------ #1.条形图 #一般是类别型(离散)变量 library(vcd) he ...
- cat的生产应用
web日志文件的合并 cat one.log two.log >all.log sort -k 4 all.log 按照第四列进行时间排序
- shell命令行——快捷键
生活在 Bash shell 中,熟记以下快捷键,将极大的提高你的命令行操作效率. 编辑命令 Ctrl + a :移到命令行首 Ctrl + e :移到命令行尾 Ctrl + f :按字符前移(右向) ...
- 60-Lowest Common Ancestor of a Binary Search Tree
Lowest Common Ancestor of a Binary Search Tree My Submissions QuestionEditorial Solution Total Accep ...
- php代码审计入门前必看
首先先介绍什么是代码审计? 代码审计:是指针对源代码进行检查,寻找代码中的bug,这是一项需要多方面技能的技术 包括:对编程的掌握,漏洞形成原理的理解,系统和中间件等的熟悉 2.为什么要进行代码审计, ...
- SpringBoot整合Shiro 二:Shiro配置类
环境搭建见上篇:SpringBoot整合Shiro 一:搭建环境 Shiro配置类配置 shiro的配置主要集中在 ShiroFilterFactoryBean 中 关于权限: anon:无需认证就可 ...
- 【模板】网络最大流(EK、Dinic、ISAP)(网络流)/洛谷P3376
题目链接 https://www.luogu.com.cn/problem/P3376 题目大意 输入格式 第一行包含四个正整数 \(n,m,s,t\),分别表示点的个数.有向边的个数.源点序号.汇点 ...
- 日常Java 2021/11/18
用idea实现Javaweb登录页面 <%-- Created by IntelliJ IDEA. User: Tefuir Date: 2021/11/18 Time: 18:14 To ch ...