本文主要是介绍2023郑州大学招新赛暨选拔赛补题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
U287342 A.NANA与字符串 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
U287344 B.NANA学跳舞 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
U287345 C.NANA去上课 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+6;
signed main(){int n;cin>>n;char ch='B';int ds=0;//记得一定要初始化int sum=0;for(int i=1;i<=n;i++){char tempp='A';//记得一定要初始化int tempd=0;if(i!=1){tempp=ch;//记录前一个的输入tempd=ds;}cin>>ch;cin>>ds;if(tempp==ch)sum+=abs(tempd-ds);else sum+=abs(tempd+ds);}sum+=ds;cout<<sum;return 0;
}
U287346 D.NANA在夜市 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include <bits/stdc++.h>
using namespace std;
#define int long longchar mp[1010][1010];
bool f[1010][1010];
int dx[4] = {0, 0, 1, -1};
int dy[4] = {1, -1, 0, 0};//右 左 下 上
//向左旋转90度
int n; int m;
void dfs(int x, int y) {f[x][y] = true;//标记一个地方是否被访问过for (int i = 0; i < 4; i++) {int ax = x + dx[i];int ay = y + dy[i];if (ax >= 1 && ax <= n && ay >= 1 && ay <= m && !f[ax][ay] &&((i == 0 && mp[ax][ay] == 'L') || (i == 1 && mp[ax][ay] == 'R') ||(i == 2 && mp[ax][ay] == 'U') || (i == 3 && mp[ax][ay] == 'D'))) {dfs(ax, ay);//好好理解一下}}
}void solve() {// int n, m;cin >> n >> m;for (int i = 1; i <= n; i++) {for(int j = 1;j <= m;j++)cin >> mp[i][j];}int ans = 0;dfs(n,m);//从终点出发for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {if (f[i][j]) {//访问到了ans++;//数量++}}}cout << ans;
}signed main() {ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int T=1;//cin >> T;while (T--)solve();return 0;
}
U287347 E.NANA与最后的旅程 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
U287349 F.NANA的排名 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include <bits/stdc++.h>
using namespace std;
const int N=1e5+6;
int l[N], r[N], v[N], cnt[610];
//l表示最低分 r表示最高分 v表示五科总分
void solve() {int n;cin >> n;for (int i = 1; i <= n; i++) {cin >> l[i] >> r[i];v[i] = 0;for (int j = 0; j < 5; j++) {int x;cin >> x;v[i] += x;}cnt[v[i] + l[i]]++;//低分的情况下各个分数的人数}for (int i = 600; i >= 1; i--) {cnt[i] += cnt[i + 1];}//cnt[i]表示了分数大于等于i的人数个数for (int i = 1; i <= n; i++) {cout << cnt[v[i] + r[i]+1] + 1 << '\n';}//分数大于等于v[i]+r[i]+1的人数有cnt[v[i]+r[i]+1]个
} signed main() {int T;T = 1; //cin >> T;while (T--)solve();return 0;
}
U287350 G.NANA看天鹅舞会 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
//贪心
#include <iostream>
using namespace std;
#define int long long
signed main()
{int n, m, a, b, c;cin >> n >> m >> a >> b >> c;if(n > m) swap(n, m);int res = n * a;m -= n;res += (m / 2) * b;if(m & 1) res -= c;cout << res << '\n';
}
//无论如何代价都是两只 所以那种思路是错的
U287351 H.NANA去上课 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
U287352 I.NANA做胡辣汤 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+6;
int a[N];
int b[N];
signed main(){int sum=0;int n,k;cin>>n>>k;for(int i=1;i<=n;i++)cin>>a[i];//代表每个食材的价值for(int i=1;i<=n;i++)cin>>b[i];//代表每个食材是否被处理好for(int i=1;i<=n;i++){if(b[i])sum+=a[i];//选上了就加上}// int mx=-0x3f3f;// for(int i=1;i+k-1<=n;i++){// if(b[i])continue;// int temp=0;// for(int j=i;j<=i+k-1;j++){// if(!b[j])temp+=a[j];// }// mx=max(temp,mx);// }// cout<<mx+sum;for(int i=1;i<=k;i++){//滑动窗口的开始,这个窗口内if(!b[i])sum+=a[i];//没有被选过 就选上}int ans=sum;for(int i=k+1;i<=n;i++){//枚举右端点 右端点是i 长度是k i-x+1=k 左端点是i-k+1if(!b[i-k])sum-=a[i-k];//i-k是左端点的左边if(!b[i])sum+=a[i];//右端点ans=max(sum,ans);//和最开始的情况比较}cout<<ans<<'\n';return 0;
}
U287353 J.NANA与她的朋友们 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include <bits/stdc++.h>
using namespace std;
#define int long long
map<int,int> mp;
signed main(){int n, k, x; scanf("%lld %lld",&n, &k);vector<int> vec;for(int i = 0; i < n; i ++){scanf("%lld", &x);if(!mp.count(x)) vec.push_back(x);//每一出现过 就放进去mp[x] ++;//出现的次数++}sort(vec.begin(), vec.end());int hh = 0, tt = vec.size() - 1;//左右指针while(hh < tt){int l = mp[vec[hh]];//最小的数的出现次数int r = mp[vec[tt]];//最大的数的出现次数if(l < r){//最小的数的出现次数<最大的数的出现次数int num = vec[hh + 1] - vec[hh];//差值int cnt = l;//需要操作的个数if(k >= cnt * num)//可操作的次数>=需要操作的个数*差值{k -= cnt * num;//减去操作的次数mp[vec[hh + 1]] += mp[vec[hh]];//加到下一个数上去hh ++; //左指针++} else//可操作的个数<需要操作的个数*差值{int t = k / cnt;//计算最多能减少多少差值// k -= t * cnt;//k>=差值*需要操作的次数int res = vec[tt] - vec[hh] - t;cout << res << '\n';return 0;}}else{//最小的数的出现次数>=最大的出现次数int num = vec[tt] - vec[tt - 1];//找一下差值int cnt = r;//个数if(k >= cnt * num){k -= cnt * num;mp[vec[tt - 1]] += mp[vec[tt]];tt --;}else{//就算是0也可以 是0的化 k就-0int t = k / cnt;// k -= t * cnt;int res = vec[tt] - t - vec[hh];cout << res << '\n';return 0;//直接return}}// if(vec[tt]-vec[hh]==0){cout<<0<<'\n';break;}}cout<<0<<'\n';
}
U287354 K.NANA在郑州 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
//打表
#include <bits/stdc++.h>
using namespace std;
int cal(char x){if(x=='a'||x=='d'||x=='g'||x=='j'||x=='m'||x=='p'||x=='t'||x=='w')return 1;if(x=='b'||x=='e'||x=='h'||x=='k'||x=='n'||x=='q'||x=='u'||x=='x')return 2;if(x=='c'||x=='f'||x=='i'||x=='l'||x=='o'||x=='r'||x=='v'||x=='y')return 3;if(x=='s'||x=='z')return 4;
}
int main(){int n;cin>>n;int sum=0;for(int i=1;i<=n;i++){string s;cin>>s;for(int j=0;j<s.size();j++)sum+=cal(s[j]);}cout<<sum+n-1;return 0;
}
U287355 L.NANA与梦中的洛阳 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
这篇关于2023郑州大学招新赛暨选拔赛补题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!