luoguP3951 小凯的疑惑/P2662 牛场围栏
其实就是当年sxy给我讲的墨墨的等式,只是当时比较菜听得似懂非懂。
去年noipday1t1,当时随便猜了个结论结果猜对了,现在瞎证一下,答案是a*b-a-b。
设a为a,b中较小的一个,发现b*0%a,b*1%a,b*2%a,b*3%a……b*(a-1)%a的结果两两不同。
反证,如果存在b*x%a=b*y%a(x<y<a),即b*x-b*y=0(mod a),b*(x-y)=0(mod a), ∵gcd(a,b)=1 ∴x-y=0(mod a) 不满足x<y<a,得证
于是mod a等于b*x%a的最小数就是b*x,那么最大的不能表达的数就是b*x-a,于是答案就是b*(a-1)-a=a*b-a-b
- //Achen
- #include<bits/stdc++.h>
- #define For(i,a,b) for(int i=(a);i<=(b);i++)
- #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
- #define Formylove return 0
- typedef long long LL;
- typedef double db;
- using namespace std;
- LL a,b;
- template<typename T>void read(T &x) {
- char ch=getchar(); T f=; x=;
- while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
- if(ch=='-') f=-,ch=getchar();
- for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
- }
- //#define ANS
- int main() {
- #ifdef ANS
- freopen("1.in","r",stdin);
- //freopen("1.out","w",stdout);
- #endif
- read(a); read(b);
- printf("%lld\n",a*b-a-b);
- Formylove;
- }
小凯疑惑的升级版,小L的不疑惑
找出木棍中长度的最小值a,把其他长度拿来跑最短路求出%a=1、2、3……a-1的最小数的大小,答案就是,max(dis[i]-a);
- // luogu-judger-enable-o2
- //Achen
- #include<bits/stdc++.h>
- #define For(i,a,b) for(int i=(a);i<=(b);i++)
- #define Rep(i,a,b) for(int i=(a);i>=(b);i--)
- #define Formylove return 0
- const int N=;
- typedef long long LL;
- typedef double db;
- using namespace std;
- int a[N],n,m,ok[N],mi,e[N][],ecnt,vis[N];
- LL dis[N],inf;
- template<typename T>void read(T &x) {
- char ch=getchar(); T f=; x=;
- while(ch!='-'&&(ch<''||ch>'')) ch=getchar();
- if(ch=='-') f=-,ch=getchar();
- for(;ch>=''&&ch<='';ch=getchar()) x=x*+ch-''; x*=f;
- }
- struct node {
- int v; LL dis;
- node(int v,LL dis):v(v),dis(dis){}
- friend bool operator <(const node&A,const node&B) {
- return A.dis>B.dis;
- }
- };
- priority_queue<node>que;
- void dijkstra() {
- memset(dis,/,sizeof(dis));
- dis[]=;
- que.push(node(,));
- while(!que.empty()) {
- node t=que.top();
- que.pop();
- if(vis[t.v]||dis[t.v]!=t.dis) continue;
- vis[t.v]=;
- For(i,,ecnt) if(dis[(t.v+e[i][])%mi]>t.dis+e[i][]) {
- dis[(t.v+e[i][])%mi]=t.dis+e[i][];
- que.push(node((t.v+e[i][])%mi,t.dis+e[i][]));
- }
- }
- LL ans=-,fl=;
- For(i,,mi-) {
- if(dis[i]!=inf)
- ans=max(ans,dis[i]-mi);
- else fl=;
- }
- if(ans==||fl==) ans=-;
- printf("%lld\n",ans);
- }
- //#define ANS
- int main() {
- #ifdef ANS
- freopen("a.in","r",stdin);
- freopen("a.out","w",stdout);
- #endif
- read(n); read(m);
- memset(dis,/,sizeof(dis));
- inf=dis[];
- For(i,,n) {
- read(a[i]);
- ok[a[i]]=;
- For(j,,m) {
- if(a[i]-j<=) break;
- ok[a[i]-j]=;
- }
- }
- For(i,,) if(ok[i]) {
- mi=i; break;
- }
- Rep(i,,) if(ok[i])
- dis[i%mi]=i;
- For(i,,mi-) if(dis[i]!=inf) {
- e[++ecnt][]=i;
- e[ecnt][]=dis[i];
- }
- dijkstra();
- Formylove;
- }
luoguP3951 小凯的疑惑/P2662 牛场围栏的更多相关文章
- 2017提高组D1T1 洛谷P3951 小凯的疑惑
洛谷P3951 小凯的疑惑 原题 题目描述 小凯手中有两种面值的金币,两种面值均为正整数且彼此互素.每种金币小凯都有 无数个.在不找零的情况下,仅凭这两种金币,有些物品他是无法准确支付的.现在小 凯想 ...
- 【同余最短路】洛谷 P2662 牛场围栏
关于同余最短路的部分 [同余最短路]P3403跳楼机/P2371墨墨的等式 [P2662牛场围栏] 题目背景 小L通过泥萌的帮助,成功解决了二叉树的修改问题,并因此写了一篇论文, 成功报送了叉院(羡慕 ...
- 【比赛】NOIP2017 小凯的疑惑
找规律:ans=a*b-a-b 证明:(可见 体系知识) gcd(A, B) = 1 → lcm(A, B) = AB 剩余类,把所有整数划分成m个等价类,每个等价类由相互同余的整数组成 任何数分成m ...
- Luogu [P3951] 小凯的疑惑
题目详见:[P3951]小凯的疑惑 首先说明:此题为一道提高组的题.但其实代码并没有提高组的水平.主要考的是我们的推断能力,以及看到题后的分析能力. 分析如下: 证明当k>ab-a-b时,小凯可 ...
- NOIP 2017 小凯的疑惑
# NOIP 2017 小凯的疑惑 思路 a,b 互质 求最大不能表示出来的数k 则k与 a,b 互质 这里有一个结论:(网上有证明)不过我是打表找的规律 若 x,y(设x<y) 互质 则 : ...
- luogu 3951 小凯的疑惑
noip2017 D1T1 小凯的疑惑 某zz选手没有看出这道结论题,同时写出了exgcd却不会用,只能打一个哈希表骗了30分 题目大意: 两个互质的正整数a和b,求一个最小的正整数使这个数无法表示为 ...
- P3951 小凯的疑惑
P3951 小凯的疑惑 题解 题意也就是求解不能用 ax+by 表示的最大数 ans(a,b,x,y,都是正整数) 给定 a ( =7 ) , b ( =3 ) 我们可以把数轴非负半轴上的数按照a的 ...
- 洛谷 P3951 小凯的疑惑 找规律
目录 题面 题目链接 题目描述 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例: 输出样例: 说明 思路 证明 AC代码 include<bits/stdc++.h> 题面 ...
- 题解 P3951 小凯的疑惑
P3951 小凯的疑惑 数论极菜的小萌新我刚看这题时看不懂exgcd做法的题解,后来在网上找到了一篇博客,感觉代码和推导都更加清新易懂,于是在它的基础上写了题解qwq 分析 两数互质,且有无限个,想到 ...
随机推荐
- Android开发笔记之ArrayAdapter
1,ArrayAdapter的item中的条目的布局文件的正确写法: item.xml <?xml version="1.0" encoding="utf-8&qu ...
- java des 加密/解密
JAVA实现 加密 注意:DES加密和解密过程中,密钥长度都必须是8的倍数 public byte[] desCrypto(byte[] datasource, String password) { ...
- ElasticSearch---初识
1.概述 1.1 ElasticSearch是一个 基于Lucene 的 搜索服务器: 1.2 ElasticSearch 提供了一个分布式多用户能力的全文搜索引擎,基于 RESTful ...
- idea 增量包配置
set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,serve ...
- Spring AOP 总结
AOP的基础是Java动态代理 Java中代理的实现一般分为三种:JDK静态代理.JDK动态代理以及CGLIB动态代理. 静态代理: 代理类与被代理类实现同一个接口,在代理类中持有一个被代理对象的引用 ...
- Delphi 打印纸张选项设置参数
{ paper selections } {$EXTERNALSYM DMPAPER_LETTER} DMPAPER_LETTER = 1; { Letter 8 12 x 11 in } {$EXT ...
- DELPHI中枚举类型数据的介绍和使用方法
在看delphi程序的时候看到aa=(a,b,c,d);这样的东西,还以为是数组,同事说是函数,呵呵,当然这两个都不屑一击,原来这样式子是在声明并付值一个枚举类型的数据.下边写下来DELPHI中枚举类 ...
- URAL 1996. Cipher Message 3(KMP+fft)
传送门 解题思路 因为要完全匹配,所以前七位必须保证相同,那么就可以把前7位提出来做一遍\(kmp\)匹配,最后的答案一定在这些位置里.考虑最后一位,可以把最后一位单独取出来,要计算的是最后一位相同的 ...
- opencv环境变量配置
本文章由@浅墨_毛星云 出品 原文文章链接:http://blog.csdn.net/poem_qianmo/article/details/19809337 作者:毛星云(浅墨) 微博:ht ...
- Flink 配置文件详解
前面文章我们已经知道 Flink 是什么东西了,安装好 Flink 后,我们再来看下安装路径下的配置文件吧. 安装目录下主要有 flink-conf.yaml 配置.日志的配置文件.zk 配置.Fli ...