CSP-J 2024题解
2025-07-30 21:00:31
发布于:浙江
遇到了一个神奇的事情
题解:
T1
[CSP-J 2024] 扑克牌
穷举法
#include<bits/stdc++.h>
using namespace std;
int d[20],c[20],h[20],s[20];
int main(){
// freopen("poker.in","r",stdin);
// freopen("poker.out","w",stdout);
int n;
cin>>n;
for(int i = 1;i<=n;i++){
char x,y;
cin>>x>>y;
if(x=='D'){
if(y>'1' && y<='9') d[y-'0']++;
if(y=='A') d[1]++;
if(y=='J') d[11]++;
if(y=='Q') d[12]++;
if(y=='K') d[13]++;
if(y=='T') d[10]++;
}
else if(x=='C'){
if(y>'1' && y<='9') c[y-'0']++;
if(y=='A') c[1]++;
if(y=='J') c[11]++;
if(y=='Q') c[12]++;
if(y=='K') c[13]++;
if(y=='T') c[10]++;
}
else if(x=='H'){
if(y>'1' && y<='9') h[y-'0']++;
if(y=='A') h[1]++;
if(y=='J') h[11]++;
if(y=='Q') h[12]++;
if(y=='K') h[13]++;
if(y=='T') h[10]++;
}
else if(x=='S'){
if(y>'1' && y<='9') s[y-'0']++;
if(y=='A') s[1]++;
if(y=='J') s[11]++;
if(y=='Q') s[12]++;
if(y=='K') s[13]++;
if(y=='T') s[10]++;
}
}
int cnt = 0;
for(int i = 1;i<=13;i++) if(d[i] == 0) cnt++;
for(int i = 1;i<=13;i++) if(s[i] == 0) cnt++;
for(int i = 1;i<=13;i++) if(h[i] == 0) cnt++;
for(int i = 1;i<=13;i++) if(c[i] == 0) cnt++;
cout<<cnt;
// fclose(stdin);
// fclose(stdout);
return 0;
}
T2
[CSP-J 2024] 地图探险
正常BFS
#include<bits/stdc++.h>
using namespace std;
int main(){
// freopen("explore.in","r",stdin);
// freopen("explore.out","w",stdout);
int t;
cin>>t;
char ma[1005][1005];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int vis[1005][1005];
int n,m,k,x,y,d;
int ans=0;
while(t--){
cin>>n>>m>>k>>x>>y>>d;
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
vis[i][j]=0;
}
}
for(int i=1;i<=n;i++){
for(int j=1;j<=m;j++){
cin>>ma[i][j];
}
}
ans=1;
vis[x][y]=1;
while(k--){
int nx=x+dx[d],ny=y+dy[d];
if(nx<1||nx>n||ny<1||ny>m||ma[nx][ny]=='x'){
d+=1;
d%=4;
continue;
}
if(vis[nx][ny]==0){
ans++;
vis[nx][ny]=1;
}
x=nx,y=ny;
}
cout<<ans<<endl;
}
// fclose(stdin);
// fclose(stdout);
return 0;
}
T3
[CSP-J 2024] 小木棍
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll cost [10]={6,2,5,5,4,5,6,3,7,6};
ll ans[15]={-1,-1,1,7,4,2,6,8,10,18,22,20,28,68,88};
void solve(){
int n;
cin>>n;
if(n<=14)cout<<ans[n]<<endl;
else{
if(n%7==0){
while(n){
n-=7;
cout<<8;
}
}else if(n%7==1){
cout<<10;
n-=8;
while(n){
n-=7;
cout<<8;
}
}
else if(n%7==2){
cout<<18;
n-=9;
while(n){
n-=7;
cout<<8;
}
}else if(n%7==3){
if(n==17)cout<<200;
else{
cout<<200;
n-=17;
while(n){
n-=7;
cout<<8;
}
}
}
else if(n%7==4){
cout<<20;
n-=11;
while(n){
n-=7;
cout<<8;
}
}
else if(n%7==5){
cout<<28;
n-=12;
while(n){
n-=7;
cout<<8;
}
}
else if(n%7==6){
cout<<68;
n-=13;
while(n){
n-=7;
cout<<8;
}
}
cout<<endl;
}
}
int main(){
//freopen("sticks.in","r",stdin);
//freopen("sticks.out","w",stdout);
int t;
cin>>t;
while(t--) solve();
// fclose(stdin);
// fclose(stdout);
return 0;
}
T4
太难了不会做🤗🤗😛
这里空空如也
有帮助,赞一个