题解 CF1216D 【Swords】
大水题,感觉比C题水多了。。。(证明倒是挺难)
题目大意:额,这个(实在总结不出)
还是题目描述吧:仓库里有$n$种相同数量($x$把)的剑(但你不知道有多少),一天有$y$人闯进了仓库,每人拿了$z$把相同的剑(每个人拿的种类不一定相同),现在给你每把剑所剩下的数量$a_i$,求最小的$y$,并求出$z$
令$a_{max}=max(a[i]|1≤i≤n)$
令$b[i]=a_{max}-a[i](1≤i≤n)$
令$b_{gcd}=gcd(b[i]|b[i]!=0,1≤i≤n)$
令$c[i]=\frac{b[i]}{b_{gcd}}(1≤i≤n)$
emm...(通过看样例)易得,$z_{max}=b_{gcd}$,$y=\sum\limits_{i=1}^{n}{c_i}$
证明:
反证法。设存在比$b_{gcd}$更大的$z$值,令$Max$等于这个$z$值
①$x=a_{max}$
此时$Max$应能整除所有非0的$b[i]$且比$b_{gcd}$大,不符合$gcd$的定义(最大公约数),矛盾
②$x>a_{max}$
此时$Max$应能整除所有非0的$b[i]+x-a_{max}$,此时若$x-a_{max}≤b_{gcd}$,那么$Max$肯定小于等于$b_{gcd}$,矛盾
故仅需考虑$x-a_{max}>b_{gcd}$这种情况。此时$Max=gcd(b[i]+x-a_{max}|1≤i≤n)$
根据$gcd$的定义,可以证明:若多个数都加上一个值后$gcd$更大,只能是加上了它们的公约数的倍数。(这里不再赘述,读者自证不难)
根据我们此题得到:$b[i](1≤i≤n)$中至少有一个为$0$,故$gcd(b[i](1≤i≤n))=0$
故$gcd(b[i]+d(1≤i≤n,d∈N^+))≤b_{gcd}$
故得,$Max≤b_{gcd}$,矛盾
故$z_{max}=b_{gcd}$,证毕
注意特判$b_{gcd}$为$0$的情况,还有,提示一下:要开$long$ $long$!
代码如下:
#include<cstdio>
#define ll long long inline ll read(){
ll r=0,f=1;
char c=getchar();
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9')r=(r<<1)+(r<<3)+c-'0',c=getchar();
return r*f;
} ll n,a[200002],Max,Min=1e9+10,y,z; ll gcd(ll a,ll b){
return b?gcd(b,a%b):a;
} inline ll max(ll a,ll b){
return a>b?a:b;
} inline ll min(ll a,ll b){
return a<b?a:b;
} int main(){
n=(int)read();
for(int i=1;i<=n;i++){
a[i]=read();
Max=max(Max,a[i]);
Min=min(Min,a[i]);
}
z=Max-Min;
for(int i=1;i<=n;i++){
if(Max==a[i])continue;
z=gcd(z,Max-a[i]);
}
if(!z){
printf("0 0");
return 0;
}
for(int i=1;i<=n;i++)y+=(Max-a[i])/z;
printf("%lld %lld",y,z);
return 0;
}
题解 CF1216D 【Swords】的更多相关文章
- UVALive 6911 Double Swords 树状数组
Double Swords 题目连接: https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8 ...
- Educational Codeforces Round 89 (Rated for Div. 2) A Shovels and Swords B、Shuffle
题目链接:A.Shovels and Swords 题意: 你需要一个木棍和两个钻石可以造出来一把剑 你需要两个木棍和一个钻石可以造出来一把铁锹 你现在有a个木棍,b个钻石,问你最多可以造出来几件东西 ...
- 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 ...
- UVALive 6911---Double Swords(贪心+树状数组(或集合))
题目链接 https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_ ...
随机推荐
- bootstraptable重新加载
bootstraptable需要彻底重新加载,发现即使url等参数更新过来仍旧无效.需要调用 $("#resource_table").bootstrapTable('destro ...
- IPV4 VS IPV6 谈谈省级ipv6的必要性
11月26日,中办.国办印发了<推进互联网协议第六版(IPv6)规模部署行动计划>,提出国内要在 5~10 年的时间形成下一代互联网自主技术体系和产业生态,建成全球最大规模的 IPv6 商 ...
- 钉钉通知机器人与SpringBoot的集成
Spring Boot Admin 集成自定义监控告警(2.0.1版本)------钉钉机器人 - yuancao24的博客 - CSDN博客https://blog.csdn.net/yuancao ...
- HTML中 :after和:before的作用及使用方法(转)
1. :before 和 :after 的主要作用是在元素内容前后加上指定内容,示例: HTML代码: <p>你好</p> CSS代码: p:before{ content: ...
- Zabbix3.4指定用户才能收到报警的配置
Zabbix3.4指定用户才能收到报警的配置 .下载python微信脚本 #安装simplejson wget https://pypi.python.org/packages/f0/07/26b51 ...
- ES6深入浅出-4 迭代器与生成器-1.字面量增强
今天的内容 字面量literal 写出来就是它的值 例如字符串hello.这就是自变量. 一个空对象,也是自变量 写出来就是代表它写出来的那个意思就是自变量. 与其相反的就是构造出来的.例如下面的ne ...
- 利用 Postman 中 Tests 断言校验返回结果
前言 Postman目前是一款很火的接口测试工具,它有着非常强大结果判断能力.为什么说强大呢,因为Postman有自带的校验脚本,根本不需要我们去学习JS脚本语言,对于代码能力为0的各位测试小伙伴来说 ...
- Hive Essential (4):DML-project,filter,join,union
1. Project data with SELECT The most common use case for Hive is to query data in Hadoop. To achieve ...
- 亲爱的mssql码农们,看看利用sp_addlinkedserver实现远程数据库链接
亲爱的mssql码农们,可以看看本地连接远程的数据库方式(sp_addlinkedserver)--通过代码连接 --查看当前链接情况: select * from sys.servers; --使用 ...
- ng2中 如何使用自定义属性data-id 以及赋值和取值操作
项目环境:ng4.x 写法说明: [attr.data-nurseKey] <div [attr.data-nurseKey]="k.nurseKey"></di ...