UVa 10160 Servicing stations解题报告

验证(uvm常见问题)--子类和父类的句柄和对象问题 sv中的子类和父类 在sv中,有如下两个类,child继承于parent。然后在test module中,正确转换的方法如下面所示。其中c1,c2,p1 都指向了同一个子类的对象c1。总结如下: 一个子类的对象是包括子类的成员变量,方法和父类的成员变量,方法。 子类的句柄c1可以直接赋值给父类的句柄p1,此时p1只可以访问父类的成员变量和方法,或者子类的虚方法,比如下面调用p1.display是... 阅读详情

UVa 10160 Servicing stations


A company offers personal computers for sale in N towns (3 <= N <= 35). The towns are denoted by 1, 2, ..., N. There are direct routes connecting M pairs from among these towns. The company decides to build servicing stations in several towns, so that for any town X, there would be a station located either in X or in some immediately neighbouring town of X.

    一家提供个人电脑的公司在N个镇出售电脑(3<= N<=35)。城镇被记为1,2,...,N,这些城镇之间有M条路相连。该公司决定在几个城镇建立服务站,使得对于任何城镇X,都会有在X或在某些与X直接相邻的城镇设立服务站。

Write a program for finding out the minumum number of stations, which the company has to build, so that the above condition holds.

    写一个程序找到满足要求的最少的服务站数。

Input 

输入

The input consists of more than one description of town (but totally, less than ten descriptions). Every description starts with number N of towns and number M of pairs of towns directly connected each other. The integers N and M are separated by a space. Every one of the next M rows contains a pair of connected towns, one pair per row. The pair consists of two integers for town's numbers, separated by a space. The input ends with N = 0 and M = 0.

    输入的数据由多组关于小镇的描述组成(不过总数不会超过10组)。每组数据首先是城镇的数量N和道路的数量M。N和M之间用一个空格隔开。接下来的M行每行给出一对城镇,表示这两个城镇之间有路,每两个城镇之间用一个空格隔开。当N=0且M=0时结束。

Output

输出

For every town in the input write a line containing the obtained minimum.

输出能覆盖所有城镇的最少服务站数。

An example:

Input:

8 12
1 2
1 6
1 8
2 3
2 6
3 4
3 5
4 5
4 7
5 6
6 7
6 8
0 0

Output:

2

    这是来源于编程挑战上的一道搜索题,也是一道相对来讲比较好写的深搜。基础的思路比较好想,只需要从第一个点开始枚举,直到所有的点都被覆盖,寻找最优解。但是如果这样裸搜的话,35的范围是一定会炸的,所以要考虑一些剪枝。

    首先可以发现,如果在某一个点建立一个服务站后,所能覆盖的点数量并没有增加,那我们还不如不放。

    然后如果一条路走到一半,就发现此时设置的服务站数已经大于或是等于当前的最优解,那这条路就可以剪了。

    接下来进一步思考还可以发现,如果在初始化的时候,将每个点所能覆盖的点按照编号从小到大排序,那么在接下来深搜的时候,如果搜到当前点时,编号小于当前点 并且没有被覆盖的点 所能通向的点中 最大编号的点 也小于当前点的编号,那么就可以放弃这条路了,因为继续向下搜也不可能覆盖这个点了。实践证明,做到这三个剪枝就可以A了,不过还有几个优化可以使用(A了以后想出来的,懒得去再实现了0.0....):

    1.如果一个点a所能通向的点只有一个点b,那么b点一定要建一个服务站。如果一个点没有能通向的点,则该点处一定要建一个服务站。

    2.可以在每次建站完后动态修改每个点此时能通向还未被覆盖的点的数量,然后优先考虑能通向还未被覆盖的点多的点,这样根据上面的剪枝可以更快找到最优解。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define N 36
