当前位置: 首页 > news >正文

2025年河南工业大学2025新生周赛(6)

A:这是一道签到题吗?

 

用双层循环模拟即可,注意特殊输出的判断。

 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int P = 1e9+7;
const int N = 1e2+10;int a[N][N];int main() 
{int n,m;cin>>n>>m;int num = 0;for(int i = 1;i<=n;i++){for(int j = 1;j<=m-1;j++){num++;cout<<num<<' ';}num++;if(i%2==1) cout<<"HAUT"<<endl;else cout<<num<<endl;}return 0;
}

 

B:这是一道签到题

 

对于每一种牌,用数字映射到二维数组中,用来记录是否已经借过这张牌,若之前没有借过,则记录,并将牌总数减一。最后输出剩余牌的数量即可。

#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
const int N = 1e3 + 10;int n;
int cnt[N][N];int main()
{cin >> n;int ans = 52;for (int i = 1; i <= n; i++){string op;cin >> op;//cout << op << endl;int f = -1, s = -1;if (op[1] == 'A') {f = 1;} else if (op[1] == '2') {f = 2;} else if (op[1] == '3') {f = 3;} else if (op[1] == '4') {f = 4;} else if (op[1] == '5') {f = 5;} else if (op[1] == '6') {f = 6;} else if (op[1] == '7') {f = 7;} else if (op[1] == '8') {f = 8;} else if (op[1] == '9') {f = 9;} else if (op[1] == 'T') {f = 10;} else if (op[1] == 'J') {f = 11;} else if (op[1] == 'Q') {f = 12;} else if (op[1] == 'K') {f = 13;}if (op[0] == 'D') {s = 1;} else if (op[0] == 'C') {s = 2;} else if (op[0] == 'H') {s = 3;} else if (op[0] == 'S') {s = 4;} if (cnt[f][s] == 0) ans--;cnt[f][s]++;}cout << ans << endl;return 0;
}

 

 

C:这真是一道签到题吗?

题目要求变为回文数组,那么对于数组两边对称的数来说,左边的数加一相当于右边的数减一,左边的数减一相当于右边的数加一。因此可以先对数组两边初始化,都减去较小的数,使得数组的元素全部变为非负整数。最后用贪心的方法计算答案。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll N = 2e5+10;
int n;
int a[N];
int main()
{cin>>n;for(int i = 1;i<=n;i++) cin>>a[i];for(int i = 1,j = n;i<=j;i++,j--){int t = min(a[i],a[j]);a[i]-=t;if(i!=j) a[j]-=t;}ll res = 0;for(int i = 1;i<=n;i++){int t = a[i];res+=t;a[i+1] -= min(t,a[i+1]);}cout<<res;return 0;
}

 

 

D:Hello,World!

逐个检查字符即可。

#include <stdio.h>
#include <string.h>int main() {char input[1005];const char *str = "Hello,World!";int m= 0;int t= strlen(str);scanf("%s", input);for (int i = 0; input[i] != '\0'; i++){if (m< t&& input[i] == str[m]) {m++;}}printf("%s\n", (m== t) ? "Yes" : "No");return 0;
}

 

 

E:数组求和

遍历求和即可。

#include <stdio.h>
#include <string.h>int main() 
{char s[2];double t, ans = 0.0;scanf("%s", s);for (int i = 0; i < 12; i++) {for (int j = 0; j < 12; j++) {scanf("%lf", &t);if (i > j) {ans += t;}}}if (strcmp(s, "S") == 0) {printf("%.1f\n", ans);} else {printf("%.1f\n", ans / 66);}return 0;
}

 

 

F:加and乘

根据题目模拟即可。

#include <iostream>
#include <vector>
using namespace std;int main() {int N, P;cin >> N >> P;vector<long long> a(N + 1);for (int i = 1; i <= N; ++i) {cin >> a[i];a[i] %= P;}int M;cin >> M;while (M--) {int op;cin >> op;if (op == 1) {int t, g, c;cin >> t >> g >> c;c %= P; for (int i = t; i <= g; ++i) {a[i] = (a[i] * c) % P;}} else if (op == 2) {int t, g, c;cin >> t >> g >> c;c %= P;for (int i = t; i <= g; ++i) {a[i] = (a[i] + c) % P;if (a[i] < 0) a[i] += P;}} else if (op == 3) {int t, g;cin >> t >> g;long long sum = 0;for (int i = t; i <= g; ++i) {sum = (sum + a[i]) % P;}cout << sum % P << endl;}}return 0;
}

 

 

 

G:多项式相加(多实例)

输入多项式求和,高次到 0 次规范输出结果。

