CF1260C-Infinite Fence【结论题】
生活随笔
收集整理的這篇文章主要介紹了
CF1260C-Infinite Fence【结论题】
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
正題
題目鏈接:https://www.luogu.com.cn/problem/CF1260C
題目大意
無數(shù)個欄桿,rrr的倍數(shù)染成紅色,bbb的倍數(shù)染成藍色,是rrr和bbb的倍數(shù)的話可以選擇一個染色,去掉沒有染色的,是否有一種方案使得最長的染色快不超過kkk個。
解題思路
顯然在rrr和bbb的最小公倍數(shù)左右兩種顏色是一樣的,所以只需要考慮每個公倍數(shù)為一段之間的最長連續(xù)色塊。
假設r>br>br>b,我們計算最長色塊,顯然邊上的色塊長度是r/br/br/b。
先將rrr和bbb除于最小公因數(shù)ggg,考慮計算中間的,因為無限延伸,總會有一種情況使得一個藍色塊搞好在紅色塊的后第ggg個位置,那么此時是中間最長的,長度為(r?2)/b+1(r-2)/b+1(r?2)/b+1
所以判斷即可。
codecodecode
#include<cstdio> #include<cstring> #include<algorithm> #define ll long long using namespace std; ll T,a,b,k; ll gcd(ll x,ll y){if(!y) return x;return gcd(y,x%y); } int main() {//freopen("color.in","r",stdin);//freopen("color.out","w",stdout);scanf("%lld",&T);while(T--){scanf("%lld%lld%lld",&a,&b,&k);if(k==1){printf("REBEL\n");continue;}if(a<b)swap(a,b);ll g=gcd(a,b);a/=g;b/=g;if(a==1&&b==1)printf("OBEY\n");else if(b==1){if(a-b>=k)printf("REBEL\n");else printf("OBEY\n");}else{ll c=(a-2)/b+1,z=a/b;if(c>=k||z>=k) printf("REBEL\n");else printf("OBEY\n");}} }總結
以上是生活随笔為你收集整理的CF1260C-Infinite Fence【结论题】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10系统如何切换显卡笔记本电脑显卡
- 下一篇: word怎么单独设置一页为横向word中