hdu5385(2015多校8)--The path(贪心,搜索)

2024-08-25 00:38

本文主要是介绍hdu5385(2015多校8)--The path(贪心,搜索),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:点击打开链接

题目大意:给出一个有向图,求1到其它点的最短距离,要求dis[1] < dis[2]....dis[x] ... > dis[n-1] > dis[n] (1 < x <= n)

给出符合条件的每条边的边长(1<=边长<=n)

设置vis标记点是否已经存在,从左边开始逐个搜索,如果点已经存在那么继续遍历,否则换方向遍历(从右开始遍历),因为题目保证存在输出,所以一定可以遍历完所有的。

按照被遍历到的时间也就是dis的值,然后在按照(u,v) = abs(dis[u]-dis[v]),推出边的长度。

注意边的长度是1到n,如果值是0,也是设为n

#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std ;
#define maxn 100010
struct node{int u , v , next ;
}edge[maxn] , p[maxn] ;
int head[maxn] , cnt ;
int vis[maxn] , dis[maxn] , num , n , l , r ;
void add(int u,int v) {edge[cnt].v = v ; edge[cnt].next = head[u] ;head[u] = cnt++ ;
}
void solve(int &i,int k) {while( i > 0 && i <= n ) {if( !vis[i] ) return ;if( dis[i] != -1 ) return ;dis[i] = num++ ;for(int j = head[i] ; j != -1 ; j = edge[j].next) {vis[edge[j].v] = 1 ;}i += k ;}
}
int main() {int t , m , v , i , j , k ;//freopen("1006.in","r",stdin) ;//freopen("111.out","w",stdout) ;scanf("%d", &t) ;while( t-- ) {scanf("%d %d", &n, &m) ;memset(head,-1,sizeof(head)) ;memset(vis,0,sizeof(vis)) ;memset(dis,-1,sizeof(dis)) ;cnt = 0 ;for(i = 0 ; i < m ; i++) {scanf("%d %d", &p[i].u, &p[i].v) ;add(p[i].u,p[i].v) ;}vis[1] = 1 ;l = 1 ; r = n ;num = 0 ;while(l <= r) {solve(l,1) ;solve(r,-1) ;}for(i = 0 ; i < m ; i++) {k = abs(dis[ p[i].u ]-dis[ p[i].v ]) ;if( !k ) k = n ;printf("%d\n", k ) ;}}return 0 ;
}


这篇关于hdu5385(2015多校8)--The path(贪心,搜索)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104069

相关文章

Python使用DeepSeek进行联网搜索功能详解

《Python使用DeepSeek进行联网搜索功能详解》Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用P... 目录一、环境准备与依赖安装二、DeepSeek简介三、联网搜索与数据集准备四、实践示例:图像分类1.

解决jupyterLab打开后出现Config option `template_path`not recognized by `ExporterCollapsibleHeadings`问题

《解决jupyterLab打开后出现Configoption`template_path`notrecognizedby`ExporterCollapsibleHeadings`问题》在Ju... 目录jupyterLab打开后出现“templandroidate_path”相关问题这是 tensorflo

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

python中os.stat().st_size、os.path.getsize()获取文件大小

《python中os.stat().st_size、os.path.getsize()获取文件大小》本文介绍了使用os.stat()和os.path.getsize()函数获取文件大小,文中通过示例代... 目录一、os.stat().st_size二、os.path.getsize()三、函数封装一、os

C# ComboBox下拉框实现搜索方式

《C#ComboBox下拉框实现搜索方式》文章介绍了如何在加载窗口时实现一个功能,并在ComboBox下拉框中添加键盘事件以实现搜索功能,由于数据不方便公开,作者表示理解并希望得到大家的指教... 目录C# ComboBox下拉框实现搜索步骤一步骤二步骤三总结C# ComboBox下拉框实现搜索步骤一这

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

hdu1240、hdu1253(三维搜索题)

1、从后往前输入,(x,y,z); 2、从下往上输入,(y , z, x); 3、从左往右输入,(z,x,y); hdu1240代码如下: #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#inc

usaco 1.3 Barn Repair(贪心)

思路:用上M块木板时有 M-1 个间隙。目标是让总间隙最大。将相邻两个有牛的牛棚之间间隔的牛棚数排序,选取最大的M-1个作为间隙,其余地方用木板盖住。 做法: 1.若,板(M) 的数目大于或等于 牛棚中有牛的数目(C),则 目测 给每个牛牛发一个板就为最小的需求~ 2.否则,先对 牛牛们的门牌号排序,然后 用一个数组 blank[ ] 记录两门牌号之间的距离,然后 用数组 an

poj 3190 优先队列+贪心

题意: 有n头牛,分别给他们挤奶的时间。 然后每头牛挤奶的时候都要在一个stall里面,并且每个stall每次只能占用一头牛。 问最少需要多少个stall,并输出每头牛所在的stall。 e.g 样例: INPUT: 51 102 43 65 84 7 OUTPUT: 412324 HINT: Explanation of the s

poj 2976 分数规划二分贪心(部分对总体的贡献度) poj 3111

poj 2976: 题意: 在n场考试中,每场考试共有b题,答对的题目有a题。 允许去掉k场考试,求能达到的最高正确率是多少。 解析: 假设已知准确率为x,则每场考试对于准确率的贡献值为: a - b * x,将贡献值大的排序排在前面舍弃掉后k个。 然后二分x就行了。 代码: #include <iostream>#include <cstdio>#incl