2023贵工程团体程序设计赛

news2024/12/28 23:26:07
A这是一道数学题?

道路有两边。 

#include<bits/stdc++.h>
using namespace std;
int main(){
    int n,m;
    cin>>n>>m;
    cout<<(n/m+1)*2;
	return 0;
}

 

BCPA的团体赛

直接输出 。

#include <bits/stdc++.h>
using i64 = long long;
#define IOS std::ios::sync_with_stdio(false), std::cin.tie(nullptr)
int main()
{
IOS;
std::cout << "Welcome to the CPA team competition. I hope you all have AK.\n";
return 0;
}

 

C这是一道输出题。

转译。 

#include<bits/stdc++.h>
using namespace std;
int main(){
	 cout<<"CPA\\n最棒!";
	return 0;
}

 

DCPA会长有多少个字符串

map或者set。 

#include <bits/stdc++.h>
using i64 = long long;
#define IOS std::ios::sync_with_stdio(false), std::cin.tie(nullptr)
int main()
{
IOS;
int n;
std::cin >> n;
std::set <std::string> se;
while (n --){
std::string s;
std::cin >> s;
se.insert(s);
}
std::cout << se.size() << "\n";
return 0;
}

 

E我爱打乒乓球

数学。 

//代码1:模拟
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,x=0,y=0;
	cin>>n;
	if(n<=0)cout<<"0 0";//该测试点为坑点
    else {
	while(n!=1){
		x+=n/2;
	    if(n%2)n=n/2+1;
	    else n=n/2;
		y++;
	}cout<<y<<' '<<x;}
	return 0;
}

//代码2:数学思维
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,x=0,y=0;
	cin>>n;
	if(n<=0)cout<<"0 0";
	else{
	for(int i=0;i<=n/2;i++)
	if(pow(2,i)>=n){
		y=i;break;
	}cout<<y<<' '<<n-1;}
	return 0;
}

F我爱找规律

隔项加3 

//代码1:模拟
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,a[1005]={0},i;
    cin>>n;
	a[1]=1;a[2]=2;
	for(i=3;i<=n;i++)a[i]=a[i-2]+3;
	cout<<a[n];
	return 0;
}

//代码2:数学思维。
#include<bits/stdc++.h>
using namespace std;
int main(){
	int n,x=0;
    cin>>n;
	if(n%2==1)x=n*3/2;
	else x=n*3/2-1; 
	cout<<x;
	return 0;
}

Gcpa我来了!

 map的应用、string的find函数以及大小写字符转换。

#include<bits/stdc++.h>
using namespace std;
int main(){
	 string s;
	 map<char,int>a;
	 getline(cin,s);
	 for(int i=0;i<s.size();i++){
	 	a[s[i]]++;
	 }
	 for(int i=0;i<=127;i++){
	 	if(a[char(i)]!=0)cout<<char(i)<<':'<<a[char(i)]<<endl;
	 }
	 for(int i=0;i<s.size();i++){
        if(s[i]>='A'&&s[i]<='Z'){
            s[i]=tolower(s[i]);
            //s[i]+=32;
            //s[i]=s[i]-'A'+'a';
        }
    }
	 if(s.find("cpa")!=-1)cout<<"^_^";
	 else cout<<"T_T";
	return 0;
}

H520还是250?

 循环

#include<bits/stdc++.h>
using namespace std;
int main(){
        string s;int i,j,k,x=0,y=0;
        cin>>s;
        for(i=0;i<s.size();i++){
        	for(j=i+1;j<s.size();j++){
        		for(k=j+1;k<s.size();k++){
        			if(s[i]=='5'&&s[j]=='2'&&s[k]=='0')x++;
        			if(s[i]=='2'&&s[j]=='5'&&s[k]=='0')y++;
				}
			}
		}
		cout<<x<<" "<<y<<endl;
		if(x>y)cout<<"Yes";
		else cout<<"No";
	return 0;
}

IKK的二进制串

将字符串LR分别转成对应的十进制,再求L(10) ^ R(10) 

#include <iostream>
using namespace std;
typedef long long LL;
LL qmi(LL a, LL b)
{
LL res = 1;
while (b)
{
if (b & 1) res *= a;
a *= a;
b >>= 1;
}
return res;
}
LL get(string str)
{
LL w = 1, res = 0;
for (int i = str.size() - 1; ~i; i -- ,w *= 2) if (str[i] == '1') res += w;
return res;
}
int main()
{
string l, r;
cin >> l >> r;
LL a = get(l), b = get(r);
LL c = qmi(a, b);
cout << a << ' ' << b << ' ' << c << endl;
return 0;
}

 

