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

也不难想到一种将每个数拆成两个点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. 折腾ghost。。。

    1.启动 NODE_ENV=production node index.js 如果出现启动不了的情况,在该命令加sudo sudo NODE_ENV=production node index.js ...

  2. CentOS配置java运行环境

    CentOS_配置_docker CentOS_6.5 1.CentOS_6.5在安装docker-io之前需要首先卸载docker包(没下载过可以省略) $ sudo yum -y remove d ...

  3. sublime 安装 Terminal 使用 cmder

    在 packagecontrol.io 可以找到 Terminal. 在 cmder.net 下载 cmder 复制 Terminal.sublime-settings 文件到 C:\Users\WX ...

  4. MailOtto 实现完美预加载以及源码解读

    背景: 最近项目组需要一个小课题分享,小白刚好从微博里看到一个这样有趣的开源工具MailOtto,是阿里巴巴员工 Drakeet 维护的一个专注懒事件的事件总线,gitHub地址为:https://g ...

  5. MySQL二进制文件规范安装

    演示环境介绍 操作系统:CentOS 6.7  (64位) 二进制包:mysql-5.6.30-linux-glibc2.5-x86_64.tar.gz MySQL 下载地址:http://dev.m ...

  6. spl_autoload_register array参数

    spl_autoload_register (PHP 5 >= 5.1.2) spl_autoload_register — 注册给定的函数作为 __autoload 的实现 说明¶ bool  ...

  7. jQuery按钮复制文本内容

    这种方法能保证文本内容被复制到windows剪切板,代码示例是复制url <!doctype html> <html> <head> <meta charse ...

  8. tomcat错误信息解决方案 严重:StandardServer.await:

    看到这个报错我的第一反应就是端口被占用,用netstat -ant命令查看发现8080端口没有被占用,也可以看到 tomcat的进程已经存在,但是不能对外提供服务. 1.独立运行的tomcat.exe ...

  9. 解决IE6下Position:fixed问题(只用css)

    在IE6.0及以下版本的浏览器里是不支持position:fixed.而在IE7,IE8,firefox,opera,chrome都可以完美的支持此特性的.解决此问题的要点主要有: 1).容器要有一个 ...

  10. PHP联合sqlserver2008使用的全过程 ( 原创 亲测)

    一.环境 php5.2.5 sqlserver2008 win7 二.配置PHP 1.打开php.in将extension=php_mssql.dll的注释符号去掉. 2.打开php.in将mssql ...