题目:

给定一颗树··在保证有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模拟 贪心)相关推荐

  1. 【刷题汇总】 CSP/NOIP真题分析 基础OJ刷题包

    1.NOIP与CSP-J/S的历年真题分析汇总 序号 标题 内容 属性 1 CSP-J2-2021 解题报告 J组真题讲解 题解包 2 CSP-J2-2020 解题报告 J组真题讲解 题解包 3 CS ...

  2. 刷题-Leetcode-860. 柠檬水找零(贪心)

    860. 柠檬水找零 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/lemonade-change/ 著作权归领扣网络所有.商业转载 ...

  3. 机试备考——刷题攻略

      为了准备保研的机试,在学习完常见算法后,开始了刷题!看了一些大佬的心得分享,总结了一下.   题目类型分为:   数组.字符串.高精度计算.排序.递推.递归.搜索与回溯.贪心算法.分治算法.动态规 ...

  4. python基础刷题_数据结构与算法LeetCode刷题(Python)

    参考资料: 一.链表 1.  链表的必备知识要点(包括基础知识.刷题中使用的STL等知识) 2.  链表逆序(LeetCode 92 ,206. Reverse Linked List 1,2) 3. ...

  5. ​LeetCode刷题实战584:寻找用户推荐人

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  6. ​LeetCode刷题实战577:员工奖金

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  7. 面试算法LeetCode刷题班—BAT面试官带你刷真题、过笔试

    课程名称: <面试算法LeetCode刷题班> --BAT面试官带你刷真题.过笔试 主讲老师: 林老师 BAT资深研发工程师(T7/P8级),致力于搜索引擎及其子系统的研发.迭代与优化,数 ...

  8. c语言贪心算法合并箭,LeetCode刷题题库:贪心算法

    LeetCode刷题笔记:贪心算法 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...

  9. C#LeetCode刷题-贪心算法

    贪心算法篇 # 题名 刷题 通过率 难度 44 通配符匹配 17.8% 困难 45 跳跃游戏 II 25.5% 困难 55 跳跃游戏 30.6% 中等 122 买卖股票的最佳时机 II C#LeetC ...

最新文章

  1. 自定义SeekBarPreference控件(老外出品,直接在preferences文件中使用,无需其他代码)...
  2. JavaScript原生的节点操作
  3. Endnote教程 : 仅需两步,一键转化参考文献为纯文本
  4. 7-67 使用二维数组实现Matrix(矩阵)。 (60 分)
  5. 在SAP C4C里触发SAP ERP的ATP check和Credit check
  6. Java 数组常用操作一(排序、元素位置查找、添加元素、获取长度、数组反向、最大值最小值、合并、范围填充)
  7. javascript 代码分离 的那些事儿
  8. offline 与 online 事件监听浏览器是否在线
  9. plsql developer 无法登录Oracle
  10. 《室内设计软件Sketch Up零初级入门视频教程》
  11. 元进Python(3)---如何实现IP子网掩码计算器功能?
  12. 哈夫曼编码与哈夫曼树
  13. onselect 与 onselectstart
  14. mysql如何上传音频文件_如何上传本地音乐获取MP3外链(欢迎分享和转载)
  15. jetson nano图形界面自动登录(lxde桌面自动登录)
  16. JavaCV音视频开发宝典:JavaCV使用gdigrab方式实现windows录屏(windows屏幕画面抓取/采集,可实现高帧率屏幕截屏、录屏功能)
  17. python笔迹识别_python_基于Scikit learn库中KNN,SVM算法的笔迹识别
  18. 2019年web前端就业前景和工资待遇
  19. 写得真励志,深度发展,成为不可替代的技术员
  20. i510400和i512400差距

热门文章

  1. 鑿婂瓙鏇版祴璇曡崏绋縶29C28FD771BA4B0D8693}
  2. 荣耀v40鸿蒙5g,荣耀V40pro再曝光,4K屏+双5000万+鸿蒙OS,再见了荣耀V30pro
  3. 不同特权级代码段之间的跳转
  4. fibonacci的几种实现及尾递归
  5. STM32的IIC应用详解1
  6. STM32F030控制LED
  7. UART0串口编程(一):通信协议设计;RS232标准
  8. BIOS INT 10中断功能
  9. linux(ubuntu版本)安装tengine
  10. python三十八:re模块