当前位置: 首页 > news >正文

洛谷 P2421 [NOI2002]荒岛野人

题目描述

又是一道扩欧的题。

要求一个最小的m使得 Ci+Pi*x≡Cj+Pj*x mod m(i!=j) 在x在第i个人和第j个人的有生之年无解。

也就是 (Pi-Pj)*x+m*y=Cj-Ci 在min(Li,Lj)上无解。

题目限制了保证有解且m<=1e6,那么可以考虑枚举m,在暴力地对每个人进行判断。

理论最差复杂度为1e6*n^2^log,但实际上远达不到这种情况。

需要注意的是m必须大于等于max(Ci)。

#include<complex>
#include<cstdio>
using namespace std;
const int N=21;
int n;
int C[N],P[N],L[N];
int Exgcd(int a,int b,int &x,int &y)
{
    if(!b)
    {
        x=1;y=0;
        return a;
    }
    int r=Exgcd(b,a%b,x,y),tmp=x;
    x=y;y=tmp-a/b*y;
    return r;
}
bool check(int m)
{
    for(int i=1;i<=n;i++)
        for(int j=i+1;j<=n;j++)
        {
            int x,y,a=abs(P[i]-P[j]),b=m,c=P[i]-P[j]>0?C[j]-C[i]:C[i]-C[j];
            int r=Exgcd(a,b,x,y);
            if(c%r==0)
                if((x*(c/r)%(b/r)+(b/r))%(b/r)<=min(L[i],L[j]))
                    return 0;
        }
    return 1;
}
int main()
{
    scanf("%d",&n);
    int l=0;
    for(int i=1;i<=n;i++)
    {
        scanf("%d%d%d",&C[i],&P[i],&L[i]);
        l=max(l,C[i]);
    }
    for(int i=l;i<=1000000;i++)
        if(check(i))
        {
            printf("%d\n",i);
            break;
        }
    return 0;
}

 

转载于:https://www.cnblogs.com/LeTri/p/9152681.html

相关文章:

  • python第五天学习总结
  • Nginx配置详解
  • ngnix-内网能用,外网不能用
  • 从一到无穷大:科学中的事实和臆测 (G. 伽莫夫 著)
  • java nio和bio
  • redis(一)
  • [Web 前端] 你不知道的 React Router 4
  • 斗地主AI算法——第四章の权值定义
  • PicGo的star数破1000的心路历程
  • Kotlin基础五
  • 转:少走弯路,给Java 1~5 年程序员的建议
  • 吴恩达《Machine Learning Yearning》总结(21-30章)
  • ESP8266的低功耗方案-睡眠模式
  • NPOI 自定义单元格背景颜色-Excel
  • Android Studio Flavors的妙用(转)
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • Git的一些常用操作
  • IP路由与转发
  • JavaScript异步流程控制的前世今生
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • mysql innodb 索引使用指南
  • node-glob通配符
  • PHP CLI应用的调试原理
  • Vue实战(四)登录/注册页的实现
  • ------- 计算机网络基础
  • 今年的LC3大会没了?
  • 理解 C# 泛型接口中的协变与逆变(抗变)
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 三分钟教你同步 Visual Studio Code 设置
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 06-01 点餐小程序前台界面搭建
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • ​RecSys 2022 | 面向人岗匹配的双向选择偏好建模
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (1)(1.19) TeraRanger One/EVO测距仪
  • (LeetCode 49)Anagrams
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (六)软件测试分工
  • (三)mysql_MYSQL(三)
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .Net 6.0 处理跨域的方式
  • .net 7 上传文件踩坑
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • @Validated和@Valid校验参数区别
  • []指针
  • [2]十道算法题【Java实现】
  • [Android] 修改设备访问权限
  • [BZOJ 3531][Sdoi2014]旅行(树链剖分+线段树)
  • [BZOJ4566][HAOI2016]找相同字符(SAM)