9.11 codeforces

A. Make a Square
n的范围不超过2*10的9次方,那么最大的i是44722,从大到小开始,如果在n中找到i的平方,那么说明存在这个数的平方break即可

#include <bits/stdc++.h>

#define  int long long
using namespace std;
int v[1008611];
int prefix[1008611];
int32_t main( )
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    string s1;
    cin>>s1;
    int aa=0;
    for(int i=44722;i>=1;i--){
        int pd=1;
        string s= to_string(i*i);
        if(s.length()<=s1.length()) {
            int j = 0;
            for (auto c: s1) {
                if (c == s[j]) {
                    j++;
                }
            }
            if (j == s.length()) {
                cout << s1.length() - s.length();
                aa = 1;
                break;
            }
        }
    }
    if(aa==0)cout<<-1;
  return 0;

}

A. Load Balancing
我们要让整个数组的最大最小值差不超过1,我们可以先找平均值,然后把多余平均值的数逐一分配给前面的数

#include <bits/stdc++.h>

#define int long long

using namespace std;

int v[1008611];

int32_t main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n;
    cin>>n;
    int sum=0;

    for(int i=1;i<=n;i++){
        int a;
        cin>>a;
        v[i]=a;
        sum+=a;
    }
    int s=sum;
        s/=n;
        //注意如果不能整除说明最后分配出来的会有多出来的情况
        if(sum%n)s++;
        int p=0;
        int q=0;
        int ans=0;
        int pd=0;
        for (int i = 1; i <=n; ++i) {
            if(v[i]<s-1)p+=s-1-v[i];
            if(v[i]>s)q+=v[i]-s;
        }
        // cout<<q<<p<<'\n';

        cout<<max(q,p);
}

C. Match Points
有点贪心加双指针的意思
我们要想使得点数最多,那么n/2就是最多的点对数,我们先对数组进行排列,让一个指针l从n开始,一个r从n/2开始
如果符合条件那么l--,整个过程r一直减r--;


#include <bits/stdc++.h>

#define  int long long

using namespace std;

int v[1008611];
int prefix[1008611];

int32_t main( )
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int n,m;
    cin>>n>>m;
    for (int i = 1; i <=n ; ++i) {
        cin>>v[i];
    }
    sort(v+1,v+1+n);
    int ans=0;
    int l=n,r=n/2;
    while(r>=1){
            if(abs(v[l]-v[r])>=m) {
                ans++;
                l--;
            }
               r--;
            }
    
    cout<<ans;


  return 0;

}
posted @ 2024-09-11 00:26  冬天的睡袋  阅读(10)  评论(0编辑  收藏  举报