当前位置: 首页 > news >正文

枚举+最短路 poj1062

这里有个非常坑的地方,还有比酋长地位还更高的人,我也是看了论坛才知道。。。

在这里我把编号1看成终点,优惠价格看成相应的替代品编号到可替代品编号的权值,比如说有了2再加8000就到了1,那么2到1的弧长权值就是8000,dis[i]表示到编号i花费的最小金币数,初始的dis[i]都是物品本身价格,这里还有一个等级限制,我也看了下论坛,主要是枚举长度为m的所有区间,在每一个区间里都求一次最短路,求最小的值作为答案。

以下是我的代码,偷了懒,时间复杂度比较高:

#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
#define inf 0x3f
int map[105][105];
int n,m,k,t,ans,cnt;
int dis[105],dis1[105],rank[105];
struct node{
    int u,v,w;
}edge[10005];
void find(int a,int b)//现在我找在区间[a,b]之间的最短路 
{
    for(int i=1;i<=n;i++)    //把初始dis复制一份,因为求最短路会改变dis的数据 
    dis1[i]=dis[i];
    for(int i=1;i<n;i++)    //n-1次循环 
    {
        for(int j=0;j<cnt;j++)    //遍历所有边 
        {
            int u=edge[j].u;
            int v=edge[j].v;
            int w=edge[j].w;
            if(rank[u]>=a&&rank[u]<=b&&rank[v]>=a&&rank[v]<=b&&dis1[v]>dis1[u]+w)//选择编号在区间里的物品 
            {
                dis1[v]=dis1[u]+w;
                if(v==1)
                {
                    ans=min(ans,dis1[v]);
                }
            }
        }
    }
}
int main()
{
    while(cin>>m>>n)
    {
        cnt=0;
        int max1=0,min1=inf;
        for(int i=1;i<=n;i++)
        {
            cin>>dis[i]>>rank[i]>>k;
            if(rank[i]>max1)
            max1=rank[i];
            if(min1>rank[i])
            min1=rank[i];
            
            for(int j=0;j<k;j++)
            {
                int u,w,v;
                cin>>u>>w;
                edge[cnt].u=u;
                edge[cnt].v=i;
                edge[cnt].w=w;
                cnt++;
            }
        }
        ans=dis[1];
        for(int i=min1;i<=max1;i++)
        {
            int j=min(i+m,max1);
            if(rank[1]>=i&&rank[1]<=j)//rank[1]一定要在区间里 
            find(i,j);
        }
        cout<<ans<<endl;
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/6262369sss/p/9369856.html

相关文章:

  • Python——requests模块
  • GitLab领取任务+建立分支+本地修改+上传分支+合并分支详细步骤
  • Win10应用商店缓存信息多如何去清理?
  • [数位DP][CQOI2016]手机号码(附数位DP模板)
  • SpringBoot | 第十一章:Redis的集成和简单使用
  • 搭建简单的单个Mybatis框架
  • Day 14:FileInputStream、FileOutputStream
  • 导出csv xls文件数字会自动变科学计数法的解决方式
  • 【POJ】1008 Maya Calendar
  • 逆袭之旅DAY.XIA.Object中常用方法
  • 你写的什么垃圾代码让Vsync命令不能及时处理呢?(2)
  • E_FAIL (0x80004005) MachineWrap
  • Day02 HTMLCSS
  • 随机生成数据以及测定时间
  • python之路day1
  • (十五)java多线程之并发集合ArrayBlockingQueue
  • 《深入 React 技术栈》
  • classpath对获取配置文件的影响
  • CSS相对定位
  • Django 博客开发教程 8 - 博客文章详情页
  • Docker下部署自己的LNMP工作环境
  • iOS | NSProxy
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Java编程基础24——递归练习
  • Swoft 源码剖析 - 代码自动更新机制
  • vue-loader 源码解析系列之 selector
  • Yeoman_Bower_Grunt
  • yii2权限控制rbac之rule详细讲解
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 构造函数(constructor)与原型链(prototype)关系
  • 基于webpack 的 vue 多页架构
  • 前端性能优化——回流与重绘
  • 小程序滚动组件,左边导航栏与右边内容联动效果实现
  • 1.Ext JS 建立web开发工程
  • 我们雇佣了一只大猴子...
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • #AngularJS#$sce.trustAsResourceUrl
  • #if #elif #endif
  • (2015)JS ES6 必知的十个 特性
  • (6)STL算法之转换
  • (8)Linux使用C语言读取proc/stat等cpu使用数据
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (pojstep1.1.2)2654(直叙式模拟)
  • (SpringBoot)第二章:Spring创建和使用
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (生成器)yield与(迭代器)generator
  • (数据结构)顺序表的定义
  • .gitignore文件—git忽略文件
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET/C# 获取一个正在运行的进程的命令行参数
  • .NET框架类在ASP.NET中的使用(2) ——QA
  • @EventListener注解使用说明
  • @property @synthesize @dynamic 及相关属性作用探究
  • @Responsebody与@RequestBody