河南萌新联赛2024第(四)场:河南理工大学

文章目录

B. 小雷的神奇电脑

题意

给你n个数输出一个整数,这个整数是在这个数组任意两个数同或的最大值
同或:

• 如果两个输入位相同,则输出为1;

• 如果两个输入位不同,则输出为0。

思路

因为同或与异或是相反操作所以我们可以求异或最小值再用2^m^减异或最小值就是同或的最大值

代码

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
int a[200100];
map<int,int>ma;
signed main() {
	IOS
	int T = 1;
	//cin>>T;
	while (T--) 
	{
		int n,m,f=0,mi=1e18;
        cin>>n>>m;
        int t=pow(2,m)-1;
        for(int i=1;i<=n;i++)
            cin>>a[i];
        sort(a+1,a+1+n);
        for(int i=1;i<n;i++)
        {
            mi=min(mi,a[i]^a[i+1]);
        }
         cout<<t-mi<<endl;   
	}
	return 0;
}

C.岗位分配

题意

有众多志愿岗位需要被分配,给你志愿者人数和一个数组数组中的值是每个地方要分配的最小值,求可能的分配情况总数。

思路

先把至少要分配几人用总数减去,然后再把剩下的人分配到岗位上有几种分配方法,岗位可以分配0人,然后用排列组合的方法就能求出来,大家可以看下边图片就可以得到公式了

代码

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;
const int N=100010, P=998244353;
int f[N], g[N];

int qpow(int a, int b){
  int res = 1;
  while(b){
    if(b & 1) res=res*a%P;
    a = a*a%P;
    b >>= 1;
  }
  return res;
}
void init(){
  f[0] = g[0] = 1;
  for(int i=1; i<N; i++){
    f[i] = f[i-1]*i%P;
    g[i] = g[i-1]*qpow(i,P-2)%P;
  }  
}
int getC(int n, int m){
  return f[n]*g[m]%P*g[n-m]%P;
}
signed main()
{
	IOS
    init();
	int T=1,a;
	//cin>>T;
	while(T--)
	{
		int m,n,sum=0;
        cin>>n>>m;
        for(int i=1;i<=n;i++)
        {
            cin>>a;m-=a;
        }
        for(int i=0;i<=m;i++)
            sum=(sum+getC(i+n-1,n-1))%P;
        cout<<sum%P<<endl;
	}
	return 0;
}

D.简单的素数

题意

给一个数看是否是素数

思路

直接暴力求素数就行了

代码

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;

signed main() {
	IOS
	int T = 1;
	cin>>T;
	while (T--) 
	{
		int n,f=0;
		cin>>n;
		for(int i=2;i*i<=n;i++)
		{
			if(n%i==0)
			{
				f=1;
				break;
			}
		}
		if(f==1)
		cout<<"No"<<endl;
		else
		cout<<"Yes"<<endl;
	}
	return 0;
}

F.小雷的算式

题意

给以一个字符串,字符串只有数字和加号,输出从大到小写下自己的算式并算出答案

思路

直接模拟一遍就行了,遇见数子存起来,遇见加号求和,再把数字用数组存起来排序输出就行

代码

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;

bool cmp(int x, int y) {
	return x > y;
}

signed main() {
	IOS
	int T = 1;
	//cin>>T;
	while (T--) {
		vector<int>v;
		int sum = 0, t = 0;
		string s;
		cin >> s;
		for (int i = 0; i < s.size(); i++) {
			if (s[i] == '+') {
				sum += t;
				v.push_back(t);
				t = 0;
			} else {
				t = t * 10 + (s[i] - '0');
			}
		}
		v.push_back(t);
		sum += t;
		sort(v.begin(), v.end(), cmp);
		for (int i = 0; i < v.size(); i++) {
			if (i == v.size() - 1)
				cout << v[i] << endl;
			else
				cout << v[i] << "+";
		}
		cout << sum << endl;
	}
	return 0;
}

H.聪明且狡猾的恶魔

思路

这个题我觉得有问题就是在恶魔数量等于3时我觉得应该输出零,但答案并不是

代码

cpp 复制代码
#include <bits/stdc++.h>
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;

signed main() {
	IOS
	int T = 1;
	cin >> T;
	while (T--) {
		int n, x;
		cin >> x >> n;
		if (n == 1 || n == 2)
			cout << x << endl;
		else if ((n - 1) % 2 == 0)
			cout << max((int)0, x - n / 2) << endl;
		else
			cout << max((int)0, x - (n - 1) / 2) << endl;
	}
	return 0;
}
相关推荐
李元豪3 小时前
【智鹿空间】c++实现了一个简单的链表数据结构 MyList,其中包含基本的 Get 和 Modify 操作,
数据结构·c++·链表
UestcXiye3 小时前
《TCP/IP网络编程》学习笔记 | Chapter 9:套接字的多种可选项
c++·计算机网络·ip·tcp
一丝晨光4 小时前
编译器、IDE对C/C++新标准的支持
c语言·开发语言·c++·ide·msvc·visual studio·gcc
丶Darling.5 小时前
Day40 | 动态规划 :完全背包应用 组合总和IV(类比爬楼梯)
c++·算法·动态规划·记忆化搜索·回溯
奶味少女酱~5 小时前
常用的c++特性-->day02
开发语言·c++·算法
我是哈哈hh6 小时前
专题十八_动态规划_斐波那契数列模型_路径问题_算法专题详细总结
c++·算法·动态规划
_小柏_7 小时前
C/C++基础知识复习(15)
c语言·c++
_oP_i7 小时前
cmake could not find a package configuration file provided by “Microsoft.GSL“
c++
mingshili7 小时前
[python] 如何debug python脚本中C++后端的core dump
c++·python·debug
PaLu-LI8 小时前
ORB-SLAM2源码学习:Frame.cc: Frame::isInFrustum 判断地图点是否在当前帧的视野范围内
c++·人工智能·opencv·学习·算法·ubuntu·计算机视觉