1 条题解

  • 0
    @ 2025-8-24 23:17:37

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar liuyuantao
    天行健,君子以自强不息;地势坤,君子以厚德载物 最后在线时间:2025/08

    搬运于2025-08-24 23:17:37,当前版本为作者最后更新于2025-06-07 21:15:55,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题目传送门
    对于区内赛,每支队伍与区内的 M1M-1 队比 A=kBA=kB 场,共有 MM 支队伍,NN 个区域,故总共比了 kBNM(M1)2\frac{kBNM(M-1)}{2} 场(去重)。
    对于区外赛,每支队伍与区外的 (N1)M(N-1)M 队比 BB 场,共有 NMNM 支球队,总共比了 BN(N1)M22\frac{BN(N-1)M^2}{2} 场。
    故总场数为 $\frac{kBNM(M-1)}{2}+\frac{BN(N-1)M^2}{2}=\frac{BNM[k(M-1)+(N-1)M]}{2} \le D$,解得 B2DNM[k(M1)+(N1)M]B \le \frac{2D}{NM[k(M-1)+(N-1)M]},故 B=2DNM[k(M1)+(N1)M]B=⌊\frac{2D}{NM[k(M-1)+(N-1)M]}⌋
    之后代回计算即可。
    复杂度显然是 O(T)O(T) 的。

    AC code

    #include <bits/stdc++.h>
    
    using namespace std;
    
    #define LL long long
    
    LL n,m,k,T,q,cnt,ans,sum;
    
    int main(){
    	ios::sync_with_stdio(0);
    	cin>>T;
    	while(T--){
    		cin>>n>>m>>k>>q;
    		sum=m*k*(m-1);
    		cnt=m*n*(n-1);
    		ans=floor(1.0*2*q/(cnt+sum));
    		cout<<(ans*sum+ans*cnt)/2<<endl;
    	}
    	
    	return 0;
    }
    
    • 1

    信息

    ID
    12452
    时间
    1000ms
    内存
    1024MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者