J灵活走位

 题目其实已经很明确的表示了这就是一个N皇后问题,我们只需要DFS一下就可以解决。从问题分析,每一次走了之后的点需要记录的信息有行,列,左斜线,右斜线。因为我们是一行一行枚举的,所以可以直接不用记录行信息,接着我们可以找到一个规律,一条左斜线上的点的坐标(x,y)满足x+y为一个固定的值,那么我们可以把这个值作为唯一确定左斜线的标识。同理可得右斜线满足x+(n-y)为一个固定值,所以我们可以把这个值作为确定右斜线的唯一标识。那么我们每次DFS的时候就把列,两个斜线标记为用过并且继续往下找直到找到第N+1层就表示我们找到了一组解,之后再往后退并且消除标记就可以了。

#include<bits/stdc++.h>
using namespace std;
int n,a[20],sum,r,t;
bool b[20],c[20],d[20];//b行,c,d斜线
void dfs(int i)
{
    int j;
    if(i>n) sum++;
    for(j=1;j<=n;j++)
    {
    	if(!b[j]&&!c[i+j]&&!d[i-j+n])
      	{
         	a[i]=j;
         	b[j]=1;
         	c[i+j]=1;
         	d[i-j+n]=1;
			dfs(i+1);
         	b[j]=0;
			c[i+j]=0;
         	d[i-j+n]=0; 
      	}
	}	
}
int main()
{
	cin>>n;
	dfs(1);
	cout<<sum<<endl;
	return 0;
}

 

K出什么题目呢?

结构体排序加循环输出图形。

#include<bits/stdc++.h>
using namespace std;
struct xx{
	int x, y;
}s[20];
bool cmp(xx a,xx b){
	if(a.y==b.y)return a.x<b.x;
	return a.y<b.y;
} 
int main(){
	int n,i,j,k=0,b;
	cin>>n;
	b=sqrt(n);
	for(i=0;i<n;i++)cin>>s[i].x>>s[i].y;
	sort(s,s+n,cmp);
	for(i=1;i<=b;i++){
		for(j=1;j<=3*(b-i);j++)cout<<' ';
		for(j=1;j<=2*i-1;j++){
			if(j!=1)cout<<' ';
			 printf("%02d",s[k++].x);
		}
		cout<<endl;
	}
	return 0;
} 

 

L相同教室的朋友

 对于这个题目我们很轻松就能看出来这是一道并查集的题,所以我们直接套用并查集模板,只是在处理的时候先判断x等不等于y,如果等于就直接输出?,此处应该小心中英文下的问号不一样。如果x!=y就调用并查集的find函数来看是否在同一个联通集里面,如果在就输出Yes否则就输出No。

#include<bits/stdc++.h>
using namespace std;
int n,m,a[5001],p;

int find(int x)
{
	if(x==a[x]) return x;
	else return a[x]=find(a[x]);
}

int main()
{
	cin>>n>>m>>p;
	for(int i=1;i<=n;i++)
		a[i]=i;
	int x,y;
	for(int i=1;i<=m;i++)
	{
		cin>>x>>y;
		a[find(x)]=find(y);
	}
	for(int i=1;i<=p;i++)
	{
		cin>>x>>y;
		if(x==y){cout<<"?\n";continue;}
		int xx=find(x),yy=find(y);
		if(xx==yy) cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	}
	return 0;	
}
MCPA会长查询

 前缀和+数学推理

#include <bits/stdc++.h>
using i64 = long long;
#define IOS std::ios::sync_with_stdio(false), std::cin.tie(nullptr)
int main()
{
IOS;
i64 n, q;
std::cin >> n >> q;
std::vector <i64> a(n + 1), s(n + 1);
int sum = 0;
for (int i = 1; i <= n; i ++){
std::cin >> a[i];
sum += a[i];
}
for (i64 i = 1; i <= n; i ++){
s[i] = s[i - 1] + a[i];
}
while (q --){
i64 l, r, x;
std::cin >> l >> r >> x;
i64 ans = sum - (s[r] - s[l - 1]) + (r - l + 1) * x;
if (ans & 1){
std::cout << "YES\n";
}else {
std::cout << "NO\n";
}
}
return 0;
}
NCPA会长买图书

