博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj1407: [Noi2002]Savage
阅读量:5066 次
发布时间:2019-06-12

本文共 1080 字,大约阅读时间需要 3 分钟。

也是复习题了 傻逼衣叉还我一等

两个野人无法相遇当

Ci+Pi*x=Cj+Pj*x (mod m)
(Pi-pj)*x=Cj-Ci (mod m)
无解 或 最小正整数解>min(Li,Lj)
转换一下
(Pi-pj)*x+m*y=Cj-Ci

要约一个最大公因数(不约居然会T囧)

 

#include
#include
#include
#include
#include
#include
using namespace std;int exgcd(int a,int b,int &x,int &y){ if(a==0) { x=0;y=1; return b; } else { int tx,ty; int d=exgcd(b%a,a,tx,ty); x=ty-(b/a)*tx; y=tx; return d; }}int gcd(int a,int b){ if(a==0)return b; else return gcd(b%a,a);}int c[20],p[20],l[20];int main(){ int n,m=0; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d%d%d",&c[i],&p[i],&l[i]); m=max(m,c[i]); } while(1) { bool bk=true; for(int i=1;i<=n;i++) { for(int j=i+1;j<=n;j++) { int A=p[i]-p[j],B=m,K=c[j]-c[i]; int t=gcd(A,B); if(K%t==0) { int x,y; A/=t,B/=t,K/=t; int d=exgcd(A,B,x,y); B=abs(B); x=((x*K/d)%(B/d)+(B/d))%(B/d); if(x<=min(l[i],l[j])){bk=false;break;} } } if(bk==false)break; } if(bk==true){printf("%d\n",m);break;} m++; } return 0;}

 

转载于:https://www.cnblogs.com/AKCqhzdy/p/8783172.html

你可能感兴趣的文章
4.9 Parser Generators
查看>>
redis集群如何清理前缀相同的key
查看>>
redis7--hash set的操作
查看>>
20.字典
查看>>
Python 集合(Set)、字典(Dictionary)
查看>>
oracle用户锁定
查看>>
(转)盒子概念和DiV布局
查看>>
Android快速实现二维码扫描--Zxing
查看>>
获取元素
查看>>
nginx+lighttpd+memcache+mysql配置与调试
查看>>
ubuntu12.04 启动apache2 对.htaccess 的支持
查看>>
proxy写监听方法,实现响应式
查看>>
前端工具----iconfont
查看>>
Azure Site Recovery 通过一键式流程将虚拟机故障转移至 Azure虚拟机
查看>>
Hello China操作系统STM32移植指南(一)
查看>>
cocos2dx CCEditBox
查看>>
VC++2012编程演练数据结构《8》回溯法解决迷宫问题
查看>>
第一阶段冲刺06
查看>>
WIN下修改host文件并立即生效
查看>>
十个免费的 Web 压力测试工具
查看>>