LA3902网络
题意:
给你一棵树,所有叶子节点都是客户端,其他的都是服务器,然后问你最少在多少个服务器上安装VOD能使所有的客户端都能流畅的看视频,流畅看视频的条件是每个客户端距离他最近的安装VOD的服务器的距离不能超过k,而且题目已经给你在一个服务器上安装好了VOD。
思路:
自己没想出来,说下白书上的思路,第一个就是说当遇到无根树的时候,一般情况下把无根树变成有根数会有利于问题的解决,然后这个题目就是把给定的VOD服务器变成了树根,然后我们可以根据贪心策略,先处理深度最深的,安装VOD是在当前深度最深的上面第k个父亲那安装VOD这样是为了尽可能多的去让别的客户端能用上这个VOD,然后就是模拟这个过程了,这个思路是白书上说的,我想了一阵子,只是感觉有道理,但并不能肯定他的正确性,说白了就是还没弄清楚这样为什么是对的,以后会重新编辑这篇博客。
#include<stdio.h>
#include<string.h>
#define N 1000+5
#define N_node 1000 + 5
#define N_edge 2000 + 10
typedef struct
{
int to ,next;
}STAR;
STAR E[N_edge];
int list[N_node] ,tot;
int mark[N] ,mk[N] ,deep[N];
int dis[N][N] ,mer[N];
void add(int a ,int b)
{
E[++tot].to = b;
E[tot].next = list[a];
list[a] = tot;
}
//deep mark
void DFS1(int s ,int fa)
{
int mk = 0;
for(int k = list[s] ;k ;k = E[k].next)
{
int to = E[k].to;
if(to == fa) continue;
mk = 1;
mer[to] = s;
deep[to] = deep[s] + 1;
DFS1(to ,s);
}
mark[s] = !mk;
}
//dis
void DFS2(int sss ,int now ,int s ,int fa)
{
for(int k = list[s] ;k ;k = E[k].next)
{
int to = E[k].to;
if(to == fa) continue;
dis[sss][to] = now;
DFS2(sss ,now + 1 ,to ,s);
}
}
int main ()
{
int n ,s ,k ,i ,j ,t ,a ,b;
scanf("%d" ,&t);
while(t--)
{
scanf("%d %d %d" ,&n ,&s ,&k);
memset(list ,0 ,sizeof(list)) ,tot = 1;
for(i = 1 ;i < n ;i ++)
{
scanf("%d %d" ,&a ,&b);
add(a ,b) ,add(b ,a);
}
for(i = 1 ;i <= n ;i ++) mer[i] = i;
deep[s] = 0;
DFS1(s ,-1);
for(i = 1 ;i <= n ;i ++)
{
dis[i][i] = 0;
DFS2(i ,1 ,i ,-1);
}
memset(mk ,0 ,sizeof(mk));
for(i = 1 ;i <= n ;i ++)
if(mark[i] && dis[s][i] <= k)
mk[i] = 1;
int Ans = 0;
while(1)
{
int mkid = 0 ,maxdeep = 0;
for(i = 1 ;i <= n ;i ++)
{
if(!mark[i] || mk[i]) continue;
if(maxdeep < deep[i])
maxdeep = deep[i] ,mkid = i;
}
if(!mkid) break;
Ans ++;
int maxdis = 0 ,mknode = 0;
mknode = mkid;
for(i = 1 ;i <= k ;i ++)
mknode = mer[mknode];
for(i = 1 ;i <= n ;i ++)
{
if(!mark[i] || mk[i]) continue;
if(dis[mknode][i] <= k) mk[i] = 1;
}
}
printf("%d\n" ,Ans);
}
return 0;
}
LA3902网络的更多相关文章
- Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求
上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- 网络原因导致 npm 软件包 node-sass / gulp-sass 安装失败的处理办法
如果你正在构建一个基于 gulp 的前端自动化开发环境,那么极有可能会用到 gulp-sass ,由于网络原因你可能会安装失败,因为安装过程中部分细节会到亚马逊云服务器上获取文件.本文主要讨论在不变更 ...
- Virtual Box配置CentOS7网络(图文教程)
之前很多次安装CentOS7虚拟机,每次配置网络在网上找教程,今天总结一下,全图文配置,方便以后查看. Virtual Box可选的网络接入方式包括: NAT 网络地址转换模式(NAT,Network ...
- 前端网络、JavaScript优化以及开发小技巧
一.网络优化 YSlow有23条规则,中文可以参考这里.这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少. 1)合并压缩CSS.JavaScript.图片,静态资源CDN ...
- 猫哥网络编程系列:HTTP PEM 万能调试法
注:本文内容较长且细节较多,建议先收藏再阅读,原文将在 Github 上维护与更新. 在 HTTP 接口开发与调试过程中,我们经常遇到以下类似的问题: 为什么本地环境接口可以调用成功,但放到手机上就跑 ...
- C# 利用性能计数器监控网络状态
本例是利用C#中的性能计数器(PerformanceCounter)监控网络的状态.并能够直观的展现出来 涉及到的知识点: PerformanceCounter,表示 Windows NT 性能计数器 ...
- nginx源码分析之网络初始化
nginx作为一个高性能的HTTP服务器,网络的处理是其核心,了解网络的初始化有助于加深对nginx网络处理的了解,本文主要通过nginx的源代码来分析其网络初始化. 从配置文件中读取初始化信息 与网 ...
- [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化
KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...
随机推荐
- System.Net.Mail邮件发送抄送附件(多个)
/// <summary> /// 邮件发送抄送附件 /// </summary> /// <param name="mailTo">收件人(可 ...
- Amazon Connect 配置ccp端的soft phone配置(客服坐席工作站配置)
本文参考: Amazon Connect 配置ccp端的soft phone配置(客服坐席工作站配置) [官网]:https://aws.amazon.com/cn/connect/ 应用场景 在应 ...
- 靶场练习-Sqli-labs通关记录(盲注)
0x00 实验环境 本地:Win 10 靶场:sqli-labs(共65关,每日一关) 0x02 通关记录 简介:一天一关! (5)第五关: 由于此处与前四关有明显的差别,故在此我 ...
- windows 下使用vargant 搭建虚拟机服务
使用vagrant 下载 vagrant[https://www.vagrantup.com/downloads.html] 下载管理工具VirtualBox[https://www.virtualb ...
- InterJ idea 回滚提交的代码
如果你要回滚到这一次提交 ctrl shift k 提交 选force push 那么你的代码就回滚到你所想要的这次提交记录了
- Redis工具收费后新的开源已出现
作者:三十三重天 博客: zhouhuibo.club 引言 Redis工具哪家强,中国山东找蓝翔.哎呀,串台了. 众所周知,开源的最终还是收费. Reids Desktop 秉承了这一理念,苦逼的程 ...
- 解决springMVC https环境 jstlview redirect时变为http请求的问题
<property name="redirectHttp10Compatible" value="false" />
- 2018ICPC南京Problem G. Pyramid
题意: 询问类似于这样的三角形中:里面正三角形的个数是多少. 思路:打表找了个规律发现就是C4n+3 1 //#include<bits/stdc++.h> 2 #include& ...
- 攻防世界 reverse 进阶 APK-逆向2
APK-逆向2 Hack-you-2014 (看名以为是安卓逆向呢0.0,搞错了吧) 程序是.net写的,直接祭出神器dnSpy 1 using System; 2 using System.Diag ...
- springBoot高级:自动配置分析,事件监听,启动流程分析,监控,部署
知识点梳理 课堂讲义 02-SpringBoot自动配置-@Conditional使用 Condition是Spring4.0后引入的条件化配置接口,通过实现Condition接口可以完成有条件的加载 ...