• codeforces round FF


     

    A水题,但是刚开始写的时候,不知道怎么样例过不了,所以就改写了一边,花了10多分钟才a

    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cassert>
    #include<iomanip>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define pi acos(-1.0)
    #define ll long long
    #define mod 1000000007
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    
    const double g=10.0,eps=1e-7;
    const int N=10000+10,maxn=500+100,inf=0x3f3f3f;
    
    bool vis[N];
    int a[N];
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int p,n;
        cin>>p>>n;
        memset(vis,0,sizeof vis);
        for(int i=1;i<=n;i++)cin>>a[i];
        for(int i=1;i<=n;i++)
        {
            a[i]%=p;
            if(vis[a[i]])
            {
                cout<<i<<endl;
                return 0;
            }
            else vis[a[i]]=1;
        }
        cout<<-1<<endl;
        return 0;
    }
    A

    B也很水,6分钟1a

    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cassert>
    #include<iomanip>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define pi acos(-1.0)
    #define ll long long
    #define mod 1000000007
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    
    const double g=10.0,eps=1e-7;
    const int N=10000+10,maxn=500+100,inf=0x3f3f3f;
    
    int a[30];
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        string s;
        int n;
        cin>>s>>n;
        int maxx=0;
        for(int i=0;i<26;i++)
        {
            cin>>a[i];
            maxx=max(maxx,a[i]);
        }
        int ans=0;
        for(int i=0;i<s.size();i++)
        {
            int te=s[i]-'a';
            ans+=a[te]*(i+1);
        }
        for(int i=1;i<=n;i++)
            ans+=maxx*(i+s.size());
        cout<<ans<<endl;
        return 0;
    }
    B

    c题wa了两发,原因是全部递增的情况没有考虑,用一个数组记录递增长度,一个记录断点,枚举断点两段长度就行了

    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cassert>
    #include<iomanip>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define pi acos(-1)
    #define ll long long
    #define mod 1000000007
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    
    const double g=10.0,eps=1e-4;
    const int N=100000+10,maxn=500+100,inf=0x3f3f3f;
    
    int in[N],q[N],a[N];
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        int n;
        cin>>n;
        for(int i=0;i<n;i++)cin>>a[i];
        int cnt=0;
        for(int i=0;i<n-1;i++)
        {
            if(a[i+1]>a[i])in[cnt]++;
            else q[cnt]=i,cnt++;
        }
        q[cnt]=n-1;
        for(int i=0;i<=cnt;i++)
        {
            in[i]++;
           /* cout<<in[i]<<endl;
            cout<<q[i]<<endl;*/
        }
        int ans=1;
        for(int i=0;i<cnt;i++)
        {
            if(q[i]>0&&a[q[i]+1]-1>a[q[i]-1])ans=max(ans,in[i]+in[i+1]);
            else if(in[i+1]>1&&a[q[i]]+1<a[q[i]+2])ans=max(ans,in[i]+in[i+1]);
            ans=max(ans,in[i]+1);
          //  cout<<ans<<endl;
        }
        ans=max(ans,in[cnt]+1);
        if(ans>n)ans=n;
        cout<<ans<<endl;
        return 0;
    }
    C

    D题有点坑,先暴力求出行和列的k次取值(优先队列优化),然后枚举0到k的情况,就是行取i次,列取k-i次,这样的话每列i*q被取出,又有k-i列,所以减去i*(k-i)*q,还要注意数组大小。。。

    #include<map>
    #include<set>
    #include<cmath>
    #include<queue>
    #include<stack>
    #include<vector>
    #include<cstdio>
    #include<cassert>
    #include<iomanip>
    #include<cstdlib>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define pi acos(-1.0)
    #define ll long long
    #define mod 1000000007
    #define ls l,m,rt<<1
    #define rs m+1,r,rt<<1|1
    #pragma comment(linker, "/STACK:1024000000,1024000000")
    
    using namespace std;
    
    const double g=10.0,eps=1e-4;
    const int N=1000+10,maxn=500+100,inf=0x3f3f3f;
    
    ll ma[N][N],ro[N*N],co[N*N];
    priority_queue<ll>row,col;
    int main()
    {
        ios::sync_with_stdio(false);
        cin.tie(0);
        ll n,m,k,p;
        cin>>n>>m>>k>>p;
        for(int i=0;i<n;i++)
            for(int j=0;j<m;j++)
               cin>>ma[i][j];
        for(int i=0;i<n;i++)
        {
            ll res=0;
            for(int j=0;j<m;j++)res+=ma[i][j];
            row.push(res);
        }
        for(int i=0;i<m;i++)
        {
            ll res=0;
            for(int j=0;j<n;j++)res+=ma[j][i];
            col.push(res);
        }
        memset(co,0,sizeof co);
        memset(ro,0,sizeof ro);
        for(int i=1;i<=k;i++)
        {
            ll cnt=row.top();
            ro[i]=ro[i-1]+cnt;
            row.pop();
            row.push(cnt-m*p);
            cnt=col.top();
            co[i]=co[i-1]+cnt;
            col.pop();
            col.push(cnt-n*p);
        }
        ll ans=-1e18;
        for(ll i=0;i<=k;i++)
            ans=max(ans,co[k-i]+ro[i]-1ll*(k-i)*i*p);
        cout<<ans<<endl;
        return 0;
    }
    /*********************
    1 2 2 2
    1 3
    *********************/
    D
  • 相关阅读:
    函数【二】嵌套/作用域/名称空间
    内核模块加载错误 “Invalid module format” 解决办法
    linux oops调试
    linux 工具
    makefile 嵌套
    scheduling while atomic 出现的错误
    Windows下VSCode编译调试c/c++
    window markdown 编辑器
    linux 比较命令
    openwrt 加入nand flash的支持
  • 原文地址:https://www.cnblogs.com/acjiumeng/p/7200468.html
Copyright © 2020-2023  润新知