zoukankan      html  css  js  c++  java
  • 【Codeforces 996B】World Cup

    【链接】 我是链接,点我呀:)
    【题意】

    【题解】

    你可以找出来a[i]里面的最小值mi,显然是这个数字最可能先变成0,但还不确定. 然后用mi/n得到你最少需要走多少圈才能让那个mi变成"只差一圈"就变成0. 那么把所有的a[i]都减去mi/n*n 然后再手动地模拟一圈(显然再模拟一圈就能让某个a[i]变成0了,即让那个mi变成0 但是有例外 比如说 6 5 7 8 9 10 这6个数字 mi=5 5/6=0 所以一开始a[i]不用减去任何数字. 但是你第一次遇到5的时候,5只变成了4.还没有变成0. 所以还得再模拟一圈. 这种情况,就模拟两圈就ok了。 综上,模拟两圈一定能得到a[i]=0的.

    【代码】

    #include <bits/stdc++.h>
    #define rep1(i,a,b) for (int i = a;i <= b;i++)
    
    using namespace std;
    
    const int N = 1e5;
    
    int n;
    int a[N+10],mi;
    
    int main()
    {
        ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
        cin >> n;
        rep1(i,1,n) cin >> a[i];
        mi = a[1];rep1(i,1,n) mi = min(mi,a[i]);
        int quan = mi/n;
        rep1(i,1,n) a[i] -= quan*n;
        int past = 0;
        rep1(i,1,n){
            if (a[i]-past<=0){
                cout<<i<<endl;
                return 0;
            }
            past++;
        }
    
        rep1(i,1,n){
            if (a[i]-past<=0){
                cout<<i<<endl;
                return 0;
            }
            past++;
        }
        return 0;
    }
    
  • 相关阅读:
    简介&目录
    Lucas 定理
    扩展欧几里得算法(exgcd)
    【做题记录】CF23B Party
    【做题记录】CF1375D Replace by MEX
    【做题记录】CF194B Square
    SPFA
    dijkstra
    CSP-J&S 2020 游记
    中国剩余定理(CRT)
  • 原文地址:https://www.cnblogs.com/AWCXV/p/9741847.html
Copyright © 2011-2022 走看看