ZJYC2023 浙江省大学生程序设计竞赛校内选拔赛部分题解 C J B L
ZJYC2023 浙江省大学生程序设计竞赛校内选拔赛部分题解 C J B L
难度分布:
签到:CJ
Easy:BL
Midium:IAGKFE
Hard:DH
题解:
签到:CJ
C - ^{-1}
参考代码:
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){int n,m;cin>>n>>m;for(int i=1;i<=n;i++){int x;cin>>x;if(x==m){cout<<i<<endl;return 0;} }return 0;
}
J - Climbing Takahashi
参考代码:
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){int n;cin>>n;int last=0;for(int i=1;i<=n;i++){int x;cin>>x;if(x>last){last=x;}else break;}cout<<last<<endl;return 0;
}
Easy:BL
B - Enlarged Checker Board
思路: 模拟
参考代码:
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){int n,a,b;cin>>n>>a>>b;int ok = 0;for(int i=1;i<=n;i++){for(int k=1;k<=a;k++){for(int j=1;j<=b*n;j++){int now=(j+b-1)/b;if((now+ok)%2)cout<<'.';else cout<<'#'; }cout<<endl;}ok++;}return 0;
}
L - Swappable
思路:由于要找到两两不相同的个数,O(n2)O(n^2)O(n2) 暴力会超时,所以使用 mapmapmap 计数,枚举 1−n1-n1−n 每次获得与当前位不相同的个数为前 i−1i-1i−1 个数减去前 i−1i-1i−1 个数中 a[i]a[i]a[i] 出现的次数,这个用mapmapmap 实现即可。
参考代码:
#include<bits/stdc++.h>
using namespace std;
#define int long long
signed main(){map<int,int>mp;int n;cin>>n;int ans=0;for(int i=1;i<=n;i++){int x;cin>>x;ans+=i-1;ans-=mp[x];mp[x]++;}cout<<ans<<endl;return 0;
}
根据赛时情况来看,Midium 和 Hard 题解就不写了,若有疑问可单独私聊。