当前位置: 移动技术网 > 移动技术>移动开发>IOS > codeforces 补题总结3

codeforces 补题总结3

2020年07月17日  | 移动技术网移动技术  | 我要评论

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网