刷题总结——拆网线(noip模拟 贪心)
题目:
给定一颗树··在保证有k个点与其它点连接的情况下问最少保留多少条边····
树的节点树n和k均小于100000;
题解:
很容易看出来我们要尽量保留那种一条边连两个节点的情况····
然后考试的时候我以为这就完了··xjb贪完心后错了一大半····
下次一定要写对拍了,艹
贪心的时候我们要沿着叶子节点来贪心···这样就能保证正确性了···证明的话就不细说了··不信的话打个对拍看看···
代码:
#include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<ctime> #include<cctype> #include<string> #include<cstring> #include<algorithm> using namespace std; const int N=1e5+5; int T,n,K,fst[N],nxt[N*2],go[N*2],tot,cnt,keep; bool del[N]; inline int R() {char c;int f=0;for(c=getchar();c<'0'||c>'9';c=getchar());for(;c<='9'&&c>='0';c=getchar()) f=(f<<3)+(f<<1)+c-'0';return f; } inline void comb(int a,int b) {nxt[++tot]=fst[a],fst[a]=tot,go[tot]=b;nxt[++tot]=fst[b],fst[b]=tot,go[tot]=a; } inline void pre() {cnt=tot=keep=0;memset(fst,0,sizeof(fst));memset(del,false,sizeof(del)); } inline void dfs(int u,int fa) {for(int e=fst[u];e;e=nxt[e]){int v=go[e];if(v==fa) continue;dfs(v,u);if(!del[v]&&!del[u]){if(keep<K){keep+=2;cnt++;del[v]=del[u]=true;}}} } int main() {//freopen("a.in","r",stdin);T=R();int a; while(T--) {n=R(),K=R();pre();for(int i=1;i<n;i++) a=R(),comb(i+1,a);dfs(1,0);if(keep>=K) cout<<cnt<<"\n";else cout<<cnt+(K-keep)<<"\n";}return 0; }
转载于:https://www.cnblogs.com/AseanA/p/7718675.html
刷题总结——拆网线(noip模拟 贪心)相关推荐
- 【刷题汇总】 CSP/NOIP真题分析 基础OJ刷题包
1.NOIP与CSP-J/S的历年真题分析汇总 序号 标题 内容 属性 1 CSP-J2-2021 解题报告 J组真题讲解 题解包 2 CSP-J2-2020 解题报告 J组真题讲解 题解包 3 CS ...
- 刷题-Leetcode-860. 柠檬水找零(贪心)
860. 柠檬水找零 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/lemonade-change/ 著作权归领扣网络所有.商业转载 ...
- 机试备考——刷题攻略
为了准备保研的机试,在学习完常见算法后,开始了刷题!看了一些大佬的心得分享,总结了一下. 题目类型分为: 数组.字符串.高精度计算.排序.递推.递归.搜索与回溯.贪心算法.分治算法.动态规 ...
- python基础刷题_数据结构与算法LeetCode刷题(Python)
参考资料: 一.链表 1. 链表的必备知识要点(包括基础知识.刷题中使用的STL等知识) 2. 链表逆序(LeetCode 92 ,206. Reverse Linked List 1,2) 3. ...
- LeetCode刷题实战584:寻找用户推荐人
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- LeetCode刷题实战577:员工奖金
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- 面试算法LeetCode刷题班—BAT面试官带你刷真题、过笔试
课程名称: <面试算法LeetCode刷题班> --BAT面试官带你刷真题.过笔试 主讲老师: 林老师 BAT资深研发工程师(T7/P8级),致力于搜索引擎及其子系统的研发.迭代与优化,数 ...
- c语言贪心算法合并箭,LeetCode刷题题库:贪心算法
LeetCode刷题笔记:贪心算法 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...
- C#LeetCode刷题-贪心算法
贪心算法篇 # 题名 刷题 通过率 难度 44 通配符匹配 17.8% 困难 45 跳跃游戏 II 25.5% 困难 55 跳跃游戏 30.6% 中等 122 买卖股票的最佳时机 II C#LeetC ...
最新文章
- 自定义SeekBarPreference控件(老外出品,直接在preferences文件中使用,无需其他代码)...
- JavaScript原生的节点操作
- Endnote教程 : 仅需两步,一键转化参考文献为纯文本
- 7-67 使用二维数组实现Matrix(矩阵)。 (60 分)
- 在SAP C4C里触发SAP ERP的ATP check和Credit check
- Java 数组常用操作一(排序、元素位置查找、添加元素、获取长度、数组反向、最大值最小值、合并、范围填充)
- javascript 代码分离 的那些事儿
- offline 与 online 事件监听浏览器是否在线
- plsql developer 无法登录Oracle
- 《室内设计软件Sketch Up零初级入门视频教程》
- 元进Python(3)---如何实现IP子网掩码计算器功能?
- 哈夫曼编码与哈夫曼树
- onselect 与 onselectstart
- mysql如何上传音频文件_如何上传本地音乐获取MP3外链(欢迎分享和转载)
- jetson nano图形界面自动登录(lxde桌面自动登录)
- JavaCV音视频开发宝典:JavaCV使用gdigrab方式实现windows录屏(windows屏幕画面抓取/采集,可实现高帧率屏幕截屏、录屏功能)
- python笔迹识别_python_基于Scikit learn库中KNN,SVM算法的笔迹识别
- 2019年web前端就业前景和工资待遇
- 写得真励志,深度发展,成为不可替代的技术员
- i510400和i512400差距