51nod 1672 区间交
2016-11-21 02:30
411 查看
枚举区间交的左端点,multiset维护右端点。
#include<bits/stdc++.h>
using namespace std;
const int MAXN=100100;
struct segment
{
int lef,rig;
}seg[MAXN];
bool cmp(segment s1,segment s2)
{
if(s1.lef!=s2.lef)
return s1.lef<s2.lef;
return s1.rig<s2.rig;
}
int a[MAXN];
long long sum[MAXN];
multiset<int> st;
multiset<int> ::iterator it;
int main()
{
int n,m,k,i;
long long ans;
while(scanf("%d%d%d",&n,&k,&m)!=EOF)
{
st.clear();
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=0;i<m;i++)
scanf("%d%d",&seg[i].lef,&seg[i].rig);
sort(seg,seg+m,cmp);
sum[0]=0;
for(i=1;i<=n;i++)
sum[i]=sum[i-1]+a[i];
for(i=0;i<k;i++)
st.insert(seg[i].rig);
it=st.begin();
ans=max((long long)0,sum[*it]-sum[seg[k-1].lef-1]);
for(i=k;i<m;i++)
{
st.insert(seg[i].rig);
if(seg[i].rig>=(*it))
it++;
ans=max(ans,sum[*it]-sum[seg[i].lef-1]);
}
printf("%lld\n",ans);
}
}
#include<bits/stdc++.h>
using namespace std;
const int MAXN=100100;
struct segment
{
int lef,rig;
}seg[MAXN];
bool cmp(segment s1,segment s2)
{
if(s1.lef!=s2.lef)
return s1.lef<s2.lef;
return s1.rig<s2.rig;
}
int a[MAXN];
long long sum[MAXN];
multiset<int> st;
multiset<int> ::iterator it;
int main()
{
int n,m,k,i;
long long ans;
while(scanf("%d%d%d",&n,&k,&m)!=EOF)
{
st.clear();
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
for(i=0;i<m;i++)
scanf("%d%d",&seg[i].lef,&seg[i].rig);
sort(seg,seg+m,cmp);
sum[0]=0;
for(i=1;i<=n;i++)
sum[i]=sum[i-1]+a[i];
for(i=0;i<k;i++)
st.insert(seg[i].rig);
it=st.begin();
ans=max((long long)0,sum[*it]-sum[seg[k-1].lef-1]);
for(i=k;i<m;i++)
{
st.insert(seg[i].rig);
if(seg[i].rig>=(*it))
it++;
ans=max(ans,sum[*it]-sum[seg[i].lef-1]);
}
printf("%lld\n",ans);
}
}
相关文章推荐
- 51nod 1672 区间交【线段树、multiset】
- 51nod 1672-区间交(线段树)
- 51nod 1672 区间交(贪心)
- 51Nod-1672-区间交
- 51nod 1672 区间交 (经典贪心)
- 51nod-1672 区间交
- 51NOD 1672 区间交
- 51NOD 1672 区间交 线段树
- 51nod 1672 区间交
- 【51Nod】1672 - 区间交(线段树 & 贪心)
- 51nod 1672 区间交
- 51nod 1672 区间交(贪心)
- 51nod 1672 区间交【线段树】【贪心】
- 51nod 1672 区间交 (优先队列priority_queue 或 多重集合multiset)
- 51nod 1434 区间LCM【数论】
- 51Nod 1133 不重叠的线段 (区间贪心
- 51Nod-1094-和为k的连续区间
- 51nod 1495 中国好区间
- 51Nod 1094 和为k的连续区间 | 水
- 51nod 1092【区间dp】