2024大一同学进入ACM实验室选拔(东北林业大学)

前言:

  15号比赛的6道题,有一道题估计是为了防止有人ak设的,我看题解都没完全看懂,是现在的我的知识盲区了,之后再补吧。

正文:

Problem:A股神:

#include <bits/stdc++.h>
using namespace std;
double a[505];
int main(){
    int n;
    double m=1;
    a[0]=1;
    cin>>n;
    for(int i=1;i<=n;i++)cin>>a[i];
    for(int i=1;i<=n;i++){
        if(a[i]>a[i-1])m=m*a[i]/a[i-1];
    }
    printf("%.2lf\n",m);
}

贪心,从第二天开始,如果当天股价大于前一天股价,则在前一天买入,当天卖出,即可获得利润。如果当天股价小于前一天股价,则不买入,不卖出。也即是说,所有上涨交易日都做买卖,所有下跌交易日都不做买卖,最终获得的利润是最大的,所以只要今天价格比昨天高就梭哈。

Problem:B 酒馆决斗:

#include<bits/stdc++.h>
using namespace std;
typedef struct stu{
	int a,c;
}monster;
monster qu[100005],shp[100005];
bool cmp(monster x,monster y){
	if(x.a==y.a)return x.c>y.c;
	return x.a>y.a;
}
int main(){
	int n,m;
	cin>>n>>m;
	//输入 
	for(int i=1;i<=n;i++)cin>>qu[i].a>>qu[i].c;
	for(int i=1;i<=m;i++)cin>>shp[i].a>>shp[i].c;
	sort(qu+1,qu+n+1,cmp);
	sort(shp+1,shp+n+1,cmp);
	//for(int i=1;i<=n;i++)cout<<qu[i].a<<" "<<qu[i].c<<endl;
	//for(int i=1;i<=n;i++)cout<<shp[i].a<<" "<<shp[i].c<<endl;
	int q=1,s=1;
	while(q<=n&&s<=m){
		//开始攻击
		shp[s].c-=qu[q].a;
		if(shp[s].c<=0)s++;
		//cout<<shp[s].a<<" "<<shp[s].c<<endl;
		if(s>m)break;
		qu[q].c-=shp[s].a;
		if(qu[q].c<=0)q++;
		//cout<<qu[q].a<<" "<<qu[q].c<<endl;
		//每次循环表示两回攻击 
	}
	if(q==n+1){
		cout<<"SHP wins, left "<<m-s+1;
	}
	if(s==m+1){
		cout<<"Quasrain wins, left "<<n-q+1;
	}
	return 0;
}

模拟题。

Problem:C 神秘数字:

#include<bits/stdc++.h>
using namespace std;
int a[10];
int work(int x){
	int ans=0;
	while(x){
		int y=x%10;
		x/=10;
		ans+=y;
	}
	return ans;
}
int main(){
	long long n,m,d=0;
	cin>>n>>m;
	if(m==0){
		cout<<0<<endl;
		return 0;
	}
	for(int i=pow(10,n-1);i<pow(10,n);i++){
		if(work(i)==m)d+=i;
	}
	cout<<d<<endl;
}

根据位数遍历即。

Problem:D why的概率论:

#include <bits/stdc++.h>
using namespace std;
int gcd(int a,int b){
	return b==0?a:gcd(b,a%b);
}
int main(){
	int t,x,y,z,p,q,cnt;
	cin>>t;
	while(t--){
		cin>>x>>y;
		z=x+y;
		p=4*x;
		q=z;
		cnt=gcd(p,q);
		while(cnt!=1){
			p/=cnt;q/=cnt;
			cnt=gcd(p,q);
		}
		cout<<p<<" "<<"/"<<" "<<q<<endl;
	}
	return 0;
}

根据p和q为正整数,而且p,q的最大公因数是1,将p,q同除gcd(p,q),直至cnt=0.

Problem:F 明明的随机数-set:

#include<bits/stdc++.h>
using namespace std;
int a[10000];
int main(){
	int n;
	while(scanf("%d",&n)!=EOF){
	int cnt=0;
	for(int i=1;i<=n;i++)cin>>a[i];
	sort(a+1,a+n+1);
	for(int i=1;i<=n;i++){
		if(a[i+1]!=a[i])cnt++;
	}
	cout<<cnt<<endl;
	for(int i=1;i<=n;i++){
		if(i==n){cout<<a[i]<<endl;
		break;
		}
		if(a[i+1]!=a[i])cout<<a[i]<<" ";
	}
}
return 0;
}

这是排序后遍历检验答案合法的做法,我自己还写了个用桶排的就不放出来了,原理相同。

待补 Problem:E 库特的素数队列(2)

要做这道题我们可以先看看这道题的相关题

#include <bits/stdc++.h>
using namespace std;