#include <stdio.h>
#include <stdlib.h>int main()
{int t,i,j,x,y;scanf("%d",&t);for(i=1;i<=t;i++){int a[110]={0};int b[110]={0};int c[110]={0};while (scanf("%d %d",&x,&y),x!=-1){a[x] += y;}while (scanf("%d %d",&x,&y),x!=-1){b[x] += y;}for (j=0;j<=100;j++){c[j]=b[j]+a[j];}int z = 0;for (j=100;j>1;j--){if (z==0 && c[j]!=0){if(c[j]==1){printf("x%d",j);}else if(c[j]==-1){printf("-x%d",j);}else{printf("%dx%d",c[j],j);}z++;}else if(c[j]!=0){if(c[j]==1){printf("+x%d",j);}else if(c[j]==-1){printf("-x%d",j);}else{printf("%+dx%d",c[j],j);}}}if(c[1]!=0){if(c[1]==1){if(z == 0) printf("x");else printf("+x");}else if(c[1]==-1){printf("-x");}else{if(z == 0) printf("%dx",c[1]);else printf("%+dx",c[1]);}z++;}if (c[0]!=0){if(z == 0) printf("%d",c[0]);else printf("%+d",c[0]);z++;}if(z == 0){printf("0");}printf("\n");}return 0;
}

 

 

H:数组切割

根据题目可以分析出,出现次数为奇数的不同元素一定有偶数个。根据元素的特点分类讨论:对于出现次数为偶数且/2为奇数的,直接分开放到两个序列中,之后不再考虑;对于出现次数为偶数且/2为偶数的,交替放到两个序列中,并且放入两个序列的个数之差为2,以保证答案最大化;对于出现次数为奇数的,分为一奇一偶放入两个序列。

注意特例的判断。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int P = 1e9+7;
const int N = 4e5+10;int a[N];void solve()
{int n ;cin>>n;unordered_map<int,int> mp;vector<int> v1;//偶数且/2为偶数vector<int> v2;//偶数且/2为奇数vector<int> v3;//奇数  一定有偶数个for(int i = 1;i<=2*n;i++) {cin>>a[i];mp[a[i]]++;//存储元素出现的次数
    }int cnt1 = 0,cnt2 = 0;//cnt1,cnt2分别表示序列p,q的元素数量int ans = 0;for(auto t:mp){int w = t.first,v = t.second;if(v%2==0&&(v/2)%2==0) v1.push_back(w);if(v%2==0&&(v/2)%2==1) v2.push_back(w);if(v%2==1) v3.push_back(w);}ans += v2.size()*2;if(v3.size()!=0){for(int i = 0;i<v1.size();i++){int t = mp[v1[i]];if(cnt1>cnt2) cnt1 += (t/2)-1,cnt2+=(t/2)+1;else cnt1 += (t/2)+1,cnt2+=(t/2)-1;ans +=2;}ans += v3.size();}else{if(v1.size()%2==1) ans += (v1.size()-1)*2;else ans += v1.size()*2;}cout<<ans<<endl;}int main() 
{int t;//cin>>t;t = 1;while(t--){solve();}return 0;
}

 

http://www.jsqmd.com/news/58777/

相关文章:

  • 容斥原理练手:cf1750D
  • 12/2
  • 12.13任务
  • 数学2
  • cgi,fastcgi,wsgi,uwsgi,uWSGI分别是什么
  • 别再只懂二分类!逻辑回归+Softmax多分类实战,保姆级教程奉上 - 详解
  • Day7 Scrum冲刺博客
  • 07.自定义子容器
  • cjw_蓝桥杯python基础学习系列一—_语言基础
  • 从硬盘I/O到网络传输:Kafka与RocketMQ读写模型及零拷贝技术深度对比
  • 测试飞书一面
  • 华三无线集中转发模式配置
  • 技术总监亲述:工作授权不是甩锅,掌握这8步让团队战斗力提升300%
  • AI人工智能:分享技术干货
  • 在AI快速落地的时代,洞察真实需求成为关键——某开源个人发布平台用户需求分析
  • 深入解析:逻辑门(Logic Gate)是什么?
  • 关于Proteus在编译时提示Failed to set firmware property.的问题
  • Linux中级の备份服务Rsync
  • 2025冷却塔厂家实力排行榜:无锡科巨以高效节能技术引领,六家高潜力本土品牌深度解析
  • 2025.12.2
  • EndNote.2025 中文版安装激活教程
  • CF1660E-Matrix and Shifts
  • c++实验四
  • 牛客网周赛120
  • 在数字时代寻找内心的宁静
  • kubernetes集群中怎么强制删除处于Terminating的namespace资源
  • 检查路径深度
  • chrome driver下载地址
  • 成群结队 - 冲刺总结
  • 从 Pandas 转向 Polars:新手常见的10 个问题与优化建议