ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

【比赛记录】2025CSP-S模拟赛51

【比赛记录】2025CSP-S模拟赛51
A B C D Sum Rank
100 9 54 - 163 11/24

A. 算术

列个表格:

\(a_i\to\)
\(a_j\downarrow\)
\(\le0\) \(1\) \(>1\)
\(\le0\)
\(1\)
\(>1\)

记录当前 \(=1\)\(>1\)\(\ge1\) 的数量即可。

Code
#include<bits/stdc++.h>
#define ll long long
#define il inline
using namespace std;
namespace asbt{
const int maxn=1e6+5;
int n,cntge1,cnte1,cntg1;
ll a[maxn];
int main(){ios::sync_with_stdio(0),cin.tie(0);cin>>n;ll ans=0;for(int i=1;i<=n;i++){cin>>a[i];if(a[i]<=0){ans+=cntge1;}else if(a[i]==1){ans+=i-1;cnte1++,cntge1++;}else{ans+=i-1-cntg1;cntg1++,cntge1++;}
//		cout<<ans<<'\n';}cout<<ans;return 0;
}
}
int main(){return asbt::main();}

B. 刷墙

区间 DP。设 \(f_{l,r}\) 表示区间 \([l,r]\) 的最大颜色数量。枚举 \(k\in[l,r)\),考虑优先染一个包含了 \([k,k+1]\) 的颜色,然后再递归 \([l,k]\)\([k+1,r]\) 的子问题。二维前缀和查一下即可。

Code
#include<bits/stdc++.h>
#define il inline
#define lwrb lower_bound
using namespace std;
namespace asbt{
int n,ll[305],rr[305],lsh[605],tot,f[605][605],s[605][605];
il int get(int l1,int l2,int r1,int r2){return s[l2][r2]-s[l1-1][r2]-s[l2][r1-1]+s[l1-1][r1-1];
}
int main(){ios::sync_with_stdio(0),cin.tie(0);cin>>n;for(int i=1;i<=n;i++){cin>>ll[i]>>rr[i];lsh[++tot]=ll[i];lsh[++tot]=rr[i];}sort(lsh+1,lsh+tot+1);tot=unique(lsh+1,lsh+tot+1)-lsh-1;for(int i=1;i<=n;i++){s[lwrb(lsh+1,lsh+tot+1,ll[i])-lsh][lwrb(lsh+1,lsh+tot+1,rr[i])-lsh]++;}for(int i=1;i<=tot;i++){for(int j=1;j<=tot;j++){s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];}}for(int len=2;len<=tot;len++){for(int l=1,r=len;r<=tot;l++,r++){for(int p=l;p<r;p++){f[l][r]=max(f[l][r],f[l][p]+f[p+1][r]+(get(l,p,p+1,r)>0));}}}cout<<f[1][tot];return 0;
}
}
int main(){return asbt::main();}

C. 重复

D. 公交

返回列表