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奇怪的股市(归纳法证明,贪心)相关推荐

  1. 古墓里出土的那些奇怪文物,能否证明穿越的存在?

    相信很多人都看过穿越电影吧,如果穿越真的能实现的话,相信将会发生很多有趣的事情.在20世纪的时候,爱因斯坦就提出了相对论,相对论讲的是物体的速度越快,物体的质量就会越大,时间会变慢,一旦速度超越了光速 ...

  2. 【uva 1614】Hell on the Markets(算法效率--贪心)

    题意:有一个长度为N的序列A,满足1≤Ai≤i,每个数的正负号不知.请输出一种正负号的情况,使得所有数的和为0.(N≤100000) 解法:(我本来只想静静地继续做一个口胡选手...←_← 但是因为这 ...

  3. 【uva 1617】Laptop(算法效率--贪心,2种理解)

    题意:有N条长度为1的线段,要求使每条线段分别在相应区间,且"空隙"数目最小.输出"空隙"数.(1≤N≤100000) 解法:(P.S.我这题竟做了2个多小时, ...

  4. 归纳法证明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) ...

  5. uva 12260 Free Goodies DP+一点点贪心

    原题:  Free Goodies Petra and Jan have just received a box full of free goodies, and want todivide the ...

  6. 牛客 - 奇怪的背包问题增加了(贪心)

    题目链接:点击查看 题目大意:中文题意 题目分析: 代码: #include<iostream> #include<cstdio> #include<string> ...

  7. 【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 ...

  8. 【UVA - 11292】Dragon of Loowater (贪心,水题,模拟,twopointer双指针)

    题干: 题目大意: n条恶龙,m个勇士,用勇士来杀恶龙.一个勇士只能杀一个恶龙.而且勇士只能杀直径不超过自己能力值的恶龙.每个勇士需要支付能力值一样的金币.问杀掉所有恶龙需要花费的最少金币. 解题报告 ...

  9. UVa 1153 Keep the Customer Satisfied 【贪心 优先队列】

    题意:给出n个工作,已知每个工作需要的时间last,以及截止时间end,(必须在截止时间之前完成)问最多能够完成多少个工作 首先预处理,将这n件任务按照截止时间从小到大排序 然后用一个cur记录当前做 ...

最新文章

  1. npjsba-2018-用肠道微生物模型指导个性化膳食缓解局部性肠炎
  2. 修改Thickbox,预加载图片和点击图片前后浏览
  3. Java之JVM调优案例分析与实战(1) - 高性能硬件上的程序部署策略
  4. PAI和Hologres的个性化推荐最佳实践
  5. cdh用户权限_cdh设置hdfs权限
  6. javascript 相关小的知识点集合
  7. html网页距离顶部50像素,HTML5 教程之CSS Padding(填充)
  8. 论文浅尝 - CVPR2020 | 基于网格特征的可视问答系统
  9. c语言编译器turbo,C语言编译器TurboC使用技巧解析
  10. win10桌面图标变成白色文件
  11. 什么是云渲染?为什么要用电脑渲图?
  12. js写小游戏(打字母)
  13. Cherry机械键盘、开发板、无线鼠标等100份好礼,回帖就送!
  14. 关于xds100仿真器的ftdi驱动无法使用的问题
  15. instagram忘记密码怎么解决_如何找回ins密码
  16. xpath爬取链家二手房
  17. Mesos+Marathon搭建部署
  18. 把你的Windows Media Player 打造成全能的播放器
  19. python文件打开模式的合法组合,python文件操作
  20. zfoo中的providers和consumers标签

热门文章

  1. DBA基础(一)用户授权
  2. 基于GraphHopper搭建离线路径规划服务并可视化
  3. IDEA无法识别pom.xml文件,内容全部显示为灰色,或者无颜色
  4. 悲催的中国式项目开发
  5. 不止 JDK7 的 HashMap ,JDK8 的 ConcurrentHashMap 也会造成 CPU 100%?原因与解决~
  6. 【Scratch】青少年蓝桥杯_每日一题_3.17_蹦床
  7. 青少年蓝桥杯_2020_每日一题_11.03_输出M与N之间符合要求的数据
  8. mysql注入绕过单引号_SQL注入-绕过过滤规则
  9. mysql查询无限下级_示例php+mysql查询实现无限下级分类树输出
  10. html会在哪里显示,CSS如何显示 HTML元素