Codeforces626C 【二分】

    xiaoxiao2025-06-19  6

    题意: 有两种搬砖的(不好好打代码就只能搬砖了),有n个sou弱的只能搬2块,m个stronger一点的能搬3块,他们想作死的独自把砖垒高,然后每个人垒的高度还各不相同,问你存在的最高高度的最小; 思路: 对于x块砖,他可以存x/2+x/3-x/6块砖,那么直接二分一下最高高度,判断条件如下代码。 二分模型是:0000000000111111111,满足条件的最左。 贴一发挫code………

    #include <bits/stdc++.h> using namespace std; const int N=1e3+10; int n,m; bool Judge(int h) { if((h/2+h/3-h/6)<(n+m)) return 0; if(h/2<n) return 0; if(h/3<m) return 0; return 1; } int main() { while(~scanf("%d%d",&n,&m)) { int s,t; s=max(n*2,m*3); t=3000000; while(s<t) { int mid=s+(t-s)/2; if(Judge(mid)) t=mid; else s=mid+1; } printf("%d\n",s); } return 0; }
    转载请注明原文地址: https://ju.6miu.com/read-1300103.html
    最新回复(0)