zoukankan      html  css  js  c++  java
  • [BZOJ3275]Number解题报告|网络流

    Description

    有N个正整数,需要从中选出一些数,使这些数的和最大。
    若两个数a,b同时满足以下条件,则a,b不能同时被选
    1:存在正整数C,使a*a+b*b=c*c
    2:gcd(a,b)=1

      这道题做出来还是比较有成就感的..毕竟是自己独立的思考过程

      首先可以对于选或不选,我们可以建立经典最小割模型,向s,t连容量为数值的边

      然而我们发现,发现两个数不能同时被选之后又不知道应该怎么办了

      在a,b之间连一条容量为正无穷的边?那不是强制让他们在同一边吗?

      起到了相反作用...然而我们很快想到了一道叫做圈地的题目

      我们是通过划分成二分图之后然后s,t连相反的边来解决的

      那么这道题也可以用这种方法吗?可以转化成二分图吗?

      当然可以。我们思考a^2+b^2=c^2这个式子

      当c为奇数的时候,a,b显然一奇一偶

      c为偶数的时候,a,b同奇或同偶

      然而实际上这两种情况都是不存在的...

      首先a,b同偶的话显然,不满足gcd(a,b)=1的要求

      如果他们同奇,我们假设a=2n+1,b=2m+1

      a^2+b^2=4n^2+4m^2+4n+4m+2

      模4的余数显然为2,但是如果c是偶数的话c^2显然是4的倍数

      然后这种情况也排除了

      因此a,b必然一奇一偶!

      然后就可以建立连边,然后用最小割求解啦!(撒花

      发现和黄学长的做法并不一样,但是后来去翻发现和Jry的做法是一样的 (继续撒花


      不放程序了,cnblogs贴代码的工具并不漂亮

      而且网络流不过是一些模板没什么好放的

      还是WA了好多发...就是弱啊...

      17/.Apr.

  • 相关阅读:
    myslq的更新丢失实例
    特价版线程池ThreadPoolExecutor实现
    通过SCP实现Linux服务器和本地Win10机器的文件上传下载
    数据库连接池的一种实现方案
    JDBC的驱动注册浅析
    Mysql数据库的JDBC查询实例
    RabbitMQ的安装
    Rabbitmq—基础
    Datatable某一列转List
    js Jquery 数据移除元素/删除元素
  • 原文地址:https://www.cnblogs.com/mjy0724/p/4437297.html
Copyright © 2011-2022 走看看