经典的图论建模题;

先拿开的等级问题不看;

每个物品本身的价格就是有一个自定义源点到这个点距离;

有了A物品B物品优惠为W就代表由B到A的有向路权值为W;

最后的最小花费就是源点的点1的最短路径(酋长编号总是1);

然后我们再考虑等级问题。穷举每个点作为最高等级,相应的就可以确定哪些点不能访问,然后求最短路;

最终找一个以点i等级为最高等级的情况使源点到1的最短路径最小即可,易知时间复杂度为O(n^3);

 var tree:array[..] of integer;
    x,y:array[..] of longint;
    a:array[..] of longint;         //表示离散化乎的标号对应的区间
    f:array[..] of boolean;
    ff:array[..] of boolean;
    i,j,k,n,t,s:longint;
procedure sort(l,r: longint);
  var i,j,x,y: longint;
  begin
    i:=l;
    j:=r;
    x:=a[(l+r) div ];
    repeat
      while a[i]<x do inc(i);
      while x<a[j] do dec(j);
      if not(i>j) then
      begin
        y:=a[i];
        a[i]:=a[j];
        a[j]:=y;
        inc(i);
        j:=j-;
      end;
    until i>j;
    if l<j then sort(l,j);
    if i<r then sort(i,r);
  end;
procedure putdown(i,p,q:longint);         //传递标记
  begin
    if p<>q then
    begin
      tree[i*]:=tree[i];
      tree[i*+]:=tree[i];
      tree[i]:=;
    end;
  end;
procedure build(i,p,q,l,r,x:longint);
  var m:longint;
  begin
    if (a[p]>=l) and (r>=a[q]) then tree[i]:=x
    else begin
      if tree[i]<> then putdown(i,p,q);
      m:=(p+q) div ;
      if l<=a[m] then
      begin
        build(i*,p,m,l,r,x);
      end;
      if r>a[m] then
      begin
        build(i*+,m+,q,l,r,x);
      end;
    end;
  end;
procedure dfs(i,p,q:longint);              //统计多少可见海报
  var m:longint;
  begin
    if (tree[i]>) and not ff[tree[i]] then
    begin
      s:=s+;
      ff[tree[i]]:=true;
    end
    else if (tree[i]=) and (p<>q) then
    begin
      m:=(p+q) div ;
      dfs(i*,p,m);
      dfs(i*+,m+,q);
    end;
  end;
begin
  readln(t);
  for i:= to t do
  begin
    k:=;
    fillchar(f,sizeof(f),false);
    readln(n);                        
    for j:= to n do 
    begin
      readln(x[j],y[j]);
      if not f[x[j]] then                        //离散化
      begin
        k:=k+;
        a[k]:=x[j];
        f[x[j]]:=true;
      end;
      if not f[y[j]] then
      begin
        k:=k+;
        a[k]:=y[j];
        f[y[j]]:=true;
      end;
    end;
    sort(,k);
    fillchar(tree,sizeof(tree),);
    for j:= to n do                     
      build(,,k,x[j],y[j],j);
    s:=;
    fillchar(ff,sizeof(ff),false);
    dfs(,,k);
    writeln(s);
  end;
end.

PS:千万不要以为酋长等级最高……

