• URAL 2025. Line Fighting (math)


    2025. Line Fighting

    Time limit: 1.0 second
    Memory limit: 64 MB
    Boxing, karate, sambo… The audience is sick of classic combat sports. That is why a popular sports channel launches a new competition format based on the traditional Russian entertainment called line fighting.There can be from 2 to k teams taking part in a competition, and there are n fighters altogether in all the teams. Before the competition starts, the fighters are divided into teams: each fighter becomes a member of exactly one team.Two fighters fight each other if they are members of different teams. The organizers believe that the more the number of fights between fighters, the higher the popularity of a competition will be. Help the organizers to distribute fighters between teams so as to maximize the number of fights and output this number.

    Input

    The first line contains the number of tests T (1 ≤ T ≤ 10). In each of the following T lines you are given a test:integers n and k separated with a space (2 ≤ kn ≤ 104).

    Output

    For each test output the answer (one integer) in a separate line.

    Sample

    input output
    3
    6 3
    5 5
    4 2
    
    12
    10
    4
    
    Problem Author: Alexey Danilyuk
    Problem Source: Ural Regional School Programming Contest 2014




    解析:组合数学。因为组内不能打比赛,这就相当于在全部人都能比赛的基础上去掉了各个组间能打的比赛次数。

    首先,比赛次数最多的情况肯定是尽可能地将人数均分,这种比赛数是最多的。



    AC代码:

    #include <bits/stdc++.h>
    using namespace std;
    
    int main(){
        #ifdef sxk
            freopen("in.txt", "r", stdin);
        #endif // sxk
    
        int T, n, k, ans;
        scanf("%d", &T);
        while(T --){
            scanf("%d%d", &n, &k);
            ans = n * (n - 1) / 2;     //全部人两两之间打比赛的次数
            if(n != k){
                int foo = n / k;
                int cnt = n % k;       //均分后剩余cnt个人,再均分。则会出现cnt个人数多1的组
                ans -= cnt * ((foo + 1) * foo / 2);   //去掉人数较多的cnt组的总次数
                ans -= (k - cnt) * (foo * (foo - 1) / 2);   //去掉人数较少的总次数
            }
            printf("%d
    ", ans);
        }
        return 0;
    }
    


  • 相关阅读:
    我非要捅穿这 Neutron(三)架构分析与代码实现篇(基于 OpenStack Rocky)
    我非要捅穿这 Neutron(二)上层资源模型篇
    $('.one + div')选取class为one的下一个元素
    15分钟,教你用Python爬网站数据,并用BI可视化分析!
    $("div span")选取里的所有的元素
    根据给定的元素名匹配元素
    根据给定的类名匹配元素
    根据给定的id匹配一个元素
    想创业,请问有没有投资小的项目?
    Vue组件间的通信
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5222728.html
Copyright © 2020-2023  润新知