2024CAIP省赛


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

总结写在前面,就一句话

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

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;
}

相关推荐

  1. 2024CAIP

    2024-07-17 12:42:01       23 阅读
  2. 2024睿抗机器人开发者大赛CAIP编程题解(c++)

    2024-07-17 12:42:01       24 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-17 12:42:01       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-17 12:42:01       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-17 12:42:01       57 阅读
  4. Python语言-面向对象

    2024-07-17 12:42:01       68 阅读

热门阅读

  1. jekins 是如何知道git 提交了代码?

    2024-07-17 12:42:01       19 阅读
  2. MFC:文本可视化输出

    2024-07-17 12:42:01       22 阅读
  3. 七种软件设计原则

    2024-07-17 12:42:01       21 阅读
  4. 常见的排序算法,复杂度

    2024-07-17 12:42:01       17 阅读
  5. c#视觉应用开发中如何在C#中进行图像去伪影?

    2024-07-17 12:42:01       28 阅读
  6. @RequestPart和@RequestParam 区别和联系

    2024-07-17 12:42:01       22 阅读
  7. 聚合支付+分账系统体系

    2024-07-17 12:42:01       24 阅读
  8. 解释 Git 的基本概念和使用方式。

    2024-07-17 12:42:01       25 阅读
  9. SQL Error: 1406, SQLState: 22001

    2024-07-17 12:42:01       25 阅读
  10. cn.hutool.core.util.IdUtil.getSnowflake

    2024-07-17 12:42:01       25 阅读
  11. redistemplate介绍与演示

    2024-07-17 12:42:01       18 阅读
  12. Fixing a Binary String

    2024-07-17 12:42:01       27 阅读
  13. vue搜索框过滤--- computed、watch区别

    2024-07-17 12:42:01       25 阅读
  14. 洛阳建筑设计资质延期续期流程与所需材料

    2024-07-17 12:42:01       18 阅读
  15. ETG2000 5.3.9.2 Offline Dictionary DictionaryFile路径

    2024-07-17 12:42:01       23 阅读