using namespace std;
int n,m,minn;
int a[N][N],f[N],c[N];
bool cmp(const int &x,const int &y)
{
	return x>y;
}
void put(int x,int k,int s)
{
	if (k==n && s<minn) minn=s;
	if (s>=minn) return;
	for (int i=1; i<=x; i++)
		if (!f[i] && x>a[i][1]) return;
	put(x+1,k,s);
	int v=0,b[N];
	for (int i=1; i<=c[x]; i++)
	  if (!f[a[x][i]])
	  {
		f[a[x][i]]=true;
		b[++v]=a[x][i];
	  }
	if (!v) return;
	else s++,k+=v;
	put(x+1,k,s);
	for (int i=1; i<=v; i++) f[b[i]]=false;
}
int main()
{
	while (scanf("%d%d",&n,&m)==2)
	{
		if (!n && !m) break;
		minn=n+1;
		memset(a,0,sizeof(a));
		memset(c,0,sizeof(c));
		memset(f,false,sizeof(f));
		for (int i=1; i<=m; i++)
		{
			int x,y;
			scanf("%d%d",&x,&y);
			a[x][++c[x]]=y;
			a[y][++c[y]]=x;
		}
		for (int i=1; i<=n; i++)
		{
			a[i][++c[i]]=i;
			sort(a[i]+1,a[i]+c[i]+1,cmp);
		}
		put(1,0,0);
		printf("%d\n",minn);
	}
	return 0;
}


手把手教你玩转服务器芯片架构--​​7.1 项目1:基于FPGA的RISC-V软核设计(Verilog实现核心指令执行单元)​ 本文介绍了基于FPGA的RISC-V软核设计实践项目。项目采用Verilog实现RV32I指令集核心处理器,包含指令解码、ALU、寄存器堆等关键模块设计,并通过功能仿真验证。在Xilinx Artix-7 FPGA上完成综合与部署,资源利用率控制在5%以内。最后探讨了五级流水线优化、指令集扩展等进阶方案。该实践完整覆盖了从指令集设计、RTL实现到FPGA部署的全流程,可作为学习处理器架构与FPGA开发的典型案例。 阅读详情

相关推荐

深入解析fio Benchmark测试:从源码到实践

本文深入解析fio Benchmark测试工具,从入门指南到源码架构分析,详细介绍了其核心模块、关键数据结构和I/O处理机制。通过实战案例展示如何优化存储性能测试,包括内存对齐、多线程调优等技巧,帮助开发者充分利用fio进行精准的存储性能评估。

weixin_42563415的博客 208

Servicing stations +uva+回溯+剪枝

Problem D: Servicing stations A company offers personal computers for sale in N towns (3 <= N <= 35). The towns are denoted by 1, 2, ..., N. There are direct routes connecting M pairs from among th

u012870383的专栏 633

Tesla V100 Windows 部署实战:从驱动安装到模式切换的避坑指南

本文是一份详细的Tesla V100在Windows系统下的部署实战指南。文章从硬件组装、系统选择讲起,重点阐述了驱动安装的正确方法,并深入剖析了将计算卡从TCC模式切换至WDDM模式的诱惑与潜在陷阱。最终,作者推荐保持默认TCC模式,并提供了使用nvidia-smi命令行等稳定可靠的显卡监控方案,旨在帮助用户避开常见坑点,高效利用这张专业计算卡进行AI计算等任务。

java5的博客 1711

uva 10160 Servicing Stations(DFS+剪枝)

Servicing stations A company offers personal computers for sale in N towns (3 <= N <= 35). The towns are denoted by 1, 2, ..., N. There are direct routes connecting M pairs from among these tow

不慌不忙、不急不躁 2152

深入解析SOC芯片设计中DFT OCC与ATPG的协同优化策略

本文深入探讨了在复杂SOC芯片设计中,DFT(可测试性设计)的核心组件OCC(片上时钟控制器)与ATPG(自动测试向量生成)的协同优化策略。文章从基本原理出发,分析了OCC作为测试时钟管理者的关键作用,以及ATPG作为故障检测引擎的工作机制,并重点阐述了二者在测试架构选择、参数对齐、低功耗测试等场景下的协同方法与实战技巧,旨在实现更高的测试覆盖率与更低的测试成本。

efc123456的博客 1035

SAP-ABAP:新手入门篇——从0到1写出你的第一个ABAP Hello World程序并完成调试运行

本文是ABAP开发入门指南,详细介绍如何创建并运行第一个"Hello World"程序。主要内容包括:通过SE38事务码进入ABAP编辑器;创建以Z/Y开头的程序并保存为本地对象;编写简单的WRITE输出语句;完成语法检查、激活和执行流程;以及初步体验调试功能。文章特别强调ABAP开发的规范要求,如程序命名规则、激活与保存的区别等,并提供了详细的步骤说明和常见问题提示,帮助零基础开发者快速上手ABAP编程。

baidu_35680696的博客 480

