• codeForces #577 (div.2)


    B. Zero Array

    题意:给出一个长为N的序列然后,每次能对序列中任意两个不相同的值同时减1,判断最后能否将全部减为0

    思路:一开始毫无疑问可以想到,要把序列减为0,总值必须为偶数。其次,就是要避免最后减完后还余留某个值(自身不能够相减),即将所给序列先sort一边然后判断最大的是否大于总值的1/2;

    题解:

    #include <cstdio>
    #include <iostream>
    #include <string>
    #include <algorithm> 
    #include <cstring>
    #define ll long long
    using namespace std;
    const int maxn = 1e5;
    ll ans;
    int arr[maxn];
    bool cmp(int a,int b){
        return a>b;
    }
    int main(){
        int n;
        while(cin>>n){
            int tmp;
            ll ans = 0;
            for(int i=0;i<n;i++){
                cin>>arr[i];
                ans += arr[i];
            }
            sort(arr,arr+n,cmp);
            if(ans%2) cout<<"NO"<<endl;
            else if(2*arr[0]>ans){
                cout<<"NO"<<endl;
            }
            else cout<<"YES"<<endl;
        }
    } 

    C. Maximum Median

    题意:给出一个奇数序列经过m次操作使它的中位数尽可能最大
    思路:真的是想多了,一开始想着离散化处理 统计个数乘以差值来一段一段减快一些。结果一直TLE或者WA
    回到最简单的思路就应该是一个一个的减去更新

    #include <cstdio>
    #include <cstring>
    #include <iostream>
    #include <algorithm>
    #define ll long long
    using namespace std;
    const int maxn = 2e5+10;
    ll arr[maxn];
    int main(){
        ios::sync_with_stdio(false);
        cin.tie(0); cout.tie(0);
        int n;
        ll m;
        while(cin>>n>>m){
            for(int i=0;i<n;i++){
                cin>>arr[i];
            } 
            sort(arr,arr+n);
            int mid = n/2; 
            if(arr[mid]+m < arr[mid+1]){
                cout<<arr[mid]+m<<endl;
                continue;
            }
            int t = 1;
            ll ans = arr[mid];
            for(int i=1;mid +i<n;i++){
                if(m -(arr[mid+i]- ans)*i <0){
                    break;
                }
                t = i+1; 
                m -= (arr[mid+i]-ans)*i;
                ans = arr[mid+i];
            }
            cout<<ans+(m/t)<<endl;
        }
    } 
  • 相关阅读:
    .Net 下的Wondows窗体常用项目
    常用工具下载网址
    灵活操作MS SQL 2005 中的数据库 分离、附加、离线、在线、日志截断
    C#中使用委托
    Internet Information Services 诊断工具
    谁能帮我看一下这个问题 HRESULT = '80131509'
    在C#中使用指针
    MSSQL2005的新功能创建数据库快照
    Exchange 规划安装配置一条龙课程
    将进酒
  • 原文地址:https://www.cnblogs.com/Tianwell/p/11307851.html
Copyright © 2020-2023  润新知