zoukankan      html  css  js  c++  java
  • Codeforces 1260C Infinite Fence(扩展欧几里得有解的条件)

    思路:

    1.此题的1010010^{100}我们可以将它当成正无穷,我们设x=min(r,b)x=min(r,b)y=max(r,b)y=max(r,b),由于重复的部分我们可以涂任意颜色,因此我们需要做的就是讨论在yy的两个倍数之间可不可以夹kkkk个以上的xx的倍数;
    2.我们设在mymy(m+1)y(m+1)y这段区间内(即[my+1,my+2,...,my+y1][my+1,my+2,...,my+y-1])可以含有最多的xx的倍数,根据贪心的思想,我们希望xx的倍数第一次应该出现在my+1my+1,但是这需要(my+1)modx=0(my+1)modx=0;根据扩展欧几里得算法有解的条件,我们可以得知在这段区间内,xx的倍数最早第一次出现的位置应该在my+gcd(x,y)my+gcd(x,y),得知最早第一次出现的位置,我们就可以计算整个区间内xx的倍数出现的最多次数了~,然后和kk做比较即可;

    代码:

    #define IOS ios::sync_with_stdio(false);cin.tie(0)
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    int gcd(int a,int b){
    	return b==0?a:gcd(b,a%b);
    }
    int main(){
    	int t; cin>>t;
    	while(t--){
    		LL r,b,k;
    		cin>>r>>b>>k;
    		LL x=min(r,b),y=max(r,b);
    		LL g=gcd(x,y); 
    		if(((y-1)/x+((y-1)%x>=g?1:0))>=k) puts("REBEL");
    		else puts("OBEY");
    	}
    	return 0;
    }
    
  • 相关阅读:
    整合Grafana
    Prometheus环境搭建
    RocketMQ单机部署
    记二进制搭建k8s集群完成后,部署时容器一直在创建中的问题
    接口重复提交解决方案
    记一次生产环境nginx图片上传不了的问题
    怎么进行中间件的学习
    MongoDB学习笔记之文档
    MongoDB学习笔记
    根据端口杀掉指定进程
  • 原文地址:https://www.cnblogs.com/yuhan-blog/p/12308806.html
Copyright © 2011-2022 走看看