• 20200803 牛客多校赛


    上菜

    #include <iostream>
    #include <set>
    #include <iostream>
    #include <cstring>
    #include <queue>
    #include <math.h>
    #include <map>
    #include <string>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    const int maxn=1e5+10;
    int a[maxn],b[maxn],c[maxn]={0},d[maxn],out,n,flag,num;
    set<int> s;
    set<int> nums;
    inline int read(){
        int x=0,f=1;char c=getchar();
        while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
        return x*f;
    }
    inline void sort(int a[],int n)
    {
        int temp;
        for(int i=0;i<n-1;i++)
        {
            for(int j=0;j<n-i-1;j++)
            {
                if(a[j]<a[j+1])
                {
                    temp=a[j+1];
                    a[j+1]=a[j];
                    a[j]=temp;
                }
            }
        }
    }
    int main()
    {
        int t=read();
        for(int i=1;i<=t;i++)
        {
            int n=read(),min1=1e5+10,coun=0,sum=0,desk=n-1;
            for(int j=0;j<n;j++){
                c[j]=read();if(j>0)c[j]+=c[j-1];
    //            if(c[j]>max1)max1=c[j];
    //            if(c[j]<max1)c
            }
            for(int j=0;j<n;j++){
                int p=read();
                min1=a[j]=min(p,min1);
            }
            memcpy(d,c,sizeof(c));
            int temp;
            for(int j=0;j<n-1;j++)
            {
                for(int g=0;g<n-j-1;g++)
                    if(d[g]>d[g+1])
                    {
                        //cout<<d[g]<<" "<<d[g+1]<<endl;
                        temp=d[g+1];
                        d[g+1]=d[g];
                        d[g]=temp;
                        //cout<<d[g]<<" "<<d[g+1]<<endl;
                    }
                //cout<<d[n-1-j]<<endl;
                for(int k=desk;k>=0;k--)
                {
                    if(c[k]==d[n-1-j])
                    {
                        if(a[k]!=coun){
                            sum+=c[k]*(a[k]-coun);
                            coun=a[k];
                            desk=k-1;
                        }
                        //cout<<sum<<endl;
                        break;
                    }
                }
            }
            cout<<"Case #"<<i<<": "<<a[0]<<' '<<sum<<endl;
        }
        return 0;
    }
    

      游戏

    #include <iostream>
    #include <set>
    #include <iostream>
    #include <cstring>
    #include <queue>
    #include <math.h>
    #include <map>
    #include <string>
    #include <cstdio>
    #include <algorithm>
    using namespace std;
    const int maxn=1e5+10;
    int a[maxn],b[maxn],out,n,flag,num;
    set<int> s;
    set<int> nums;
    inline int read(){
        int x=0,f=1;char c=getchar();
        while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
        while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
        return x*f;
    }
    inline void dfs(int c,int m)
    {
        if(flag)
        {
            if(m==n)
    		{
            	if(c>out)out=c;
            	if(out==num)flag=0;
            	//cout<<3<<endl;
            	return;
            }
            if(s.insert(a[m]).second)
            {
                dfs(c+1,m+1);s.erase(s.find(a[m]));
            //cout<<1<<endl;
                //cout<<' '<<a[m]<<endl;
            }
            //cout<<m<<endl;
            if(s.insert(b[m]).second)
            {
                dfs(c+1,m+1);s.erase(s.find(b[m]));
                //cout<<2<<endl;
            }
            dfs(c,m+1);
        }
    }
    inline void clean()
    {
        memset(a,0,sizeof(a));
        memset(b,0,sizeof(b));
        s.clear();
        nums.clear();
        out=0;
        flag=1;
    }
    
    int main()
    {
        int t;
        t=read();
        for(int j=1;j<=t;j++)
        {
            n=read();
            clean();
            for(int i=0;i<n;i++)
            {
                a[i]=read();b[i]=read();
            }
            nums.insert(a,a+n-1);
            nums.insert(b,b+n-1);
            num=nums.size();
            dfs(0,0);
            cout<<"Case #"<<j<<": "<<out<<endl;
        }
        return 0;
    }
    

      

  • 相关阅读:
    git ssh keys
    git 修改 email
    git 撤销commit
    企微调试模式
    ORACLE 根据某个字段固定值进行分区
    Apache FtpClient login失败
    Oracle序列
    Oracle merage into
    Oracle all_tables 以及常用sql
    性能优化-使用高性能的库fastutil
  • 原文地址:https://www.cnblogs.com/tabshh/p/13428172.html
Copyright © 2020-2023  润新知