2024暑假集训第二次考试

news2024/12/24 2:09:14

10062. Majority Opinion

思路分析

        这道题就是一道思维题,这种题需要刻意练习,形成一定的思维模式用之前学过算法的原理去思考问题,而不是一味考验某一种算法的应用。

        这道题就需要思考的是什么情况可以让这个奶牛爱吃同一种干草,分析如果大于半的奶牛喜欢吃同一种干草那么这些奶牛就会都喜欢吃这种干草,那么先从规模最小的3个奶牛思考问题(因为大于一般的奶牛数量最少也要三头)那么观察规律可得,bba,或者是bab,或者是abb三种情况可以满足条件,再分析一下,bba,和abb都是有两头喜欢吃一种干草的奶牛并列,而bab是两头喜欢吃一种干草的奶牛中间隔了一头奶牛,所以规律就推出来了,因为接下来不管是几头奶牛绝对会被同化。

AC代码

#include<iostream>
#include<cstring>
#include<vector>
#include<cmath> 
#include<algorithm>
using namespace std;

const int N = 1e6+10;
const int M = 1e2;
int a[N],s[N];
vector<int> g;

int main(){
	int t; cin >> t;
	while(t--){
		int n; cin >> n;
		for(int i = 1; i <= n; i++){
			scanf("%d",&a[i]);
			//abb或bba型 
			if((a[i] == a[i+1] || a[i] == a[i-1]) && !s[a[i]]){
				g.push_back(a[i]);
				s[a[i]] = 1;
			}
			//bab型 
			if((a[i] == a[i+2] || a[i] == a[i-2]) && !s[a[i]]){
				g.push_back(a[i]);
				s[a[i]] = 1;
			}
		} 
		sort(g.begin(),g.end());
		if(g.empty()) cout << -1 << endl;
		else{
			for(int i = 0; i < g.size(); i++){
				cout << g[i] << " ";
			}
			cout << endl; 
		}
		memset(s,0,sizeof(s));
		memset(a,0,sizeof(a));
		g.clear();
	} 
	return 0;
} 

10063. Cannonball

思路分析

        这本来就是一道简单的模拟题,但是你如果纯模拟就会超时,所以需要一点优化,注意题目中的一句话,如果 Bessie 弹跳无限长的时间或直到她离开数轴,她会击破多少个炮击目标,所以有可能他会在两个跳板之间来回跳,所以我们需要判断一下如果他跳的次数超过3*1e5(因为跳板就1e5那么长,所以你跳同一个地方3次多肯定是反复横跳了,直接结束)

代码

#include<iostream>
using namespace std;

const int N = 1e5+10;
typedef pair<int,int> PII;
int n,s,cnt = 0,st[N];
PII a[N];

int main(){
	cin >> n >> s;
	for(int i = 1; i <= n; i++){
		cin >> a[i].first >> a[i].second;
	}
	int v = 1,ff = 1,t = 0; //t是看跳跃次数的 
	while(s <= n && s > 0 && t < 1e5*5){
		t++;
		if(a[s].first == 0){
			if(ff < 0) ff = 1;
			else ff = -1;
			v += a[s].second;
		}
		else{
			if(!st[s]){
				if(a[s].second <= v){
					cnt++;
					st[s] = 1;
				}
			}
		}
		s += v*ff;
	}
	cout << cnt << endl;
	return 0;
}

10064. Balancing Bacteria

思路分析

        题目用到的算法是二分,两次二分,但是本质上是一道思维题,他每次喷洒药水是一个等差数列,所以就只需要把他进行二次差分操作,统计出来不为零的的绝对值的草相加,就为喷洒草药的次数。可能有点难理解,可以看一下luogu上这道题的题解:登录 - Luogu Spilopelia

代码

#include <iostream>
#include <cmath>
using namespace std;

const int N = 1e6;
long long n,a[N],s[N],s2[N],ans;
//别忘了long long
int main(){
    cin>>n;
    for(int i = 1;i<=n;i++){
        cin>>a[i];
        s[i]=a[i]-a[i-1];
        s2[i]=s[i]-s[i-1];
        ans+=abs(s2[i]);
    }
    cout<<ans;
}

10065. Cow Party S

思路分析

         第四题是一个图论的模版题目,所以我们只需要背板子即可。(当时没做出来,板子掌握不熟练,上午讲下午就考我也真服了)Dijkstra最短路径算法,但是需要注意的,在求每个农场到x的距离并不等于x到每个农场的距离(题目让求来回),因为这是有向图,所以就需要反向建边(比如是a-b的边我们就建b-a的边)然后再跑一遍Dijkstra算法即可

代码

#include<iostream>
#include<queue>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;

const int N = 1e5+10;
typedef pair<int,int> PII;
struct Node{
	int a,b,c;
} tmp[N];
int h[N],e[N],ne[N],dist[N],s[N],w[N],idx,n,m,sum[N];