uva 10160 Servicing Stations

题目地址: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1101 题目描述: Problem D: Servicing stations A company offers personal computers for sale i

心之所向,无惧无悔! 2030

知识图谱-构建:知识图谱构建流程【本体构建、知识抽取(实体抽取、 关系抽取、属性抽取)、知识表示、知识融合、知识存储】

旅游领域的类是用来描述旅游的抽象化概念术语,是对众多旅游个体共性的概念化描述。术语是划分类的基础,根据构建领域本体的目标和具体需要,可以确定哪些术语能作为领域本体的类。在以上抽取的众多旅游领域术语中,有些是能直接作为类的,如旅游、人物、交通方式、景区等等,而有些则不能作为类,如票价、景区门票、联系方式等等,它们只是属性。“旅游”很明显是最顶层的类,是父类。然后,要确定旅游的子类,根据大众标签里体现的共性和《中国分类主题词表》确定了旅游领域的11个核心概念,即本体层次结构图数据属性(固有属性)...

u013250861的博客 4万+

uva 10160 Servicing stations

参考uva 10160 Servicing Stations(DFS+剪枝) #include "stdio.h" #include "string.h" #include "algorithm" using namespace std; //map保存联通关系,vis保存是否有服务,son记录每个点与他联通点的个数 int map[40][40],vis[40],son[40],n,m

禅境花园 999

【01】总目录——软件设计师50讲通关地图|从零基础到工程师职称

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏的01篇总目录,系统梳理了50篇博文的完整架构与核心逻辑。专栏覆盖软考软件设计师(中级)全部考点,分为导学规划、基础知识、设计模式、下午题专项、算法实战、冲刺模拟、收官进阶七大模块,既兼顾上午题75道单选题的理论攻坚,也聚焦下午题案例分析的解题能力提升。每篇博文均包含考点精讲、真题解析、实战技巧与速记方法,配套可运行代码、解题模板及备考资源。无论你是零基础转行、在校学生还是在职程序员,都能通过这份学习地图明确进度、精准定位薄弱环节,高效搭建知识体系

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1281

Unity零基础到入门☀️| 万字教程 讲解Unity中的数据存储 PlayerPrefs、XML、JSON【建议收藏】

本文章是Unity零基础到入门专栏的系列文章。 适合对Unity3D引擎感兴趣的小伙伴学习,偏向于新手学习! 本篇文章就来介绍一下Unity中三种基本的数据存储方式:PlayerPrefs、XML、JSON

努力前行,总会成为自己心中的那道光 8万+

UVa 10160 - Servicing Stations

算法思路:回溯,暴力。 以下转载了两个版本: 版本1 0.032msAC。 // Servicing Stations (服务站) // PC/UVa IDs: 110804/10160, Popularity: B, Success rate: low Level: 3 // Verdict: Accepted // Submission Date: 2011-08-10 // UVa

liuzhushiqiang的专栏 764

uni-app - 最详细 H5 网页接入微信登录功能,提供公众号配置与详细注释示例代码(移动端网页实现点击登录按钮后 调用微信公众号授权登录功能 详细讲解接入流程与详细示例代码)官方最新超级详细教程

uniapp中H5微信登录,uniapp H5微信授权登录,微信公众号第三方网页(H5)授权登录(OAuth2.0)流程及逻辑详细教程,UNIAPP 开发H5 怎么实现微信公众号登录功能,uniapp如何实现H5网页的公众号微信登录,怎么做uniapp微信登录,uniapp h5项目怎么实现微信登录的功能,uniapp微信浏览器H5授权微信登录,UniApp开发H5接入微信登录的全过程,uniapp的H5页面使用微信登录,uniapp H5微信授权登录,H5之微信授权登陆 (uniapp网页版微信授权登录)

🏆 前端领域优质创作者 7409

uva10160 Servicing Stations

这道题我各种坑,各种条件写错。。。总之自己

cgjiayou 538

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

uva10160 Servicing Stations

The input consists of more than one description of town (but totally, less than ten descriptions). Every description starts with number N of towns and number M of pairs of towns directly connected

keshuqi的博客 481

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

UVa Problem 10160 Servicing Stations (服务站)

// Servicing Stations (服务站) // PC/UVa IDs: 110804/10160, Popularity: B, Success rate: low Level: 3 // Verdict: Accepted // Submission Date:

