欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

codeforces 补题总结3

程序员文章站 2022-08-03 19:20:21
codeforces 1260 E这道题,哎,写的是时候忘了一个重要的点,虽然说花钱的场数是一定的,但是,所选的贿赂的人也是有区间限制的,结果写的时候把这个忘了,反应了半天,没反应过来。错误代码:#include #include#include#include#include#define ll long longusing namespace...

codeforces 1260 E
这道题,哎,写的是时候忘了一个重要的点,虽然说花钱的场数是一定的,但是,所选的贿赂的人也是有区间限制的,结果写的时候把这个忘了,反应了半天,没反应过来。
错误代码:

#include <iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<queue>
#define ll long long
using namespace std;
priority_queue<ll,vector<ll>,greater<ll> >q;
const int nn=1<<18+5;
ll a[nn];
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin>>n;
    int t;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        if(a[i]==-1)
        {
            t=i;
            break;
        }
    }
    for(int i=t+1;i<=n;i++)
    {
        cin>>a[i];
        q.push(a[i]);
    }
    ll res=0;
    if(q.empty())
    {
        cout<<"0"<<endl;
        return 0;
    }
    while(!q.empty())
    {
        res=res+q.top();
        q.pop();
        n=n/2;
        if(t>=n) break;
    }
    cout<<res<<endl;
    return 0;
}

codeforces 1257 E
这道题,又查了查题解,有个不错的知识点,
将一个序列变为完全上升序列的最少交换次数就是长度n-最长上升子序列len。
dp的关键是设置的代理数组的意义合理,说服力强。

剩下的题在看的时候大体的思路都还记得,但是写代码却不是那么容易,写着写着就会发现漏点什么,二分的题的思路比较清晰,但是老是漏掉东西,还有一个是邻接表的那个题,大体知道该怎么去办,但是用代码却衔接不起来,代码的衔接能力和表示能力是个大问题,每一个步骤的衔接点用什么衔接是一个需要重点思考的事情。代码衔接紧密的问题是最难发现错误的。

本文地址:https://blog.csdn.net/weixin_45608039/article/details/107395360

相关标签: 笔记2 codeforce