• Educational Codeforces Round 62题解


    A题

    签到

    #include<bits/stdc++.h>
    using namespace std; 
    int main()
    {
        int n,rw=0,t=0;
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            int r;
            cin>>r;
            if(r>rw) rw=r;
            if(i>=rw) t++;
        }
        cout<<t<<endl;
        return 0;
    }
    View Code

    B题

    前后枚举,看看那个情况小

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> pll;
    const int N=1e6+10;
    const int mod=1e9+7;
    int main(){
        ios::sync_with_stdio(false);
        int t;
        cin>>t;
        while(t--){
            int n;
            cin>>n;
            string s;
            cin>>s;
            int cnt1=0,cnt2=0;
            int i;
            for(i=0;i<n;i++){
                if(s[i]=='<')
                    cnt1++;
                else
                    break;
            }
            for(i=n-1;i>=0;i--){
                if(s[i]=='>')
                    cnt2++;
                else
                    break;
            }
            cout<<min(cnt1,cnt2)<<endl;
        }
        return 0;
    }
    View Code

    C题

    贪心算法,按照beauty排序之后倒序维护一个优先队列最大的k个值

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> pll;
    const int N=1e6+10;
    const int mod=1e9+7;
    struct node{
        ll a,b;
    }s[N];
    ll sum;
    priority_queue<int,vector<int>,greater<int> > q;
    bool cmp(node a,node b){
        return a.b<b.b;
    }
    int main(){
        ios::sync_with_stdio(false);
        int n,k;
        cin>>n>>k;
        int i;
        for(i=1;i<=n;i++){
            cin>>s[i].a>>s[i].b;
        }
        sort(s+1,s+1+n,cmp);
        ll ans=0;
        for(i=n;i>=1;i--){
            int tmp=0;
            if((int)q.size()==k){
                tmp=q.top();
                q.pop();
            }
            ans=max(ans,(sum-tmp+s[i].a)*s[i].b);
            q.push(tmp);
            q.push(s[i].a);
            sum+=s[i].a;
            if((int)q.size()>k){
                sum-=q.top();
                q.pop();
            }
        }
        cout<<ans<<endl;
        return 0;
    }
    View Code

    D题

    区间dp三角剖分裸题

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    typedef pair<int,int> pll;
    const int N=1e6+10;
    const int mod=1e9+7;
    ll f[1010][1010];
    ll w[N];
    int main(){
        ios::sync_with_stdio(false);
        int i;
        int n;
        cin>>n;
        memset(f,-1,sizeof f);
        for(i=1;i<n;i++){
            f[i][i+1]=0;
        }
        for(int len=3;len<=n;len++){
            for(int i=1;i+len-1<=n;i++){
                int j=i+len-1;
                for(int k=i+1;k<j;k++){
                    if(f[i][j]==-1||f[i][j]>f[i][k]+f[k][j]+i*j*k)
                    f[i][j]=f[i][k]+f[k][j]+i*j*k;
                }
            }
        }
        cout<<f[1][n]<<endl;
        return 0;
    }
    View Code
  • 相关阅读:
    C# WinForm开发系列 OpenSource Controls
    Jenkins_FileCenter_Deploy
    DatabaseOperation_DBM Kill inactive connection
    如何在linux下检测内存泄漏
    基本数据类型
    Linux Kernel Makefiles
    让GCC编译关键字“__attribute__”给你带来方便
    内核空间和用户空间
    程序人生--一个程序员对学弟学妹建议
    arm linux
  • 原文地址:https://www.cnblogs.com/ctyakwf/p/14203251.html
Copyright © 2020-2023  润新知