寂静山林 4075

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

UVA 10160 Servicing Stations

分析给定一些城镇和相邻关系,如果要建造服务站,服务站只能服务建造地所在的城镇和其相邻的城镇,问最少要建几个服务站?对每一个城镇,判断是否需要在此处建造服务站,即相邻的城镇是否还需要建站。如果不需要则此处不建站(如该镇自身未建站则需建站)。继续判断下一个城镇。这里进行了一定剪枝,如果当前城镇之前的城镇未能享受服务,并且其相邻的最大城镇小于当前城镇,即不可能再使之前那个城镇享受到服务,所以这种安排是不可

已注销的博客 449

UVA - 10160 Servicing Stations 剪枝+回溯

题目大意:给你N个点,M个相连信息,求最少要在几个点放置服务器才能让所有的点都被覆盖到,放置服务器的点只能把本身和相邻的点覆盖 解题思路:点只存在放还是不放置服务器两中选择,不剪枝的话就会超时,毕竟是2^35,剪枝的话,包括三种情况 1.当前放置服务器的点大于需要放置的最小值,既然大于了最优情况了,就不必要继续在递归下去了 2.放置服务器的点不影响其他点的状态,那么放置该点就没有意义了,因为

静静地码 867

uva 10160 Servicing Stations

/状态压缩 /* 是状态压缩的代码 我只能表示 网上某个大神写的就是不一样 状态压缩 1.解法需要保存一定的状态数据(表示一种状态的一个数据值),每个状态数据通常情况下是可以通过2进制来表示的。这就要求状态数据的每个单元只有两种状态,比如说棋盘上的格子,放棋子或者不放,或者是硬币的正反两面。这样用0或者1来表示状态数据的每个单元,而整个状态数据就是一个一串0和1组成的二进制数。

最爱她! 398

UVA - 10160 Servicing Stations(回溯+剪枝)

Problem D: Servicing stations A company offers personal computers for sale in N towns (3 <= N <= 35). The towns are denoted by 1, 2, ..., N. There are direct routes connecting M pairs from among th

小G的ACM之路 1044

Servicing Stations UVA - 10160

题目链接: https://vjudge.net/problem/UVA-10160 题意: 用最小的顶点覆盖尽可能多的城市 思路: dfs+剪枝+回溯 对于每个城市可以分为选或者不选两种选择,主要在于剪枝的部分。 具体见注释,剪枝2不太好想,如果当前点v之前的点有邻居小于v,那么就停止进一步搜索,因为在之前有小的点没有被覆盖。 #include&amp;lt;iostream&amp;gt; #include&amp;...

机器学习,数据挖掘算法爱好者 316

UVA 10160 - Servicing Stations

#include #define ll long long long long st[40], later[40]; int num, n, m; bool DFS(long long build, int step, int cur) { if (build == ((ll)1 << n) -1) return true; if (step == num) return fal

Bingo 1906

[UVA 10160] Servicing Stations (DFS回溯 + 剪枝)

Servicing Stations 题目链接: http://acm.bnu.edu.cn/bnuoj/problem_show.php?pid=18578 题目大意: 在一个镇上有N个车站,其中有M条道路连通,现在需要在若干个车站装上服务站,而每一个服务站能够服务该站与该站直接相连的车站,问最少需要装多少服务站。 解题思路: 由于车站最多为35个。如果暴力枚举,2^35次肯

SIOFive的专栏 1026

UVA 10160 Servicing Stations(深搜 + 剪枝)

Problem D: Servicing stations A company offers personal computers for sale in N towns (3 <= N <= 35). The towns are denoted by 1, 2, ..., N. There are direct routes connecting M pairs from amon

Remilia's 1511

UVA10160 Servicing Stations

题目大意:   有n个城市(n<=35),其中某些城市有边相连。如果在某一点放一个发电站,与他直接相邻的城市就可以得到供电。   虽然题目说的是有向图,但是实际上处理的时候是无向图。这是根据样例分析出来的。   换种理解就是求一幅无向图的最小支配集。也就是在图中找到点数最少的一个点集,使得其他所有的点都和点集中点(一个或多个)有边相连。    参考博客:http://bl...

weixin_30616969的博客 162
上一篇: Uva 120 Stacks of Flapjacks 解题报告
下一篇: 线段树学习——入门篇
morestep
博客等级 码龄12年 20粉丝 88原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值