2024睿抗国赛赛后总结

news2024/11/20 11:40:04

题目可以去pta教育超市找

写第一题还很清醒。(耗时15分钟)

#include<bits/stdc++.h>
using namespace std;
string s;
int sum = 0,len = 0;
int cnt = 0;

int check(char c){
	if(c >= 'a' && c <= 'z'){
		return 1;
	}else if(c <= 'Z' && c >= 'A'){
		return 2;
	}else if(c <= '9' && c >= '0'){
		return 3;
	}else{
		return 0;
	}
}

void f(string t){
	len += t.size();
	if(t.size()){
		cnt ++;
	}
	bool f1 = false, f2 = false, f3 = false;
	for(int i = 0;i < t.size();i ++){
		if(check(t[i]) == 1){
			f1 = true;
		}else if(check(t[i]) == 2){
			f2 = true;
		}else{
			f3 = true;
		}
	}
	if(f1 && f2 && f3){
		sum += 5;
	}else if((f1 && f3) || (f2 && f3)){
		sum += 3;
	}else if(f1 && f2){
		sum += 1;
	}
}

void solve(){
	
	while(cin >> s){
		string t = "";
		for(int i  = 0;i < s.size();i ++){
			if(check(s[i])){
				t += s[i]; 
			}else{
				f(t);
				t = "";
			}
		}
		if(t.size()){
			f(t);
		}
	}
	cout << sum << endl << len << ' ' << cnt << endl;
}

int main(){
	int t = 1;
	while(t --){
		solve();
	}
} 

第二题就开始犯迷糊了,题面太恶心了,val数组少写了一个半天没找到,无语了。。。(耗时25分钟)

#include<bits/stdc++.h>
using namespace std;
int val[] = {0, 25, 21, 18, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0};

struct d{
	int first;
	int second;
}a[40];

bool cmp(d x, d y){
	if(x.first != y.first){
		return x.first > y.first;
	}else{
		return x.second < y.second;
	}
}

void solve(){
	int n;
	cin >> n;
	map<int,int>mp;
	while(n --){
		for(int i = 0;i < 20;i ++){
			int x, y;
			cin >> x >> y;
			mp[x] = 1;
			a[x] = {a[x].first + val[y], x};
		}
	}
	sort(a + 1, a + 31, cmp);
	for(int i = 1;i <= 30;i ++){
		if(mp[a[i].second])
			cout << a[i].second << ' ' << a[i].first << endl;
	}
}

int main(){
	int t = 1;
	while(t --){
		solve();
	}
} 

第三题,一开始忘了如何dfs求排列,求完排列果断暴力,最后就14分,当时想的是dp,没想到就是一个简单数学问题。每个数可以拆个十百千来算,就是个排序

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

int a[5], st[5];
map<int,int>mp;
int n;
vector<int>b;
set<int>s;
vector<int>ans;

void dfs1(int val, int cnt){
	if(cnt >= n){
		s.insert(val);
		return;
	}
	for(int i = 1;i <= n;i ++){
		if(!st[i]){
			st[i] = 1;
			dfs1(val * 10 + a[i], cnt + 1);
			st[i] = 0;
		}
	}
}

void solve(){
	cin >> n;
	for(int i = 1;i <= n;i ++){
		cin >> a[i];
	} 
	dfs1(0, 0);
	long long sum = 0;
	for(auto x : s){
		b.push_back(x);
		sum += x * x;
	}
	int f = 1;
	for(int i = 0;i < b.size();i += 2){
		int c = b[i], d = b[i + 1];
		if(f == 1)
			cout << c << endl;
		else
			cout << d << endl;
		f *= -1;
	}
}

int main(){
	int t = 1;
	while(t --){
		solve();
	}
} 

第四题,当时写最短路,然后写的很对就是过不去,最后没办法,只能二分答案,

#include<bits/stdc++.h>
using namespace std;
#define pii pair<int,int>

int n, m, s, t;
vector<pair<int,int>>e[1010]; 
int val[1010], st[1010], dist[1010], pre[1010];

bool dij(int mid){
	priority_queue<pii, vector<pii>, greater<pii>>q;
	memset(pre, -1, sizeof pre);
	memset(st, 0, sizeof st);
	memset(dist, 0x3f, sizeof dist);
	q.push({0, s});
	while(q.size()){
		auto k = q.top();
		q.pop();
		int d = k.first;
		int id = k.second;
		if(st[id]){
			continue;
		}
		st[id] = 1;
		for(auto [x, y] : e[id]){
			if(val[x] > mid && x != t){
				continue;
			}else{
				if(y + d < dist[x]){
					dist[x] = y + d;
					q.push({dist[x], x});
				}
			}
		}
	}
	if(dist[t] == 0x3f3f3f3f){
		return false;
	}
	return true;
}

