不难想到,先枚举建图然后跑最大费用最大流

也不难想到一种将每个数拆成两个点i1,i2,所有满足条件的数之间

把所有满足条件之间的数x,y连边x1--->y2,y1--->x2,流量为1,费用为(x+y)

相当于流量费用都变成了原来的2倍

最后再除一下即可

 const inf=;
type node=record
       point,flow,cost,next:longint;
     end; var edge:array[..] of node;
    v:array[..] of boolean;
    q:array[..] of longint;
    pre,d,cur,p:array[..] of longint;
    k,ans,len,a,b,i,j,t:longint; function min(a,b:longint):longint;
  begin
    if a>b then exit(b) else exit(a);
  end; procedure add(x,y,f,c:longint);
  begin
    inc(len);
    edge[len].flow:=f;
    edge[len].point:=y;
    edge[len].cost:=c;
    edge[len].next:=p[x];
    p[x]:=len;
  end; function gcd(x,y:longint):longint;
  begin
    if y= then exit(x)
    else exit(gcd(y,x mod y));
  end; function spfa:boolean;
  var i,j,x,y,f,r:longint;
  begin
    for i:= to t do
      d[i]:=-inf;
    fillchar(v,sizeof(v),false);
    d[]:=;
    f:=;
    r:=;
    q[]:=;
    while f<=r do
    begin
      x:=q[f];
      v[x]:=false;
      i:=p[x];
      while i<>- do
      begin
        y:=edge[i].point;
        if edge[i].flow> then
          if d[y]<d[x]+edge[i].cost then
          begin
            d[y]:=d[x]+edge[i].cost;
            pre[y]:=x;
            cur[y]:=i;
            if not v[y] then
            begin
              v[y]:=true;
              inc(r);
              q[r]:=y;
            end;
          end;
        i:=edge[i].next;
      end;
      inc(f);
    end;
    if d[t]=-inf then exit(false) else exit(true);
  end; function maxcost:longint;
  var i,j:longint;
  begin
    maxcost:=;
    while spfa do
    begin
      i:=t;
      while i<> do
      begin
        j:=cur[i];
        dec(edge[j].flow);
        inc(edge[j xor ].flow);
        i:=pre[i];
      end;
      ans:=ans+;
      inc(maxcost,d[t]);
    end;
  end; begin
  len:=-;
  fillchar(p,sizeof(p),);
  readln(a,b);
  t:=b*+;
  for i:=a to b do
  begin
    for j:=a to i- do
    begin
      k:=sqr(i)-sqr(j);
      if (sqrt(k)=trunc(sqrt(k))) and (gcd(trunc(sqrt(k)),j)=) then
      begin
        add(i,j+b,,i+j);
        add(j+b,i,,-i-j);
        add(j,i+b,,i+j);
        add(i+b,j,,-i-j);
      end;
    end;
    add(,i,,);
    add(i,,,);
    add(i+b,t,,);
    add(t,i+b,,);
  end;
  k:=maxcost;
  writeln(ans div ,' ',k div );
end.

