• Codeforces Round #633 (Div. 2)


    地址: https://codeforces.com/contest/1339

         解析:最近a题题意都好长啊.....这道题直接看有几个竖着的菱形就可以了,输入n,输出n。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<set>
    using namespace std;
    typedef long long ll;
    const int maxn=3e5+100;
    ll v[maxn];
    ll a[maxn],b[maxn];
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            ll n;
            cin>>n;
            cout<<n<<endl;
        }
    }

         题意:将给出的数列进行重新排列,使两两之间的差逐渐增大。

         解析:排个序,从中间向两边扩散取就可以了,每次取这个数和它在右边对应的数。注意n是奇数的时候,先把a[mid]打印出来。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<set>
    using namespace std;
    typedef long long ll;
    const int maxn=1e5+100;
    ll a[maxn];
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            int n;
            cin>>n;
            ll x;
            for(int i=0;i<n;i++)
            {
                cin>>a[i];
            }
            sort(a,a+n);
            int mid=n/2;
            if(n%2!=0)
                cout<<a[mid]<<" ";
            for(int i=mid-1;i>=0;i--)
            {
                if(i>0)
                cout<<a[i]<<" "<<a[n-1-i]<<" ";
                else
                cout<<a[i]<<" "<<a[n-1-i]<<endl;
            }
        //    cout<<endl;
        }
    }

         题意:那个aij我是没看懂什么意思。不过不影响理解题意,就是说第x秒可以对任意几个位置+2^(x-1)。要求把整个数列变成非递减数列,最快需要几秒。

         解析:取最大递减差值maxx,看从0到maxx需要多少秒即可。注意求这个maxx,不能O(n*n)地找,我就在这里T了一次。只要一个for里每次更新最大值mx和最大差值即可。因为对于当前a[i],最大值要么在它头上,要么在它前面,在它头上,就说明当前位置之前没有出现递减现象。在它前面,就说明出现了递减,更新这个差值,每次max取最大差值即可。

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<set>
    using namespace std;
    typedef long long ll;
    const int maxn=1e5+100;
    const int minnx=2e9;
    ll a[maxn];
    ll v[maxn];
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            int n;
            scanf("%d",&n);
            for(int i=0;i<n;i++)
                scanf("%lld",&a[i]);
            int ok=0;
            for(int i=1;i<n;i++)
            {
                if(a[i-1]>a[i])
                {
                    ok=1;break;
                }
            }
            if(!ok)
            {
                cout<<"0"<<endl;continue;
            }
            ll mx=a[0],maxx=0;
            for(int i=0;i<n;i++)
            {maxx=max(maxx,mx-a[i]);
                mx=max(mx,a[i]);
                
            }
            ll cnt=0,k=1;
            ll sum=0;
            while(1)
            {
                sum+=k;
                cnt++;
                k=k*2;
                if(sum>=maxx)
                    break;
            }
            cout<<cnt<<endl;
        }
    }
  • 相关阅读:
    psql: FATAL: index "pg_opclass_oid_index" contains unexpected zero page at block 0 以及错误 rm: cannot remove ‘base/90112/95992_fsm’: Structure needs cleaning
    rabbitmq centos 7.4 主备安装,加入主节点失败Error: unable to perform an operation on node 'rabbit@mq2'. Please see diagnostics information and suggestions below.
    Centos 7 查看显卡型号
    ORA-600 16703 SYS.TAB$表被删除
    linux orcal启动
    windows 下redis配置一主两从三哨兵模式以及springboot集成
    Spring定时任务service无法注入问题
    web缓存欺骗
    Automate Cache Poisoning Vulnerability
    bugbounty
  • 原文地址:https://www.cnblogs.com/liyexin/p/12692774.html
Copyright © 2020-2023  润新知