我杂题选讲的 T1,没什么好说的,这里直接跳过。
发现状态具有单调性,直接贪心就是对的。或者你二分也行吧,但是状态单调性的排名的题还是推荐直接优先队列去做。
::::success[Code]
#define FileIO
#include
using namespace std;
#define ll long long
#define fi first
#define se second
#define il inline
bool stMem; double stT=clock();
const int N=1e5+10;
const ll P=998244353;
il ll qp(ll a,ll b=P-2){ll res=1;for(;b;b>>=1,a=(a*a)%P) if(b&1) res=(res*a)%P;return res;
}
// ---------------------------------------------------- //
int n,k; ll a[N],s[N];
struct events{ int l,r; };
il bool operator<(events x,events y){ return s[x.r]-s[x.l-1]> segments;
priority_queue q;
il void ins(int l,int r){if(l>r||(!(1<=l&&l<=n&&1<=r&&r<=n))) return;if(segments.count({l,r})) return;segments.insert({l,r});q.push({l,r});
}
// ---------------------------------------------------- //
il void solve(){cin>>n>>k;for(int i=1;i<=n;++i) cin>>a[i], s[i]=s[i-1]+a[i];segments.insert({1,n});q.push({1,n});while(k--){auto p=q.top(); q.pop();cout<>T;while(T--) solve();cerr<<"\n";cerr<<"[Info] End Of Running. \n";cerr<<" Time Used : "<<(clock()-stT)/CLOCKS_PER_SEC*1000.00<<" ms\n";cerr<<" Memory Used : "<<(&stMem-&edMem)/1048576.00<<" Mib\n";return 0;
}
::::
https://www.luogu.com.cn/article/cybuhsf7