uva 1614奇怪的股市(归纳法证明,贪心)
uva 1614奇怪的股市(归纳法证明,贪心)
输入一个长度为n的序列a,满足\(1\le a_i\le i\),要求确定每个数的正负号,使得所有数的总和为0.例如a={1, 2, 3, 4},则4个数的符号分别是1, -1, -1, 1即可。但若a={1, 2, 3, 3},则无解。n<=1e5。
这道题相当于要找到两堆相等的数。若序列中数的总和为奇数,那么拆出来的两堆数无论如何都不可能相等,所以无解。由于这道题的特殊性质,可用归纳法证明总和为偶数时一定有解。
现在要证明,用前i个数的全部或部分可以凑出0到sum[i]的所有整数。n=1时这是成立的。假设n=k之前所有项都成立,那么\(sum[k+1]=sum[k]+a[k+1]\)。只需证明能凑出\(sum[k]+1\)到\(sum[k]+a[k+1]\)的所有整数即可。由于\(1\le a_[k+1]\le k+1\),而\(sum[k]\ge k\),所以\(sum[k]+p=x+a[k+1]\ (1\le p\le a[k+1],0\le x\le sum[k])\)恒成立。
这样一来,就证明了用前n个数,可以凑出sum[n]/2。当sum[n]是偶数时,另一半也就是sum[n]/2。现在的问题就是找出和等于sum[n]/2的数。直接将a数组从大到小排序,然后贪心的取即可。
为什么贪心的取是正确的呢?因为\(1\le a_i\le i\),排序完的数组必定也满足这个条件。所以只要贪心的取显然有解。
#include <cstdio>
#include <algorithm>
using namespace std;const int maxn=1e5+5;
struct node{int data, id;
}a[maxn];
int n, chose[maxn];
long long sum;bool cmp1(node &x, node &y){return x.data>y.data; }//100万才需要读优
int main(){while (~scanf("%d", &n)){sum=0;for (int i=0; i<n; ++i){scanf("%d", &a[i].data);sum+=a[i].data; a[i].id=i;}if (sum&1){puts("No"); continue; }else sum>>=1;sort(a, a+n, cmp1);for (int i=0; i<n; ++i)if (a[i].data<=sum){sum-=a[i].data;chose[a[i].id]=1;} else chose[a[i].id]=-1;puts("Yes");for (int i=0; i<n; ++i)printf("%d ", chose[i]);puts("");}return 0;
}
转载于:https://www.cnblogs.com/MyNameIsPc/p/8495362.html
uva 1614奇怪的股市(归纳法证明,贪心)相关推荐
- 古墓里出土的那些奇怪文物,能否证明穿越的存在?
相信很多人都看过穿越电影吧,如果穿越真的能实现的话,相信将会发生很多有趣的事情.在20世纪的时候,爱因斯坦就提出了相对论,相对论讲的是物体的速度越快,物体的质量就会越大,时间会变慢,一旦速度超越了光速 ...
- 【uva 1614】Hell on the Markets(算法效率--贪心)
题意:有一个长度为N的序列A,满足1≤Ai≤i,每个数的正负号不知.请输出一种正负号的情况,使得所有数的和为0.(N≤100000) 解法:(我本来只想静静地继续做一个口胡选手...←_← 但是因为这 ...
- 【uva 1617】Laptop(算法效率--贪心,2种理解)
题意:有N条长度为1的线段,要求使每条线段分别在相应区间,且"空隙"数目最小.输出"空隙"数.(1≤N≤100000) 解法:(P.S.我这题竟做了2个多小时, ...
- 归纳法证明Nicomachus
发现一道有趣的数学题,下面是证明过程: 已知: 1^3=1, 2^3=3+5, 3^3=7+9+11, 4^3=13+15+17+19 ... 求证:1^3+2 ^3+-+n ^3=(1+2+-+n) ...
- uva 12260 Free Goodies DP+一点点贪心
原题: Free Goodies Petra and Jan have just received a box full of free goodies, and want todivide the ...
- 牛客 - 奇怪的背包问题增加了(贪心)
题目链接:点击查看 题目大意:中文题意 题目分析: 代码: #include<iostream> #include<cstdio> #include<string> ...
- 【UVA - 10154 】Weights and Measures (贪心排序,dp,类似0-1背包,状态设定思维)
题干: The Problem Mack, in an effort to avoid being cracked, has enlisted your advice as to the order ...
- 【UVA - 11292】Dragon of Loowater (贪心,水题,模拟,twopointer双指针)
题干: 题目大意: n条恶龙,m个勇士,用勇士来杀恶龙.一个勇士只能杀一个恶龙.而且勇士只能杀直径不超过自己能力值的恶龙.每个勇士需要支付能力值一样的金币.问杀掉所有恶龙需要花费的最少金币. 解题报告 ...
- UVa 1153 Keep the Customer Satisfied 【贪心 优先队列】
题意:给出n个工作,已知每个工作需要的时间last,以及截止时间end,(必须在截止时间之前完成)问最多能够完成多少个工作 首先预处理,将这n件任务按照截止时间从小到大排序 然后用一个cur记录当前做 ...
最新文章
- npjsba-2018-用肠道微生物模型指导个性化膳食缓解局部性肠炎
- 修改Thickbox,预加载图片和点击图片前后浏览
- Java之JVM调优案例分析与实战(1) - 高性能硬件上的程序部署策略
- PAI和Hologres的个性化推荐最佳实践
- cdh用户权限_cdh设置hdfs权限
- javascript 相关小的知识点集合
- html网页距离顶部50像素,HTML5 教程之CSS Padding(填充)
- 论文浅尝 - CVPR2020 | 基于网格特征的可视问答系统
- c语言编译器turbo,C语言编译器TurboC使用技巧解析
- win10桌面图标变成白色文件
- 什么是云渲染?为什么要用电脑渲图?
- js写小游戏(打字母)
- Cherry机械键盘、开发板、无线鼠标等100份好礼,回帖就送!
- 关于xds100仿真器的ftdi驱动无法使用的问题
- instagram忘记密码怎么解决_如何找回ins密码
- xpath爬取链家二手房
- Mesos+Marathon搭建部署
- 把你的Windows Media Player 打造成全能的播放器
- python文件打开模式的合法组合,python文件操作
- zfoo中的providers和consumers标签
热门文章
- DBA基础(一)用户授权
- 基于GraphHopper搭建离线路径规划服务并可视化
- IDEA无法识别pom.xml文件,内容全部显示为灰色,或者无颜色
- 悲催的中国式项目开发
- 不止 JDK7 的 HashMap ,JDK8 的 ConcurrentHashMap 也会造成 CPU 100%?原因与解决~
- 【Scratch】青少年蓝桥杯_每日一题_3.17_蹦床
- 青少年蓝桥杯_2020_每日一题_11.03_输出M与N之间符合要求的数据
- mysql注入绕过单引号_SQL注入-绕过过滤规则
- mysql查询无限下级_示例php+mysql查询实现无限下级分类树输出
- html会在哪里显示,CSS如何显示 HTML元素