01分数规划+二分答案  

#include<bits/stdc++.h>
using i64 = long long;
#define IOS std::ios::sync_with_stdio(false), std::cin.tie(nullptr)
const int N = 1e4 + 10;
int n, k;
struct em{
int c, v;
i64 sum;
}f[N];
bool cmp(em a, em b){
return a.sum > b.sum;
}
i64 check(i64 x){
i64 res = 0, vs = 0, cs = 0;
for (int i = 1; i <= n; i ++){
f[i].sum = f[i].v - x * f[i].c;
}
std::sort(f + 1, f + 1 + n, cmp);
for (int i = 1; i <= k; i ++){
res += f[i].sum;
if (res < 0){
return -1;
}
vs += f[i].v;
cs += f[i].c;
}
return vs / cs;
}
void solve(){
std::cin >> n >> k;
for (int i = 1; i <= n; i ++){
std::cin >> f[i].c >> f[i].v;
}
int l = 0, r = 1e8 + 10;
i64 ans = 0;
while (r > l){
int mid = l + r >> 1;
i64 res = check(mid);
if (res == -1){
r = mid;
}else {
ans = res;
l = mid + 1;
}
}
std::cout << ans << "\n";
}
int main()
{
 IOS;
int t = 1;
std::cin >> t;
while (t --){
solve();
}
 return 0;
}

 

O天才界灵师小K
使用 二分图矩阵建图方式 建图
对于每个点
与它周围 4 个点进行 连边 边权 为 无穷大
a d
S b e T
c f
S T 为源点 汇点 S 连向与连向 T 的边为 边权
答案 1 = 删除点的和
答案 2 = 总价值 - 删除点的和
要使 取出总和最大,就是使删除点的和最小
即删除一些边 使 集合 分为 2 部分 使他们不连通
就是最大独立集:总价值 - 最小覆盖集
本题考查的的为最小割模型中的最大独立集
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 10010, M = N << 1, INF = 1e9;
int n, m, S, T;
int h[N], e[M], ne[M], f[M], idx;
int d[N], q[N], cur[N];
int dx[] = {-1, 0, 1, 0}, dy[] = {0, 1, 0, -1};
int get(int i, int j)
{
return (i - 1) * m + j;
}
void add(int a, int b, int c)
{
e[idx] = b, f[idx] = c, ne[idx] = h[a], h[a] = idx ++;
e[idx] = a, f[idx] = 0, ne[idx] = h[b], h[b] = idx ++;
}
bool bfs()
{
int hh = 0, tt = 0;
memset(d, -1, sizeof d);
q[tt ++ ] = S, cur[S] = h[S], d[S] = 0;
while (hh < tt)
{
int t = q[hh ++ ];
for (int i = h[t]; ~i; i = ne[i])
{
int ver = e[i];
if (d[ver] == -1 && f[i])
{
d[ver] = d[t] + 1;
cur[ver] = h[ver];
if (ver == T) return true;
q[tt ++ ] = ver;
}
}
}
return false;
}
int find(int u, int limit)
{
if (u == T) return limit;
int flow = 0;
for (int i = cur[u]; ~i && flow < limit; i = ne[i])
{
cur[u] = i;
int ver = e[i];
if (d[ver] == d[u] + 1 && f[i])
{
int t = find(ver, min(f[i], limit - flow));
if (!t) d[ver] = -1;
f[i] -= t, f[i ^ 1] += t, flow += t;
}
}
return flow;
}
int dinic()
{
int r = 0, flow;
while (bfs()) while (flow = find(S, INF)) r += flow;
return r;
}
int main()
{
scanf ("%d%d", &n, &m);
S = 0, T = n * m + 1;
memset(h, -1, sizeof h);
int tot = 0;
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= m; j ++ )
{
int w;
scanf ("%d", &w);
if (i + j & 1)
{
add(S, get(i, j), w);
for (int k = 0; k < 4; k ++ )
{
int a = dx[k] + i, b = dy[k] + j;
if (a < 1 || a > n || b < 1 || b > m) continue;
add(get(i, j), get(a, b), INF);
}
}
else add(get(i, j), T, w);
tot += w;
}
int res = dinic();
printf ("%d %d\n", res, tot - res);
return 0;
}
P近在眼前

 

 

 

#include<bits/stdc++.h>
using namespace std;
int n,m;