void solve(){
	cin >> n >> m;
	cin >> s >> t;
	int ma = -1, mi = 0x3f3f3f3f;
	for(int i = 1;i <= n;i ++){
		cin >> val[i];
		ma = max(ma, val[i]);
		mi = min(mi, val[i]);
	}
	
	for(int i = 0;i < m;i ++){
		int x, y, z;
		cin >> x >> y >> z;
		e[x].push_back({y, z});
		e[y].push_back({x, z});
	}
	int l = mi - 1, r = ma + 1;
	while(l + 1 != r){
		int mid = l + r >> 1;
		if(dij(mid)){
			r = mid;
		} else{
			l = mid;
		}
	}
	if(!dij(r)){
		cout << "Impossible";
	}else{
		cout << dist[t] << ' ' << r << endl;
	}
}

int main(){
	int t = 1;
	while(t --){
		solve();
	}
} 

赛后秒出正解,服了啊,错误原因是我建边建错了

#include<bits/stdc++.h>
using namespace std;
#define pii pair<pair<int,int>,int>

int n, m, s, t;
vector<pair<int,int>>e[1010]; 
int val[1010], st[1010], dist[1010], pre[1010];
int res[1010];

bool dij(){
	priority_queue<pii, vector<pii>, greater<pii>>q;
	memset(pre, -1, sizeof pre);
	memset(st, 0, sizeof st);
	memset(dist, 0x3f, sizeof dist);
	q.push({{0, 0}, s});
	while(q.size()){
		auto k = q.top();
		q.pop();
		int d = k.first.first;
		int v = k.first.second;
		int id = k.second;
		if(st[id]){
			continue;
		}
		st[id] = 1;
		for(auto [x, y] : e[id]){
			if(dist[x] > y + d){
				dist[x] = y + d;
				pre[x] = id;
				res[x] = max(v, val[x]);
				q.push({{dist[x], res[x]}, x});
			}else if(dist[x] == y + d && res[x] > v){
				res[x] = max(val[x], v);
				pre[x] = id;
				q.push({{dist[x], res[x]}, x});
			}
		}
	}
	if(dist[t] == 0x3f3f3f3f){
		return false;
	}
	return true;
}

void solve(){
	cin >> n >> m;
	cin >> s >> t;
	for(int i = 1;i <= n;i ++){
		cin >> val[i];
	}
	val[s] = 0;
	val[t] = 0;
	for(int i = 0;i < m;i ++){
		int x, y, z;
		cin >> x >> y >> z;
		e[x].push_back({y, z});
		e[y].push_back({x, z});
	}
	if(!dij()){
		cout << "Impossible";
	}else{
		cout << dist[t] << ' ' << res[t];
	}
}

int main(){
	int t = 1;
	while(t --){
		solve();
	}
} 

这次比赛很糟糕,但是也学到了不少东西。下次注意

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

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

相关文章

【每日刷题】Day92

【每日刷题】Day92 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 面试题 16.05. 阶乘尾数 - 力扣&#xff08;LeetCode&#xff09; 2. 取近似值_牛客题霸_牛客网 (n…

贝叶斯学习方法:几种方法介绍

目录 1 拉普拉斯还原-轻松贝叶斯深度学习2 具有归一化流的变分推理3 基于条件归一化流的多元概率时间序列预测 1 拉普拉斯还原-轻松贝叶斯深度学习 深度学习的贝叶斯公式已被证明具有令人信服的理论性质&#xff0c;并提供实用的功能优势&#xff0c;例如改进预测不确定性量化…

多路I/O复用之select、poll、epoll

一、多进程/多线程模型的不足 为每个请求分配一个进程或线程的方式会带来较大的资源开销。创建和切换进程/线程需要消耗系统资源&#xff0c;包括内存、CPU 时间等。例如&#xff0c;在一个大规模的服务器环境中&#xff0c;如果同时有数千个请求到来&#xff0c;为每个请求创建…

C/C++烟花代码

目录 系列推荐 写在前面 烟花代码 代码分析 运行结果 写在后面 系列推荐 序号目录直达链接1爱心代码https://want595.blog.csdn.net/article/details/1363606842李峋同款跳动的爱心https://want595.blog.csdn.net/article/details/1397222493满屏飘字代码https://want59…

YOLOv8网络轻量化改进之ShuffleNetV2主干

目录 一、理论模型 二、代码修改 一、理论模型 首先是shuffleNet网络的理论介绍部分 论文地址:1807.11164 (arxiv.org) 这里是shufflenetv2网络的主要模块的结构,在网络结构中,通过步长来选择这两种不同的模块。步长为1的时候,对应模块c,步长为2的时候对应模块d。 二、…

Java 文件操作和 IO

1. 认识文件 狭义上的文件&#xff08;file&#xff09;&#xff1a;针对硬盘这种持久化存储的 IO 设备&#xff0c;当我们想要进行数据保存时&#xff0c;往往不是保存成一个整体&#xff0c;而是独立成一个个的单位进行保存&#xff0c;这种独立的单位就被抽象成文件的概念 …

