网站开发常用图标,网站统计开放平台,wordpress彩色字体,注册公司100万意味着什么E. Two Editorials
官方题解 首先将每个参赛者按照区间中点排序#xff0c;那么前一段参赛者听第一个人#xff0c;而后一段听第二个人的。 预处理数组su[j]表示j→mj\to mj→m这些参赛者能被“覆盖”最多“贡献” 只需要枚举第一个人演讲的区间#xff0c;再考虑前多少参赛…E. Two Editorials
官方题解 首先将每个参赛者按照区间中点排序那么前一段参赛者听第一个人而后一段听第二个人的。 预处理数组su[j]表示j→mj\to mj→m这些参赛者能被“覆盖”最多“贡献” 只需要枚举第一个人演讲的区间再考虑前多少参赛者听第一个人演讲然后其余的参赛者听第二个人演讲通过预处理数组直接查询
//O(mlogmnm)
#define IO ios::sync_with_stdio(false);cin.tie();cout.tie(0)
#pragma GCC optimize(2)
#includeset
#includemap
#includecmath
#includestack
#includequeue
#includerandom
#includebitset
#includestring
#includevector
#includecstdio
#includecstring
#includeiostream
#includealgorithm
#includeunordered_map
#includeunordered_set
using namespace std;
typedef long long ll;
typedef pairint,int pii;
const ll mod998244353;
const int N2020;
struct node
{int l,r;bool operator(const node O)const {return lrO.lO.r;}
}seg[N];
int n,m,k;
int su[N];
int main()
{IO;int T1;//cinT;while(T--){cinnmk;for(int i1;im;i) cinseg[i].lseg[i].r;sort(seg1,seg1m);for(int i1;ik-1n;i){int cur0;for(int jm;j;j--){curmax(0,min(ik-1,seg[j].r)-max(i,seg[j].l)1);su[j]max(su[j],cur);}}int ressu[1];for(int i1;ik-1n;i){int cur0;for(int j1;jm;j){curmax(0,min(ik-1,seg[j].r)-max(i,seg[j].l)1);resmax(res,cursu[j1]);}}coutres\n;}return 0;
}总结没有挖掘到按照中点排序的性质以及预处理优化做的太少