poj1062的更多相关文章

  1. POJ1062昂贵的聘礼[最短路建模]

    昂贵的聘礼 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 45892   Accepted: 13614 Descripti ...

  2. POJ-1062 昂贵的聘礼---Dijkstra+枚举上界

    题目链接: https://vjudge.net/problem/POJ-1062 题目大意: 中文题 思路: 1是终点,可以额外添加一个源点0,0到任意一节点的距离就是这个点的money,最终求的是 ...

  3. POJ1062不错的题——spfa倒向建图——枚举等级限制

    POJ1062 虽然是中文题目但是还是有一定几率都不准题目意思的:1.所有可能降价的措施不是降价多少钱而是降至多少钱2.等级范围:是你所走的那一条路中所有人中最好最低等级差不允许超过limit限制 思 ...

  4. [poj1062]昂贵的聘礼_最短路_离散化

    昂贵的聘礼 poj-1062 题目大意:原文链接?不是英文题,自己看 注释:$1\le N \le 100$. 想法:开始的想法有些过于简单,因为落下了一个条件:就是等级限制是一条路径上的任意两点而不 ...

  5. POJ-1062 昂贵的聘礼 有限制的最短路

    题目链接:https://cn.vjudge.net/problem/POJ-1062 题意 虽然是中文题,还是简单复述一下吧 我们想要酋长的女儿作为老婆.作为交换,酋长想要点钱. 酋长提出可以用其他 ...

  6. POJ-1062 昂贵的聘礼 (最短路)

    POJ-1062 昂贵的聘礼:http://poj.org/problem?id=1062 题意: 有一个人要到1号点花费最少的钱,他可以花费一号点对应的价格,也可以先买下其他一些点,使得费用降低. ...

  7. POJ-1062(原始dijiksra算法+思维)

    昂贵的婚礼 POJ-1062 这道题目一开始看的时候难以理解,但是仔细想,还是可以和最短路联系的,我觉得类似于硬币交换等问题. 以下需要注意几个点,第一就是因为题目规定如何和超出了等级限制的人交易,则 ...

  8. poj1062 昂贵的聘礼

    Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...

  9. poj1062昂贵的聘礼(Dijkstra**)

    /* 题意: 物主有一个物品,价值为P,地位为L, 以及一系列的替代品Ti和该替代品所对应的"优惠"Vi g[u][i] 表示的是u物品被i物品替换后的优惠价格!(u>0, ...

  10. ACM/ICPC 之 昂贵的聘礼-最短路解法(POJ1062)

    //转移为最短路问题,枚举必经每一个不小于酋长等级的人的最短路 //Time:16Ms Memory:208K #include<iostream> #include<cstring ...

随机推荐

  1. 图片grayscale(灰阶效果)webkit内核支持。

    filter:gray;-webkit-filter: grayscale(100%); 置为灰阶等hove时候 -webkit-filter: grayscale(0%);显示出彩色.

  2. Python学习笔记2——模块的发布

    1.为模块nester创建文件夹nester,其中包含:nester.py(模块文件): """这是"nester.py"模块,提供了一个名为prin ...

  3. Python问题之奇怪诡异的Bug

    最近又重新装上了windows 7感觉还是那样,主要是想用M8SDK写些程序.也想在windows上玩玩,一直都觉得用C写一些常用的东东很复杂,只有借助于解释性语言了,在python, ruby间选择 ...

  4. Django Admin后台使用tinymc 富文本编辑器

    1.CDN地址 <script src="//cdn.tinymce.com/4/tinymce.min.js"></script> 2.修改base.ht ...

  5. Mac技巧之让U盘、移动硬盘在苹果电脑和Windows PC都能识别/读写,且支持4GB大文件:exFAT格式

    如果您的 U 盘.移动硬盘既要用于 PC 又要用于苹果电脑,Mac OS X 系统的 HFS+ 和 Windows 的 NTFS 格式显然都不行……HFS+ 在 Windows 下不识别,NTFS 格 ...

  6. [mac git 服务器端]

    http://blog.csdn-net/kesalin/article/details/6943770 XCode 4 默认支持 Git 作为代码仓库,当我们新建一个仓库的时候,可以勾选创建默认仓库 ...

  7. HTML 背景图片自适应

    CSS body.loginpage { background-image: url(../images/background-image.jpg); background-size:cover; } ...

  8. 【BZOJ 1951】 [Sdoi2010]古代猪文

    Description “在那山的那边海的那边有一群小肥猪.他们活泼又聪明,他们调皮又灵敏.他们自由自在生活在那绿色的大草坪,他们善良勇敢相互都关心……” ——选自猪王国民歌 很久很久以前,在山的那边 ...

  9. 通过android.provider包查看android系统定义的provider.

    原先的2.2的android源码已经不是那么容易找到了,我稍稍搜索了下找到了一两个没速度的死链就失去了兴趣.不过还好忽然发现在android.provider包下包含了常见的provider的使用方法 ...

  10. mybatis include标签

    使用mybatis 的include标签达到SQL片段达到代码复用的目的 示例: xml文件 <sql id="paysql"> payid,p.oid,p.bdate ...