神秘CSP-J复赛
2025-11-01 19:50:18
发布于:浙江
T1(100分)入门
用桶做的,耗时20min
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
int a[100]={0};
for(int i=0;i<s.size();i++){
if(s[i]>='0' and s[i]<='9'){
a[s[i]-'0']++;
}
}
for(int i=9;i>=0;i--){
while(a[i]--)cout<<i;
}
return 0;
}
T2(100分)普及-
数学题,保护双手摧残大脑,耗时30min
#include<bits/stdc++.h>
using namespace std;
bool cmp(int a,int b){return a>b;}
int main()
{
int n,m,a[1000];
cin>>n>>m;
int k=-1;
for(int i=0;i<n*m;i++){
cin>>a[i];
}
int x=a[0];
sort(a,a+n*m,cmp);
for(int i=0;i<n*m;i++){
if(a[i]==x)k=i;
}
int mm=k/n+1,nn;
if(mm%2==1){
nn=k%n+1;
}
else nn=n-k%n;
cout<<mm<<' '<<nn;
return 0;
}
T3(ACGO测45分)普及/提高-
纯骗,耗时100min(80min在思考但是没结果)
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,k,a[100006],ans=0;
cin>>n>>k;
for(int i=0;i<n;i++){
cin>>a[i];
}
if(k==0){
for(int i=0;i<n;i++){
if(a[i]==0)ans++;
if(a[i]==1 and a[i+1]==1){ans++;i++;}
}
}
else{
for(int i=0;i<n;i++){
if(a[i]==1)ans++;
}
}
cout<<ans;
return 0;
}
T4(ACGO测44分)普及/提高-
经典深搜+骗,耗时40min
#include<iostream>
using namespace std;
int n,a[100006],choose[100006],cnt=0;
int MAx(int a,int b){
if(a>b)return a;
return b;
}
void check(){
int mx=-1,ct=0,sum=0;
for(int i=0;i<n;i++){
if(choose[i]==1){
mx=MAx(mx,a[i]);
sum++;
ct+=a[i];
}
}
if(ct<=mx*2 or sum<3)return;
cnt++;
cnt%=998244353;
}
void dfs(int idx){
if(idx>=n){
check();
return;
}
choose[idx]=0;
dfs(idx+1);
choose[idx]=1;
dfs(idx+1);
}
int main()
{
int f=1;
cin>>n;
for(int i=0;i<n;i++){
cin>>a[i];
if(a[i]!=1)f=0;
}
if(f){
long long ans=1;
for(int i=0;i<n;i++){
ans*=2;
ans%=998244353;
}
ans-=(n*(n-1)/2+1+n);
if(ans<0)ans+=998244353;
cout<<ans;
return 0;
}
else{
dfs(0);
cout<<cnt;
}
return 0;
}
总结:考完感觉很简单(J1也有类似感觉结果干了84),看分数很高兴,文件夹放错(如果)直接得吃
代码还是求稳,毕竟没有大模拟
全部评论 2
T3是什么奇葩做法
昨天 来自 广东
0ddd
昨天 来自 浙江
0
















有帮助,赞一个