http://172.20.6.3/Problem_Show.asp?id=1372

想法其实很好想,但是我扩展欧几里得还是用得不熟练,几乎是硬套模板,大概因为今天一个下午状态都不大好。
扩展欧几里得算法计算的是 : ab互质时ax+by=1或ab不互质时ax+by=gcd(a,b)(废话)的一个整数解,可以据此推导一个方程是否有解。
然后我理解这个基本概念理解了一个下午,非常智障了。
这道题也是模板,两两对比即可。

代码

 #include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=;
long long n,p[]={},l[]={},c[]={};
int exgcd(int a,int b,long long &x,long long &y){
if(!b){
x=;y=;
return a;
}
int d=exgcd(b,a%b,x,y);
long long w=x;x=y;
y=w-y*(a/b);
return d;
}
int main(){
scanf("%d",&n);long long a,b,m,d,x,y,now=n;
for(int i=;i<=n;i++){
scanf("%I64d%I64d%I64d",&c[i],&p[i],&l[i]);
now=max(now,c[i]);
}
for(int k=now;;k++){
int f=;
for(int i=;i<=n;i++){
for(int j=i+;j<=n;j++){
a=p[i]-p[j];b=k;m=c[j]-c[i];
d=exgcd(a,b,x,y);
if(m%d)continue;
b/=d;m/=d;x=x*m;x%=b;
if(x<)x+=abs(b);
if(x<=min(l[i],l[j])){f=;break;}
}
if(f)break;
}
if(!f){
printf("%d\n",k);
break;
}
}
return ;
}

最新文章

  1. Spark中常用工具类Utils的简明介绍
  2. scjp考试准备 - 1 - 循环控制
  3. 硬盘类型和Linux的分区
  4. 【Linux远程管理】Telnet远程连接管理
  5. SGU 155.Cartesian Tree
  6. log4cxx在vs2013的静态编译
  7. Android Activity整体管理和关闭工具类封装
  8. 关于iOS8上本地通知接收不到的问题
  9. thinkphp3.2
  10. x86_64是什么意思
  11. 物流包裹一站式查询(TrackingMore)
  12. vue-router实现登录和跳转到指定页面,vue-router 传参
  13. Android下资源使用的方式-android学习之旅(五十三)
  14. SpriteBuilder中不能编辑自定义类或不能给节点添加属性的解决
  15. android报错 Expected BEGIN_OBJECT but was STRING at line 1 column 39 path $
  16. Map集合的便利学习总结
  17. 在Salesforce成长:需要好奇心
  18. HashMap 和 Hashtable 的 6 个区别,一般人不知道最后一条
  19. js 创建标签执行
  20. 【Wyn Enterprise BI知识库】 什么是商业智能 ZT

热门文章

  1. C#编写程序监测某个文件夹内是否有文件进行了增,删,改的动作?
  2. 极致的 Hybrid:航旅离线包再加速!(转)
  3. charles https抓包
  4. node启动服务
  5. 关于EditText.setText()无法显示的问题
  6. 3.FireDAC组件快照
  7. 可以高度定制的代理服务器anyproxy
  8. 《Java编程思想》阅读笔记二
  9. php性能的问题
  10. Tomcat手动指定jdk路径