bzoj2661的更多相关文章

  1. BZOJ2661 连连看 (费用流)

    把所有点拆成两个,将符合条件的两个点x,y连上边,流量为1,费用为-(x+y). 做一遍最小费用最大流,最后ans div 2即可. Program bzoj2661; ; ..] of longin ...

  2. 【BZOJ2661】[BeiJing wc2012]连连看 最大费用流

    [BZOJ2661][BeiJing wc2012]连连看 Description 凡是考智商的题里面总会有这么一种消除游戏.不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏.我们的规则是,给 ...

  3. BZOJ2661: [BeiJing wc2012]连连看

    2661: [BeiJing wc2012]连连看 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 483  Solved: 200[Submit][S ...

  4. [BJOI2012]连连看 BZOJ2661 费用流

    题目描述 凡是考智商的题里面总会有这么一种消除游戏.不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏.我们的规则是,给出一个闭区间[a,b]中的全部整数,如果其中某两个数x,y(设x>y ...

  5. 【bzoj2661】[BeiJing wc2012]连连看 最大费用最大流

    题目描述 凡是考智商的题里面总会有这么一种消除游戏.不过现在面对的这关连连看可不是QQ游戏里那种考眼力的游戏.我们的规则是,给出一个闭区间[a,b]中的全部整数,如果其中某两个数x,y(设x>y ...

  6. [BZOJ2661][BeiJing wc2012]连连看 费用流

    2661: [BeiJing wc2012]连连看 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1349  Solved: 577[Submit][ ...

  7. 【费用流】bzoj2661 [BeiJing wc2012]连连看

    将每个数拆点,互相连边,然后满足条件的数对之间互相连边,跑最大费用流,答案是流量和费用分别除以2. 一定要i->j.j->i都连上,否则可能会出现一个数在一边被选择了,在另一边的另一个匹配 ...

  8. [转载]hzwer的bzoj题单

    counter: 664BZOJ1601 BZOJ1003 BZOJ1002 BZOJ1192 BZOJ1303 BZOJ1270 BZOJ3039 BZOJ1191 BZOJ1059 BZOJ120 ...

  9. BZOJ刷题列表【转载于hzwer】

    沿着黄学长的步伐~~ 红色为已刷,黑色为未刷,看我多久能搞完吧... Update on 7.26 :之前咕了好久...(足见博主的flag是多么emmm......)这几天开始会抽时间刷的,每天几道 ...

随机推荐

  1. QT/C++ 智能指针

    什么是智能指针? 为什么用智能指针? 还有哪些关于内存管理方面的知识点,需要注意的?

  2. How to: Change icon in Inno Setup

    1. Change the installer executable icon or the icon showed in Start Menu folder Using SetupIconFile ...

  3. Custom Action : dynamic link library

    工具:VS2010, Installshield 2008 实现功能: 创建一个C++ win32 DLL的工程,MSI 工程需要调用这个DLL,并将Basic MSI工程中的两个参数,传递给DLL, ...

  4. 编译安装php5.5.7 脚本

      #!/bin/bash .tar.gz ];then wget http://oss.aliyuncs.com/aliyunecs/onekey/php/php-5.5.7.tar.gz fi . ...

  5. IOPS和Throughput

    IOPS和Throughput吞吐量两个参数是衡量存储性能的主要指标.IOPS表示存储每秒传输IO的数量,Throughput吞吐量则表示每秒数据的传输总量.两者在不同的情况下都能表示存储的性能状况, ...

  6. Lua脚本之语法基础快速入门

    要 1.基本数据类型 2.Lua中的常用语句结构以及函数 3.Lua中的常用语句结构介绍 4.Lua中的库函数 目录[-] 一.基本数据类型 二.Lua中的常用语句结构以及函数 1.Lua中的常用语句 ...

  7. Qt-获取主机网络信息之QHostAddress

    QHostAddress类提供一个IP地址. 这个类提供一种独立于平台和协议的方式来保存IPv4和IPv6地址. QHostAddress通常与QTcpSocket,QTcpServer,QUdpSo ...

  8. ASP.NET输入文本框自动提示功能

    在ASP.NET Web开发中会经常用到自动提示功能,比如百度搜索.我们只要输入相应的关键字,就可以自动得到相似搜索关键字的提示,方便我们快速的输入关键字进行查询. 那么在ASP.NET中,如果我们需 ...

  9. HTML5的简介

    前言:作为IOS开发工程师,终会接触到网页前端开发,甚至可能会有 用HTML5开发IOS的app客户端的需求.比如现在上架的app就有比如理财类型的app有的就用HTML开发的,从理财类型的app需求 ...

  10. 升级iOS10后SearchController焦点无法获取的问题

    原来在没升级之前,是这样获取的,好使 - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.sea ...