const int MAXN=1e7+1;
char prime[MAXN];
int primeList[MAXN],num=0;
void getPrime()
{
    memset(prime,1,sizeof(prime));
    prime[0]=prime[1]=0;
    for(int i=2;i<MAXN;i++)
    {
        if(prime[i])primeList[num++]=i;
        for (int j=0;j<num&&i*primeList[j]<MAXN;j++)
        {
            prime[i*primeList[j]]=0;
            if(i%primeList[j]==0)break;
        }
    }
}

int main()
{
	queue<int>q;
	getPrime();
	int t,n,cnt,qs;
	cin>>t;
	while(t--)
	{
		cin>>n;
		for(int i=1;i<=n;i++)q.push(i);
		while(q.size()!=1)
		{
			qs=q.size();
			for(int i=1;i<=qs;i++)
			{
				if(q.size()==1)break;
				if(prime[i])q.push(q.front());
				q.pop();
			}
		}
		cout<<q.front()<<endl;
		q.pop();
	}
	return 0;
}

代码是我copy的,这道题的t小于等于三,所以可以用队列来模拟,判断素数的方法本代码用的是欧拉筛(知识盲区,等我什么会了在自己来补)。

然后就可以根据上述代码找到规律。如下(老师的代码)

#include <bits/stdc++.h>
using namespace std;
const int N=1e7+1;
int b[N];
int init()
{
	b[1]=1;
	b[2]=2;
	for(int i=3;i<=10000000;i++)
	{
		 if(i>=3&&i<=4) b[i]=3;
		 if(i>=5&&i<=10) b[i]=5;
		 if(i>=11&&i<=30) b[i]=11;
		 if(i>=31&&i<=126) b[i]=31;
		 if(i>=127&&i<=708) b[i]=127;
		 if(i>=709&&i<=5380) b[i]=709;
		 if(i>=5381&&i<=52710) b[i]=5381;
		 if(i>=52711&&i<=648390) b[i]=52711;
		 if(i>=648391&&i<=9737332) b[i]=648391;
		 if (i>=9737333&&i<=10000000) b[i]=9737333;
	}
	return 0;
}
int main()
{
    //cout << "Hello world!" << endl;
    init();
    int t,n;
    cin>>t;
    while(t--)
    {
        cin>>n;
        cout<<b[n]<<endl;



    }
    return 0;
}

后记:

  之后学到了相关知识我会来补那道题的。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AVA企业服务呼叫中心管理后台源码

项目中实现用户管理&#xff0c;包括用户的录入、编辑、查看、修改、用户角色的分配 &#xff0c;支持一个用户拥有多个权限&#xff0c;角色管理&#xff0c;可以自由定义角色、并可以给角色分配不同的权限。

利用Jmeter做接口测试(功能测试)全流程分析

利用Jmeter做接口测试怎么做呢&#xff1f;过程真的是超级简单。 明白了原理以后&#xff0c;把零碎的知识点填充进去就可以了。所以在学习的过程中&#xff0c;不管学什么&#xff0c;我一直都强调的是要循序渐进&#xff0c;和明白原理和逻辑。这篇文章就来介绍一下如何利用…

基于ssh学生信息管理系统

系统是一个学生信息管理&#xff0c;有三种角色&#xff0c;分别是超级管理员和教师还有学生&#xff0c;不同角色看到的功能会不一样。 管理员&#xff1a;学院管理&#xff0c;专业管理&#xff0c;班级管理&#xff0c;学科管理&#xff0c;学生管理&#xff0c;教师管理&am…

警务数据仓库的实现

目录 一、SQL Server 2008 R2&#xff08;一&#xff09;SQL Server 的服务功能&#xff08;二&#xff09;SQL Server Management Studio&#xff08;三&#xff09;Microsoft Visual Studio 二、创建集成服务项目三、配置“旅馆_ETL”数据流任务四、配置“人员_ETL”数据流任…

c++--replace函数

目录 1.从位置 pos 开始&#xff0c;替换长度为 len 的子字符串为 str。2.用字符串 str 替换迭代器范围 [i1, i2) 内的内容。3.从位置 pos 开始&#xff0c;替换长度为 len 的子字符串为 str 中从 subpos 开始长度为 sublen 的子字符串。4.用迭代器范围 [first, last) 内的内容…

ChatGLM3 Linux 部署

1.首先需要下载本仓库&#xff1a; git clone https://github.com/THUDM/ChatGLM3 2.查看显卡对应的torch 版本 官方文档说明&#xff1a; Start Locally | PyTorch 例如&#xff1a; a. 先查看显卡的CUDA版本 nvcc --version 查看对应版本 Previous PyTorch Versions …

2024爱分析·搜索型数据库市场厂商评估报告: 拓尔思

01 研究范围定义 研究范围&#xff1a; 在中央及地方政府的信创政策推动下&#xff0c;我国信创部分领域正在从“试点验证”迈向“规模推广”阶段。随着信创替换的深化&#xff0c;爱分析观察到&#xff0c;在需求侧&#xff0c;企业对信创产品的需求逐渐融合更丰富的业务诉求…

