CSP-S 2025 提高级模拟赛 Day6 复盘 B.连通子图

news/2025/10/13 21:52:22/文章来源:https://www.cnblogs.com/NotMonika/p/19139486

题意

给定正整数 \(k\),求构造一棵树,使得包含了1号点的连通子图个数恰好为 \(k\)

赛时做法

没想出来,骗了个 \(n\leq60\) 的20pts部分分(输出一条长度为 \(k\) 的链,此时一定有 \(k\) 个联通子图)

#include<bits/stdc++.h>
#include<bits/extc++.h>
using namespace std;
using namespace __gnu_cxx;
using namespace __gnu_pbds;int k;
int main(){freopen("b.in","r",stdin);freopen("b.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);while(cin >> k){if(k<=60){cout << k << '\n';for(int i=1;i<k;i++){cout << i << ' ' << i+1 << '\n';}continue;}else if(k==118){cout << "13\n";cout << "1 2\n1 3\n1 4\n3 5\n3 6\n6 7\n6 8\n6 9\n9 10\n9 11\n";continue;}}
}

赛后分析

如果我们自下而上构造,在当前根节点下方添加一个子节点会使连通子图个数乘二,添加父节点会使连通子图个数加一。
考虑对 \(k\) 二进制拆分,从最高位开始按照位数构造,每次在当前根节点下方添加一个子节点,如果该位为 1 就新建一个父节点,并把父节点设置为根节点。
这个算法的节点数就为k在二进制下的位数+ \(k\) 在二进制下为1的位数,显然不会超过60 ,时间复杂度\(\mathcal{O}(\log k)\)

#include<bits/stdc++.h>
#include<bits/extc++.h>
using namespace std;
using namespace __gnu_cxx;
using namespace __gnu_pbds;
vector<pair<int,int>> g;
int k;
int main(){freopen("b.in","r",stdin);freopen("b.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);while(cin >> k){g.clear();int p=30;for(int i=29;i>=0;i--)if(k>>i&1){p=i;break;}int tot=0,r=0;for(int i=p;i>=0;i--){if(k>>i&1){tot++;if(r)g.emplace_back(tot,r);r=tot;}if(i)g.emplace_back(r,++tot);}cout << tot << '\n';for(auto p:g)cout << ((p.first-r+tot)%tot+1) << ' ' << ((p.second-r+tot)%tot+1) << '\n';}
}

总结

思维能力还是不行,要多练。

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

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

相关文章

基于Java的家政服务管理优秀的系统的设计与完成-计算机毕设 附源码05300

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Android Camera openCamera - 教程

Android Camera openCamera - 教程pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…

大作业第一阶段验收小组集体加5分 -

大作业第一阶段验收小组集体加5分任务二 小组:郝正一,文利,武浩翔 验收集体加5分

业务定义与指标体系搭建

一、指标 1、什么是指标? 定义:衡量目标的方法,构成要素有维度+汇总方式+度量 2、好的指标 = 可比较(增量>全量,优先比率/比例,慎用绝对值) + 预见性(领先>滞后) + 行动导向(过程型 > 结果性) 3、…

Linux使用笔记

Linux使用笔记Ubuntu替换“系统启动界面”图片sudo cp yourlogo.png /usr/share/plymouth/themes/spinner/watermark.png // 若要替换“登录”界面的图片: sudo cp yourlogo.png /usr/share/plymouth/Ubuntu-logo.png…

[Vulhub靶机]W1R3S靶机渗透

[红队渗透]Vulhub-W1R3S靶机渗透 靶机W1R3S下载地址以及配置: https://download.vulnhub.com/w1r3s/w1r3s.v1.0.1.zip 直接使用nat模式把靶机设置为和攻击机(kali)同一个网段 kali:192.168.88.133渗透流程思路: 1.信…

基于zynq实现一个边缘识别视频流(预学习HLS篇)

视频流通了之后,我要在上面添加算法模块,手撕verilog可能比较慢,可以先尝试使用hls。 前面通过block design搭建视频流通路,然后SDK控制写入分辨率这些东西,现在如果要加入算法模块简单实现边缘识别,必须先学习h…

centos7 离线安装mysql8 并建立主从架构

centos7 离线安装mysql8 并建立主从架构pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mo…

2025/10/13

2025/10/13学习Java界面如何设置

项目计划管理实战:从“纸上谈兵”到“动态导航”的艺术 - 实践

项目计划管理实战:从“纸上谈兵”到“动态导航”的艺术 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Co…

设计文档规范

文档标题和作者信息​ 在文档的开头包括标题和作者信息,以便其他团队成员可以轻松识别文档的内容和负责人。​ 目的和背景 说明文档的目的和背景,包括项目的背景信息、需求和目标。​ 需求 / 用例 case​ 描述清楚实…

实用指南:Apache Doris 4.0 AI 能力揭秘(二):为企业级应用而生的 AI 函数设计与实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

QAxios研发笔记(一):在Qt环境下,构建Promise风格的Get请求接口 - 指南

QAxios研发笔记(一):在Qt环境下,构建Promise风格的Get请求接口 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family:…

10月13日日记

1.今天早上上了数据结构的相关课程,下午学习java 2.明天上工程实训的课 3.方法重载中的方法返回值能不能作为其判断条件?不能。

分享一个知乎高赞回答生成AI指令:让技术人也能写出有深度的回答

技术人写作和写代码完全是两回事。代码讲究逻辑严谨,而写作需要故事性、共鸣感和可读性。这个矛盾让很多技术大牛的优质经验无法有效传播。最近我整理了一个AI指令模板,专门用于生成高质量的知乎回答。配合DeepSeek、…

【知识总结】数据库的事务、并发与锁管理

【知识总结】数据库的事务、并发与锁管理Posted on 2025-10-13 21:22 江城2211 阅读(0) 评论(0) 收藏 举报事务的四大属性(ACID) Atomicity(原子性):一个事务中的所有操作,要么全部完成,要么全部不完成,不…

实用指南:C语言速成秘籍——循环结构(while、do while、for)和跳转语句(break,continue)

实用指南:C语言速成秘籍——循环结构(while、do while、for)和跳转语句(break,continue)pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !importa…