void add(int a, int b,int c){
	e[idx] = b;
	w[idx] = c;
	ne[idx] = h[a];
	h[a] = idx;
	idx++;
}

void dijkstra(int st){
	memset(dist,0x3f,sizeof dist);
	memset(s,0,sizeof s);
	priority_queue<PII,vector<PII>,greater<PII> > q;
	dist[st] = 0;
	q.push({dist[st],st});
	while(!q.empty()){
		auto t = q.top();
		q.pop();
		int k = t.second,dis = t.first;
		if(s[k]) continue;
		s[k] = 1;
		for(int i = h[k]; i != -1; i = ne[i]){
			int j = e[i];
			if(dis+w[i] < dist[j]){
				dist[j] = dis+w[i];
				q.push({dist[j],j});		
			}
		}
	}
	for(int i = 1; i <= n; i++){
		sum[i] += dist[i];
	}
}

int main(){
	memset(h,-1,sizeof h);
	int x; 
	cin >> n >> m >> x;
	for(int i = 1; i <= m; i++){
		int a,b,c; cin >> a >> b >> c;
		add(a,b,c);
		tmp[i] = {a,b,c};		
	}
	dijkstra(x);
	memset(h,-1,sizeof h);
	idx = 0;
	for(int i = 1; i <= m; i++){
		add(tmp[i].b,tmp[i].a,tmp[i].c);		
	}
	dijkstra(x);
	int mx = -1e9;
	for(int i = 1; i <= n; i++){
		mx = max(sum[i],mx);
	}
	cout << mx << endl;
	return 0;
}

总结

        这是暑假集训第二次考试总体成绩不理想,但是要继续加油,出现的问题主要是算法模版掌握不牢,所以要理解性记忆算法模版,以及思维题做的不好,要多练习思维题,提高逻辑思维

每一次的努力,都是为了更好的未来。不要害怕失败,因为失败只是通往成功的必经之路。坚持学习,坚持成长,未来就在你的手中。

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

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

相关文章

ES6模块化学习

1. 回顾&#xff1a;node.js 中如何实现模块化 node.js 遵循了 CommonJS 的模块化规范。其中&#xff1a; 导入其它模块使用 require() 方法 模块对外共享成员使用 module.exports 对象 模块化的好处&#xff1a; 大家都遵守同样的模块化规范写代码&#xff…

免费的二级域名分发,您确定不要试试吗?

这是可爱的小盆友做的一个免费的二级域名&#xff0c;目前上线就送114514个积分&#xff0c;名额有限~ 首先进入>路明二级域名分发 - 免费稳定的二级域名分发服务 (kmyl.top)< 进来是这个样子&#xff08;如下图所示&#xff09; 话不多说&#xff0c;进入教程~ 第一章…

vue对axios进行请求响应封装

一、原因 像是在一些业务逻辑上&#xff0c;比如需要在请求之前展示loading效果&#xff0c;或者在登录的时候判断身份信息&#xff08;token&#xff09;等信息有没有过期&#xff0c;再者根据服务器响应回来的code码进行相应的提示信息。等等在请求之前&#xff0c;之后做的一…

跟着峰哥学java 微信小程序 第二天 封装ES7 + 后端工作

1.前端 1.1使用promise封装 使用promise封装以至于在图片路径 统一路径中修改 //封装统一请求域名 const baseUrl "http://localhost:8080"; //封装后需导出 export const getBaseUrl()>{return baseUrl; } 导入外来资源 初始化数据 设置数据 将处理后的数据…

高薪程序员必修课-JVM的内存区域以及对象创建过程

JVM内存区域 在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;内存区域&#xff08;Memory Areas&#xff09;是对内存空间的逻辑划分&#xff0c;用于存储不同类型的数据和执行不同的操作。理解JVM的内存区域有助于优化程序性能、调优内存使用和排查内存相关的问题。下…

Java后端每日面试题(day1)

目录 JavaWeb三大组件依赖注入的方式Autowire和Resurce有什么区别&#xff1f;Spring Boot的优点Spring IoC是什么&#xff1f;说说Spring Aop的优点Component和Bean的区别自定义注解时使用的RetentionPolicy枚举类有哪些值&#xff1f;如何理解Spring的SPI机制&#xff1f;Spr…

溶酶体靶向嵌合体制备方法和技术

网盘 https://pan.baidu.com/s/1dhCCryatp71j7yXTDdrrTw?pwdynr4 具有聚集诱导发光性质的比率型溶酶体pH探针及应用.pdf 内体-溶酶体转运靶向嵌合体降解剂及其制备方法与应用.pdf 可降解PDGFR-β的蛋白降解靶向嵌合体及其制备方法和应用.pdf 溶酶体膜包覆纳米颗粒的制备方法.…

19C 单机文件系统安装文档

准备工作 1)查看系统版本、内核参数 more /etc/redhat-release more /etc/redflag-releaseuname -a2)查看当前系统是否配置了HugePages。在下面的查询中&#xff0c;HugePages的几个相关值都为0&#xff0c;表明当前未配值HugePages&#xff0c;其次可以看到该版本的大页大小为…