2024年洗地机综合实力排行榜:谁才是真正的洗地神器?

近年来&#xff0c;洗地机在行业里&#xff0c;它集合了扫地和拖地以及自动清洁和除菌的功能&#xff0c;备受人们的喜爱&#xff0c;尤其是平时忙于工作并没有多少时间清洁家务的用户&#xff0c;但是对于第一次接触洗地机的用户来说&#xff0c;怎么选购洗地机也是个问题&…

力扣HOT100 - 42. 接雨水

解题思路&#xff1a; 动态规划 感觉不是很好想 class Solution {public int trap(int[] height) {int n height.length;if (n 0) return 0;int[] leftMax new int[n];leftMax[0] height[0];for (int i 1; i < n; i) {leftMax[i] Math.max(leftMax[i - 1], height[i…

【CSS】CSS基础1(CSS基本介绍+常见样式设计)

目录 什么是CSS&#xff1f; 语法规范 常见样式 例子 代码展示 什么是CSS&#xff1f; 点击以下链接了解更多&#xff1a; ​​​​​​​ ​​​​​https://baike.baidu.com/item/%E5%B1%82%E5%8F%A0%E6%A0%B7%E5%BC%8F%E8%A1%A8/524980?fromModulelemma_inlink(英文…

ADW300多功能无线计量仪表

仪表应用背景 电力运维行业&#xff1a;运维服务系统实时采集大量用户站的运行和动环数据&#xff0c;经专业数据分析&#xff0c;当用户站发生异常情况或运行故障时&#xff0c;及时反馈到运维指挥中心&#xff0c;并通过移动终端通知相应的运维工程师&#xff0c;指导现场作…

Linux Networking - MTU

MTU MTU&#xff0c;Maximum Transmission Unit&#xff0c;指的是Ethernet Frame的Payload部分的长度限制&#xff0c;如下图&#xff1a; 1500这个数字则有一定的历史原因&#xff0c; 参考链接&#xff1a; How 1500 bytes became the MTU of the internethttps://blog.b…

指针知识大礼包,让你的编程之路更顺畅(二)

1. 数组名的理解 2. 使⽤指针访问数组 3. ⼀维数组传参的本质 4. ⼆级指针 5. 指针数组 6. 指针数组模拟⼆维数 正文开始&#xff1a; 1. 数组名的理解 在上⼀个章节我们在使⽤指针访问数组的内容时&#xff0c;有这样的代码&#xff1a; int arr[10] {1,2,3,4,5,6,7,…

启动性能优化

一、应用启动慢的原因 1.在主线程执行了太多耗时的操作&#xff0c;比如加载数据&#xff0c;或者初始化三方库等等&#xff0c;导致在Application的oncreate或者Activity的oncreate方法中耗时太久 2.布局嵌套太深&#xff0c;或者一些不会立即使用的布局也在一开始一起加载到…

Jira 软件缺陷管理 (软件测试)

内容来源&#xff1a;总结黑马课程 1.软件缺陷信息 2.创建缺陷问题 2.1 缺陷模板 2.2 创建缺陷问题模板

3.25作业

定义自己的命名空间&#xff0c;其中有string类型的变量&#xff0c;再定义两个函数&#xff0c;一个函数完成字符串的输入&#xff0c;一个函数完成求字符串长度&#xff0c;再定义一个全局函数完成对该字符串的反转有以下定义&#xff0c;说明哪些量可以改变哪些不可以改变&a…

【C】盛最多水的容器(双指针)

盛最多水的容器 原题目链接:点击跳转 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和(i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说…

【3D reconstruction 学习笔记 第二部】

三维重建 3D reconstruction 4. 三维重建与极几何三角化&#xff08;线性解法&#xff09;三角化&#xff08;非线性解法&#xff09;多视图几何极几何极几何约束基础矩阵估计 5. 双目立体视觉重建6. 多视图重建7. SFM 系统设计8. SLAM系统设计 4. 三维重建与极几何 三角化&…

微信SEO秘籍:6年经验,祝你轻松引流获客

我 17 年前就已经开始研究微信 SEO&#xff0c;并逐步完善成系统的教程&#xff0c;可以说是国内最早的微信 SEO 课程。至今&#xff0c;我已连续教授了 6 年&#xff01; 我自己也一直亲自操作&#xff0c;不断优化和升级我的课程&#xff0c;我的许多学员通过学习我的微信 S…

嵌入式3-25

1、输入一个数&#xff0c;实现倒叙 123-->321 2、输入一个&#xff0c;判断是否是素数 3、输入一个文件名&#xff0c;判断是否在家目录下存在&#xff0c;如果是一个目录&#xff0c;则直接输出是目录下的.sh文件的个数。如果存在则判断是否是一个普通文件&#xff0c;如果…
最新文章