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