2021CSP-S题解(待补)
T1:
这次最大的失误就是误判一种网络的名称(传输率可达1.54mbps)不可做.
因为每架飞机只要有空闲的廊桥就可以就可以停靠,以此可以推出一个结论:当廊桥数量增加时,已经停靠的飞机的位置是不会发生变化的。我们可以用两个优先队列求出有无限多个廊桥时,每架飞机停靠的位置。只有停靠的位置小于等于当前廊桥数的飞机才能停下。用前缀和处理下,接着枚举给每个区分配的廊桥数,O(1)更新答案即可。
代码:
#包括ebit/stdc .h
使用命名空间标准;
int read(){ 0
int s=0,w=1;char ch=getchar();
while(ch ' 0 ' | | ch ' 9 '){ if(ch=='-')w=-1;ch=getchar();}
while(ch='9' ch='0') s=s*10 ch-'0 ',ch=getchar();
返回s * w;
}
常量整数N=1e5 5
int n,m1,m2;
结构飞行
国际,r;
} nn[N],ww[N];
布尔化学机械抛光(x航班,y航班){返回x . l . y . l}
int s1[N],s2[N],cnt,ans1[N],ans2[N],maxn
priority_queue pairint,int q1,Q2;
priority_queueint qq1、qq2
void init(){ 0
S1[1]=1;q1.push(make_pair(-nn[1]).r,1));CNT=1;ans1[1]=1;
for(int I=2;i=m1I){ 0
while(q1.size() -q1.top().第一l){ 0
int k=q1.top().第二;
Q1。pop();
QQ 1。push(-S1[k]);
}
如果(QQ 1。size()){ 0
S1[我]=-QQ 1。top();
ans1[S1[I]];
QQ 1。pop();
q1.push(make_pair(-nn[i]).r,I));
}
else {
碳纳米管;
S1[1]=碳纳米管;
ans1[S1[I]];
q1.push(make_pair(-nn[i]).r,I));
}
}
S2[1]=1;q2.push(make_pair(-ww[1]).r,1));CNT=1;ans2[1]=1;
for(int I=2;i=m2I){ 0
while(q2.size() -q2.top().第一次世界大战l){ 0
int k=q2.top().第二;
Q2。pop();
QQ 2。push(-S2[k]);
}
如果(QQ 2。size()){ 0
S2[我]=-QQ 2。top();
ans2[S2[I]];
QQ 2。pop();
q2.push(make_pair(-ww[i]).r,I));
}
else {
碳纳米管;
S2[1]=碳纳米管;
ans2[S2[I]];
q2.push(make_pair(-ww[i]).r,I));
}
}
for(int I=2;I=n;I){ 0
ans1[I]=ans1[I-1];
ans2[I]=ans2[I-1];
}
}
int main(){ 0
//freopen('airport3.in ',' r ',stdin);
//freopen('1.txt ',' w ',stdout);
n=read();m1=read();m2=read();
for(int I=1;i=m1我l=read(),nn[i].r=read();
for(int I=1;i=m2一)第一次世界大战.l=read(),ww[i].r=read();
排序(nn 1,nn m1 1,CMP);
排序(ww 1,ww m2 1,CMP);
init();
maxn=-1;
for(int I=0;I=n;i ) maxn=max(ans1[i] ans2[n-i],maxn);
printf('%d\n ',maxn);
返回0;
}
T2:
分类讨论区间DP。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/48870.html