2024第五届华数杯数学建模竞赛C题思路+代码

目录 原题背景背景分析 问题一原题思路Step1:数据读取与处理Step2:计算最高评分&#xff08;Best Score, BS&#xff09;Step3:统计各城市的最高评分&#xff08;BS&#xff09;景点数量 程序读取数据数据预处理 问题二原题思路Step1: 定义评价指标Step2: 收集数据Step3: 标准化…

【linux深入剖析】初识线程---线程概念

&#x1f341;你好&#xff0c;我是 RO-BERRY &#x1f4d7; 致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f384;感谢你的陪伴与支持 &#xff0c;故事既有了开头&#xff0c;就要画上一个完美的句号&#xff0c;让我们一起加油 目录 1. Linux线程概念什么是线…

RK3568笔记五十二:HC-SR04超声波模块驱动测试

若该文为原创文章&#xff0c;转载请注明原文出处。 一、HC-SR04简介 HC-SR04超声波模块是一种常用于距离测量和障碍物检测的模块。它通过发射超声波信号并接收回波来计算所测量物体与传感器之间的距离。 1、基本原理 TRIG引脚负责发送超声波脉冲串。此引脚应设置为高电平10…

4.指令系统

4.指令系统 指令系统概述—复习指导 一个好的框架是学习掌握知识的捷径&#xff0c;能够帮助我们更快的掌握所学知识&#xff0c;下面从王道计算机组成原理书本第四章-指令系统出发&#xff0c;讲解一下第四章的知识框架组成&#xff0c;下面是指令系统这一章节的思维导图和详…

【doghead】h264测试文件、读取、模拟采集时间戳及packtizer

使用原生代码但是原生仓库没有264文件使用绝对路径但是在wsl2的ubuntu22.04中构建添加264文件路径 clion IDE : 来自RtspServer 的测试264文件 PHZ76 提供的264文件读取264成功:按照帧读取 这里是模拟采集视频帧? 定时器:

【Rust练习】7.引用与借用

练习题来自&#xff1a;https://practice-zh.course.rs/ownership/borrowing.html 1 fn main() {let x 5;// 填写空白处let p __;println!("x 的内存地址是 {:p}", p); // output: 0x16fa3ac84 }其实Rust的借用&#xff0c;就类似C的指针和引用&#xff0c;如果你…

面对挫折和恶语 良好心态非常重要

你等年纪轻轻一遇挫折,便松散懈怠,日后怎成大器? 虽称满腹经纶,却是鸡肠鼠肚,连几句恶语都容它不下,你等要记住,为人者,有大度成大器也!夫处世之道,即应变之术, 岂可偏执一端? 【迷茫时&#xff0c;不妨听听司马仲达的人生格言】https://www.bilibili.com/video/BV1JF411i7…

React--》掌握styled-components重塑React样式管理

想象一下&#xff0c;如果你的React组件不仅能自描述其逻辑&#xff0c;还能直接声明自己的样式&#xff0c;这种“所见即所得”的编程体验是不是让人心动不已&#xff1f;styled-components正是这样一把钥匙&#xff0c;它彻底颠覆了我们对React样式管理的传统认知&#xff0c…

Python 中单例模式实现的几种方式

在设计模式中&#xff0c;单例模式是经常被提及和使用的一种模式。它保证一个类只有一个实例&#xff0c;并提供全局访问点。在Python中&#xff0c;有多种实现单例模式的方法。那么&#xff0c;如何选择合适的方法来实现单例模式呢&#xff1f; 单例模式在Python中的几种实现方…

软件设计师笔记-网络基础知识

计算机网络的发展 计算机网络&#xff08;计算机技术通信技术&#xff09;的发展是一个逐步演进的过程&#xff0c;从简单的具有通信功能的单机系统&#xff0c;到复杂的以局域网及因特网为支撑环境的分布式计算机系统&#xff0c;这一历程经历了多个关键阶段&#xff1a; #me…

大模型是否潜在地进行多跳推理?

人工智能咨询培训老师叶梓 转载标明出处 以往的研究表明&#xff0c;基于Transformer的LLMs能够在参数中存储和检索事实信息&#xff0c;以完成简单提示&#xff0c;例如“Stevie Wonder的母亲是谁”。此外&#xff0c;当必要信息明确给出时&#xff0c;LLMs表现出了显著的上下…

JS优化了4个自定义倒计时

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><title>4个自定义倒计时</title><style>* {margin: 0;padding: 0;box-sizing: border-box;user-select: none;body {background: #0b1b2c;}}hea…

(javaweb)maven--Java项目的构建工具

目录 一.Maven概述 二.Idea导入maven项目 三.maven核心功能--依赖管理 四.依赖管理--依赖传递 五.依赖管理--依赖范围 六.依赖管理--生命周期 一.Maven概述 1.管理和构建Java项目的工具 2.Apache开源&#xff08;源代码开放&#xff09; 3. 4. Maven核心配置文件&#xff…