2024CAIP省赛

news/2024/8/26 13:18:27 标签: 图论

title: 2024CAIP省赛
date: 2024-07-16 22:13:50
tags: 总结
categories: 比赛

文章目录

      • RC-u1 热҈热҈热҈
        • 思路
      • RC-u2 谁进线下了?
        • 思路
      • RC-u3 暖炉与水豚
        • 思路
      • RC-u4 章鱼图的判断
        • 思路
        • 代码
      • RC-u5 工作安排
        • 思路

总结写在前面,就一句话

状态的保持胜过少女的娇羞

RC-u1 热҈热҈热҈

思路

按题意,大于35的,判断是否为星期四,统计数量即可

RC-u2 谁进线下了?

思路

按题意模拟即可。

RC-u3 暖炉与水豚

思路

枚举每一个暖炉,将合法的水豚标记,最后会剩一个不合法的,然后搜索这个不合法的水豚周围3x3,记录合法的隐藏的位置

RC-u4 章鱼图的判断

思路

建无向图,记录每个点的度,拓扑去每个环的枝条,最后枚举每一个环,有一种特殊情况,就是多环共点,这个情况是需要去除。

代码
vector<int> g[N];
int d[N];
int cnt,ans;
int n,m;

//搜环
void dfs(int x){
	d[x] = 0;
	for(auto v : g[x]){
		if(d[v]){
			dfs(v);
			cnt ++;
		}
	}
}
//tuopu去支
void DAG()
{
	queue<int> q;
	for(int i = 1; i <= n ; i ++){
		if(d[i] == 1){
			q.push(i);
		}
	}
	while(!q.empty()){
		int t = q.front();
		q.pop();
		d[t] --;
		for(auto v : g[t]){
			d[v] --;
			if(d[v] == 1){
				q.push(v);
			}
		}
	}
}
void solve(){
	cin >> n >> m;
	
	memset(d,0,sizeof d);
	for(int i = 1; i <= m ; i ++){
		int u,v;
		cin >> u >> v;
		g[u].push_back(v);
		g[v].push_back(u);
		d[u] ++,d[v] ++;
	}
	DAG();
	
	//多环一点情况下,4 2 2,去除该情况
	for(int i = 1; i <= n; i ++){
		if(d[i] && d[i] != 2){
			dfs(i);
		}
	}
	
	ans = cnt = 0;
    //
	for(int i = 1 ; i <= n; i ++){
		if(d[i] == 2){
			cnt = 1;
			dfs(i);
			ans ++;
		}
	}
	
	if(ans == 1) cout << "Yes " << cnt << "\n";
	else cout << "No " << ans << "\n";
	for(int i = 1; i <= n ; i ++){
		g[i].clear();
	}
	
}
int main()
{
	int t; cin >> t;
	while(t --) solve();
	return 0;
}

RC-u5 工作安排

思路

题意可以转换为01背包,这是一个典型的01背包模型。外循环枚举事件,内循环枚举体积,最后遍历求最大值即可。

void solve()
{
    int n;
	cin >> n;
	vector<array<int,3>> vec(n + 1);
	for(int i = 1; i <= n ; i ++){
		int t,d,p;
		cin >> t >> d >> p;
		vec[i] = {d,t,p};
	}
	sort(vec.begin() + 1,vec.end());
	vector<int> l(n + 1),v(n + 1),w(n + 1);
	for(int i = 1; i <= n ;  i++){
		l[i] = vec[i][0];
		v[i] = vec[i][1];
		w[i] = vec[i][2];
	}
	vector<int> dp(5050);
	for(int i = 1;i <= n ; i ++){
		for(int j = 5000; j >= 0; j --){
			if(j >= v[i] && j <= l[i]){
				dp[j] = max(dp[j - v[i]] + w[i],dp[j]);
			}
		}
	}
	ll maxx = 0;
	for(int i = 1; i <= 5000; i ++) maxx = max(maxx,dp[i]);
	cout << maxx << endl;
}
signed main()
{
	int t; 
	t = 1;
	cin >> t;
	while(t --){
		solve();
	}
	return 0;
}

http://www.niftyadmin.cn/n/5558170.html

相关文章

Adobe Photoshop 2024 25.9.1 Win/Mac PS2024最新中文学习版

Adobe Photoshop 2024&#xff0c;简称PS&#xff0c;目前最强的图片处理合成软件,PS提供了广泛的工具和功能&#xff0c;包括画笔、铅笔、颜色替换、混合器画笔等绘画工具&#xff0c;以及裁剪、透视变形、智能修复画笔等编辑工具。用户可以使用这些工具进行图片编辑、合成、校…

【Linux】进程信号 --- 信号产生

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

鸿蒙系统在服装RFID管理中的应用:打造智能零售新时代

​随着物联网技术的迅速发展&#xff0c;服装零售行业正面临着新的变革与挑战。鸿蒙系统作为新一代智能操作系统&#xff0c;结合RFID技术&#xff0c;为服装行业提供了高效、智能的管理解决方案。常达智能物联&#xff0c;作为RFID技术的领先企业&#xff0c;致力于将鸿蒙系统…

一篇文章认识Servlet并安装【Tomcat】

web后端开发环境搭建 web后端(javaEE)程序需要运行在服务器中的. 这样前端才可以访问得到. 什么是服务器? 解释1: 服务器就是一款软件,可以向其发送请求,服务器会做出一个响应.可以在服务器中部署文件,让他人访问解释2: 也可以把运行服务器软件的计算机也可以称为服务器 安…

对象存储解决方案:高性能分布式对象存储系统MinIO

文章目录 引言I 自动化数据管理界面1.1 图形用户界面:GUI1.2 命令行界面:MinIO CLI1.3 应用程序编程接口:MinIO APIII 部署集成2.1 静态端口分配2.2 将NGINX用作反向代理,配置负载。III 基础概念3.1 为什么是对象存储?3.2 MinIO支持哪些系统拓扑结构?3.3 时间同步3.4 存储…

小程序 - - - - - 实现渐隐渐显(监听滚动距离版)

代码如下&#xff1a; <!-- fixed-left --> <view class"fixed-box" animation"{{animationData}}">这里是渐隐渐显的标签 </view>.fixed-box {position: fixed;left: 0;top: 0;z-index: 999;background-color: #ccc;/* background-colo…

xml 标记语言介绍

XML&#xff08;可扩展标记语言&#xff09;是一种标记语言&#xff0c;其设计宗旨是简单、通用、自我描述。XML文档由一系列元素&#xff08;elements&#xff09;组成&#xff0c;这些元素可以包含属性&#xff08;attributes&#xff09;和文本内容。下面是XML标签的基本格式…

Spring与设计模式总览

Spring框架中的设计模式详解 Spring框架不仅是Java企业级开发的主力军&#xff0c;其设计还蕴含了大量经典设计模式。这些模式贯穿于Spring的核心组件中&#xff0c;提升了框架的可维护性和扩展性。本文将深入探讨Spring框架中常见的设计模式及其应用。 1. 工厂模式&#xff…