poj 1026
这题一开始没看清楚
等级差距不超过1
1->2->3 就是错误的,因为3-1==2 ,意思是间接的也不行
其次等级最小是1,最大是n
你要到达1号首领的位置
假设1号等级x,限制m,最大上限hi,下限lo
hi - lo <= m
lo <= x <= hi
枚举 hi 和 lo
#include <iostream>
#include <cstdio>
#include <queue>
#include <cstring>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
const int maxn = ;
const int INF = 0x3f3f3f3f;
int m,n;bool vis[maxn];
int dis[maxn];
int arr[maxn][maxn];
int lv[maxn];
int mind = 0x3f3f3f3f;
void djs(int ,int );
int main()
{
int cnt = ;
memset(arr,0x3f,sizeof(arr));
memset(dis,0x3f,sizeof(dis));
memset(vis,,sizeof(vis));
memset(lv,0x3f,sizeof(lv));
scanf("%d%d",&m,&n);
for(int i = ; i <= n; ++i)
{
int mon,level,t;
scanf("%d%d%d",&mon,&level,&t);
lv[i] = level;
arr[][i] = mon;
for(int j = ; j <= t; ++j)
{
int c,d;
scanf("%d%d",&c,&d);
//e[cnt++] = node{i,d,c};
arr[c][i] = d;
}
}
for(int h = lv[] + m,l = lv[]; h >= lv[]; h --,l -- )
djs(h,l);
cout << mind << endl; }
void djs(int hi,int lo)
{
memset(dis,0x3f,sizeof(dis));
memset(vis,,sizeof(vis));
dis[] = ;
lv[] = hi;
for(int i = ; i <= n; ++i)
{
int index = -; int minn = 0x3f3f3f3f;
for(int j = ; j <= n; ++j)
{
if(vis[j]) continue;
if(index == - || minn > dis[j])
index = j,minn = dis[j];
}
vis[index] = true;
for(int j = ; j <= n; ++j)
{
if( (lo<=lv[j]&&lv[j]<=hi) || lv[index] == -)
dis[j] = min(dis[j],dis[index] + arr[index][j]);
}
}
mind = min(mind,dis[]);
}
poj 1026的更多相关文章
- poj3270 && poj 1026(置换问题)
| 1 2 3 4 5 6 | | 3 6 5 1 4 2 | 在一个置换下,x1->x2,x2->x3,...,xn->x1, 每一个置换都可以唯一的分解为若干个不交的循环 如上面 ...
- POJ 1026 Cipher(置换群)
题目链接 题意 :由n个数字组成的密钥,每个数字都不相同,都在1-n之间,有一份长度小于等于n的信息,要求将信息放到密钥下边,一一对应,信息不足n的时候补空格,然后将位置重新排列,将此过程重复k次,求 ...
- poj 1026 Cipher
置换群就可以搞定!!! 注意下格式就好了…… #include<iostream> #include<stdio.h> #include<algorithm> #i ...
- poj 1026(置换群)
题意:给你一个变换规则,和一个字符串,问经过k次变换后得到的字符串. 思路:开始的时候试图去找它的整个周期,谁知道周期太大了,各种RE,后来在得知此题需要用置换群来优化,第一次接触置换群学习了下! 代 ...
- POJ 1026 Cipher(更换)
Cipher Time Limit: 1000MS Memory Li ...
- POJ 1026 置换群的k次幂问题
题目大意: 给定了一组对应关系,经过k次幂后,得到新的对应关系b[i],然后将给定的字符串上的第i位字符放置到b[i]的位置上, 如果字符串长度不足n就用空格补足,这里的是空格,也就是str[i] = ...
- poj很好很有层次感(转)
OJ上的一些水题(可用来练手和增加自信) (POJ 3299,POJ 2159,POJ 2739,POJ 1083,POJ 2262,POJ 1503,POJ 3006,POJ 2255,POJ 30 ...
- POJ题目分类推荐 (很好很有层次感)
著名题单,最初来源不详.直接来源:http://blog.csdn.net/a1dark/article/details/11714009 OJ上的一些水题(可用来练手和增加自信) (POJ 3299 ...
- acm数学(待续)
意图写出http://www.cnblogs.com/kuangbin/archive/2012/08/28/2661066.html这个东西的完善版. 1.置换,置换的运算 poj 2369 Per ...
随机推荐
- Docker registry垃圾回收
Docker registry垃圾回收 通过: docker run -p 5000:5000 -v /netdata/xxxx/registry:/var/lib/registry registry ...
- Robot Return to Origin
There is a robot starting at position (0, 0), the origin, on a 2D plane. Given a sequence of its mov ...
- php-fpm重启
Ubuntu 18.04服务器 修改php init 文件后(/etc/php/7.2/fpm/php.ini)需要重启php-fpm,方法是: kill -USR2 `cat /run/php/ph ...
- java集合类,HashMap,ArrayList
集合类 Collection LinkedList.ArrayList.HashSet是非线程安全的, Vector是线程安全的; ArrayXxx:底层数据结构是数组,连续存放,所以查询快,增删慢. ...
- 线程同步的实现方式(volatile、synchronized、CountDownLatch)
题目: 自定义容器,提供新增元素(add)和获取元素数量(size)方法.启动两个线程. 线程1向容器中新增10个数据.线程2监听容器元素数量,当容器元素数量为5时,线程2输出信息并终止. 方法一:v ...
- 监控服务器配置(一)-----Prometheus安装配置
最近和朋友一起做的监控配置,拿出来共享一下 1.下载prometheus安装包(linux版)到 /opt/minitor/prometheus . 下载地址:https://download.csd ...
- JavaSE基础知识(5)—面向对象(方法的重写与重载)
一.重写 1.说明 子类对继承过来的父类的方法进行改造,这种现象称为方法的重写或覆盖或覆写(Override) 2.要求 方法签名完全一致,jdk5.0之后,允许返回类型可以是子类类型,权限修饰符可以 ...
- Unity3D UI适配
直接贴图
- MySQL联接查询算法(NLJ、BNL、BKA、HashJoin)
一.联接过程介绍 为了后面一些测试案例,我们事先创建了两张表,表数据如下: 1 2 3 4 CREATE TABLE t1 (m1 int, n1 char(1)); CREATE TABLE t ...
- filter 全局和局部过滤器
1,局部过滤器 2,全局过滤器 使用方法相同,在花括号中使用过滤器名或者v-bind中使用