科普文:微服务之服务网格Service Mesh

一、ServiceMesh概念 背景 随着业务的发展&#xff0c;传统单体应用的问题越来越严重&#xff1a; 单体应用代码库庞大&#xff0c;不易于理解和修改持续部署困难&#xff0c;由于单体应用各组件间依赖性强&#xff0c;只要其中任何一个组件发生更改&#xff0c;将重新部署整…

2024年7月5日 (周五) 叶子游戏新闻

老板键工具来唤去: 它可以为常用程序自定义快捷键&#xff0c;实现一键唤起、一键隐藏的 Windows 工具&#xff0c;并且支持窗口动态绑定快捷键&#xff08;无需设置自动实现&#xff09;。 卸载工具 HiBitUninstaller: Windows上的软件卸载工具 《乐高地平线大冒险》为何不登陆…

能否免费使用Adobe XD?

Adobe XD不是免费的。Adobe 目前XD采用订阅模式&#xff0c;提供订阅模式 7 每天试用期结束后需要付费购买&#xff0c;具体价格根据不同的订阅计划确定&#xff0c;包括每月购买&#xff0c;包括 9.99 美元或每月 99.99 美元&#xff0c;或者选择购买Adobe CreativeCloud整体订…

文件打开的系统错误分析流程

当用户出现“Open file failed”错误时&#xff0c;手动产生dump文件。 &#xff08;1&#xff09;打开资源管理器&#xff0c;选择AppNameXXX.exe进程&#xff0c;右击鼠标选择“创建转储文件” (2) 生成转储文件 3.获取用户转储文件 4.用Visual studio2015打开dump文件分析…

Qt使用sqlite数据库及项目实战

一.sqlite使用介绍 在Qt中使用SQLite数据库非常简单&#xff0c;SQLite是一个轻量级的嵌入式数据库&#xff0c;不需要单独的数据库服务器&#xff0c;完全使用本地文件来存储数据。 当在Qt中使用SQLite数据库时&#xff0c;需要涉及到一些SQL语句以及Qt中的相关函数&#xf…

linux主机(A)通过私钥登录linux主机(B)

1.登录B主机&#xff0c;先在B主机执行 ssh-keygen 2.设置id_rsa的权限 chmod 600 id_rsa 3.将生成的id_rsa.pub导入到authorized_keys ssh-copy-id -i ./id_rsa.pub root127.0.0.1 4.将id_rsa复制到A主机 scp id_rsa_123 root1.1.1.A:/home/ 5.登录到A主机使用私钥登录 因…

华为云生态和快速入门

华为云生态 新技术催生新物种&#xff0c;新物种推动新生态 数字技术催生各类运营商去重塑并颠覆各行业的商业模式 从业务层面看&#xff0c;企业始终如一的目标是业务增长和持续盈利&#xff0c;围绕这些目标衍生出提质、增效、降本、安全、创新和合规的业务诉求&#xff0c…

【C语言题目】34.猜凶手

文章目录 作业标题作业内容2.解题思路3.具体代码 作业标题 猜凶手 作业内容 日本某地发生了一件谋杀案&#xff0c;警察通过排查确定杀人凶手必为4个嫌疑犯的一个。 以下为4个嫌疑犯的供词: A说&#xff1a;不是我。 B说&#xff1a;是C。 C说&#xff1a;是D。 D说&#xff…

科研绘图系列:R语言STAMP图(STAMP Plot)

介绍 STAMP图(STAMP plot)并非一个广泛认知的、具有特定名称的图表类型,而是可能指在STAMP(Statistical Analysis of Metagenomic Profiles:“STAMP: statistical analysis of taxonomic and functional profiles”)软件使用过程中生成的各种统计和可视化图表的总称。ST…

window.ai 开启你的内置AI之旅

❝ 成功是得你所想&#xff0c;幸福是享你所得 大家好&#xff0c;我是柒八九。一个专注于前端开发技术/Rust及AI应用知识分享的Coder ❝ 此篇文章所涉及到的技术有 AI( Gemini Nano) Chrome Ollama 因为&#xff0c;行文字数所限&#xff0c;有些概念可能会一带而过亦或者提供…

昇腾910B部署Qwen2-7B-Instruct进行流式输出【pytorch框架】NPU推理

目录 前情提要torch_npu框架mindsport框架mindnlp框架 下载模型国外国内 环境设置代码适配&#xff08;非流式&#xff09;MainBranch结果展示 代码适配&#xff08;流式&#xff09; 前情提要 torch_npu框架 官方未适配 mindsport框架 官方未适配 mindnlp框架 官方适配…

第十六章 Qt的文件处理操作详解

目录 一、基本文件操作 二、二进制文件读写 三、文本文件读写 四、操作例子 1、QTextStream的流操作符 一、基本文件操作 文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库,提供了跨平台的文件操作能力。在所有的 I/O 设备中,文件 I/O 是最重要的部分之…