long long mi(long long a,int b)
{
	long long cnt=1;
	while(b)
	{
		if(b&1) cnt*=a;
		a*=a;
		b>>=1;		
	}
	return cnt;
}

int main()
{
	cin>>n>>m;
	if(m==1)
	{
		cout<<1<<endl;
		return 0;
	}
	int t=m;
    long long ans=1;
    for(int i=2;i*i<=m;i++)
    {
        if(m%i==0)
        {
            ans*=mi(i,n)-1;
			t/=i;
            while(m%i==0)  m/=i;
        }
    }
    if(m!=1)
	{
		ans*=(mi(m,n)-1);
		t/=m;
	}
    ans=ans*mi(t,n);
    cout<<ans<<endl;
	return 0;
}

 

Q九层宝塔

 推出状态转移方程:

 

在本题中有限制最少要两两组合, 所以 V 只需要枚举到 n - 1
#include <iostream>
#include <cstring>
using namespace std;
const int N = 12010, mod = 1e9 + 7;
int n;
int v[N];
int f[N];
int main()
{
cin >> n;
for (int i = 1; i < n; i ++ ) v[i] = i;
f[0] = 1;
for (int i = 1; i < n; i ++ )
for (int j = v[i]; j <= n; j ++ )
f[j] = (f[j] + f[j - v[i]]) % mod;
cout << f[n] << endl;
return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/609092.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Docker基本管理与网络以及数据管理

目录 一、Docker简介1、Docker简述2、什么是容器3、容器的优点4、Docker的logo及设计宗旨5、Docker与虚拟机的区别6、Docker的2个重要技术7、Docker三大核心概念 二、Docker的安装及管理1、安装Docker2、配置Docker加速器3、Docker镜像相关基础命令①搜索镜像②拉取镜像③查看镜…

Linux 配置Tomcat环境(二)

Linux 配置Tomcat环境 二、配置Tomcat1、创建一个Tomcat文件夹用于存放Tomcat压缩包2、把Tomcat压缩包传入服务器3、解压并启动Tomcat4、CentOS开放8080端口 二、配置Tomcat 1、创建一个Tomcat文件夹用于存放Tomcat压缩包 输入指令 cd /usr/local 进入到 usr/local 输入指令 …

[LsSDK][tool] ls_syscfg_gui2.0

文章目录 一、简介1.工具的目的2. 更新点下个更新 三、配置文件 一、简介 1.工具的目的 ① 可视化选择IO口功能。 ② 自由配置IO支持的功能。 ③ 适用各类MCU&#xff0c;方便移植和开发。 ④ 功能配置和裁剪&#xff08;选项-syscfg-待完成–需要适配keil语法有些麻烦&#…

Node.js: express + MySQL + Vue实现图片上传

前段时间用Node.js: express MySQL Vue element组件做了一个小项目&#xff0c;记录一下图片上传的实现。 将图片存入数据库有两种方法&#xff1a; 1&#xff0c;将图片以二进制流的方式存入数据库&#xff08;数据库搬家容易&#xff0c;比较安全&#xff0c;但数据库空间…

微服务实战项目-学成在线-媒资管理模块(有项目实战实现)

学成在线-媒资管理模块 1 模块需求分析 1.1 模块介绍 媒资管理系统是每个在线教育平台所必须具备的&#xff0c;查阅百度百科对它的定义如下&#xff1a; 媒体资源管理(Media Asset Management&#xff0c;MAM)系统是建立在多媒体、网络、数据库和数字存储等先进技术基础上…

SpringCloud服务接口调用

SpringCloud服务接口调用 OpenFeign 是什么? 能干啥? 两者区别 OpenFeign使用 接口注解 微服务调用接口FeignClient Feign在消费端使用 新建cloud-consumer-feign-order80 导入eureka和openfeign依赖: <dependency><groupId>org.springframework.cloud&l…

Nginx 中的Rewrite讲解

这里写目录标题 常用的Nginx正则表达式locationelocation 分类location 常用的匹配规则location 优先级 总结RewriteRewrite全局变量是什么?rewrite 执行顺序如下&#xff1a;语法格式&#xff1a;rewrite \<regex> \<replacement> [flag];flag标记说明基于域名的…

STL入门 + 刷题(上)

&#x1f442; 【纯音&吉他】洋溢着青春气息的轻快旋律 - 歌单 - 网易云音乐 听着吉他纯音&#xff0c;看书做题&#xff0c;真是一种享受~ 补充&#xff1a;点击链接后&#xff0c;左上角有个提交按钮&#xff0c;在《算法训练营》的网站可以直接提交&#xff0c;而不需要…

BEVFormer组件分析

BEVFormerEncoder中的get_reference_points staticmethoddef get_reference_points(H, W, Z8, num_points_in_pillar4, dim3d, bs1, devicecuda, dtypetorch.float):"""Get the reference points used in SCA and TSA.Args:H, W: spatial shape of bev.Z: hight…

让你的代码动起来:Python进度条神器tqdm详解及应用实例

各位Python高手&#xff0c;今天我要给大家介绍一个好用的库&#xff0c;它就是&#xff1a;tqdm tqdm在阿拉伯语中的意思是 "进展"&#xff0c;所以这个库也被称为 "快速进展条"。不得不说&#xff0c;这个名字真的很有创意&#xff01; 让我们想象一下&a…

蒙特卡洛积分——采样方法

蒙特卡洛积分 目的&#xff1a; 通过计算机进行采样近似求解复杂的积分理论基础&#xff1a; 大数定律&#xff0c;当 n n n足够大时&#xff0c; X X X的均值将收敛于它的期望&#xff08;不严谨表述&#xff09;一般形式&#xff1a; θ ∫ a b f ( x ) d x ∫ a b f ( x…

瑞云科技CTO赵志杰出席广州广告数字创意峰会并发表演讲

3月23日下午&#xff0c;广州广告数字创意峰会暨穗广协企业家大讲堂年度巡礼活动在广州图书馆圆满举行。本次峰会由广州市人民政府统筹&#xff0c;中共广州市委宣传部、广州市文化广电旅游局、中共广州市天河区委、广州市天河区人民政府主办。作为第六届“文创产业大会天河峰会…

go调试工具-delve

go调试工具-delve 简介 go debug工具&#xff0c;专门为go开发的调试工具&#xff0c;并且采用go语言开发&#xff0c;支持多平台。 官网&#xff1a;https://github.com/go-delve/delve 官网有详细的手册&#xff0c;学习起来很方便 快速开始 安装 我本地的go版本 官方…

python的基本知识与面试问题的汇总1

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下python的基本知识与面试问题的汇总&#xff0c;看完之后会对python巩固有很大的帮助哦。 Python中的多线程&#xff1a; 多线程是指在一个程序中同时运行多个线程以提高程序的执行效率。Python中的threading模块…

MongoDB基础实战:CRUD

1 缘起 后台项目使用的数据库是MongoDB&#xff0c; 在一次测试联调过程中&#xff0c;测试同事在测试数据的准确性时&#xff0c; 问我这些数据该怎么查&#xff0c;如何计算验证数据的结果&#xff0c; 我当时&#xff0c;对MongoDB数据操作不熟悉&#xff0c;请教了其他有经…

2. 两数相加解题思路

文章目录 题目解题思路 题目 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&am…

C++11之异常处理

文章目录 一、异常处理的概念二、异常编写的步骤&#xff08;来自图论教育&#xff09;三、栈展开和异常捕获四、C11中noexcep关键字 一、异常处理的概念 异常是程序可能检测到的&#xff0c;运行时不正常的情况&#xff0c;如存储空间耗尽&#xff0c;数组越界&#xff0c;被…

PG提示could not determine data type of parameter $4

目录 场景&#xff1a; 现象&#xff1a; 版本&#xff1a; 分析&#xff1a; 解决方式&#xff1a; 场景&#xff1a; 今天遇到现场环境连接Postgre数据库&#xff0c;日志提示could not determine data type of parameter $4&#xff0c;通过日志复制出完整sql&#xff…

SpringCloudAlibaba:分布式事务之Seata学习

目录 一、分布式事务基础 &#xff08;一&#xff09;事务 &#xff08;二&#xff09;本地事务 &#xff08;三&#xff09;分布式事务 二、Seata概述 1.Seata 的架构包含: 2.其工作原理为: 3.如果需要在 Spring Boot 应用中使用 Seata 进行分布式事务管理,主要步骤为…

Android Jetpack Compose实现轮播图效果

Android Jetpack Compose实现轮播图效果 在最近思索如何使用Compose方式改进我的开源TMDB电影列表应用程序的主屏幕时&#xff0c;一个激动人心的概念浮现在我的脑海中——为什么不整合一个吸引人的轮播图来展示即将上映的电影呢&#xff1f;在本文中&#xff0c;我将分享我的开…