zoukankan      html  css  js  c++  java
  • [BZOJ3275]Number

    Description

    BZOJ3275

    有一些数,你需要选出一些,使得他们之中,任意两个数(a,b)都不满足(exists c,a^2+b^2=c^2landgcd(a,b)=1)

    Solution

    这又是一道很具有启发性的题。观察性质我们发现,偶数和偶数不可能冲突,而存在奇偶之间冲突的情况,那么,奇数之间是否会冲突呢?因为((2n+1)^2mod 4=1,(2n)^2mod 4 =0),但是(a^2+b^2mod 4=2),所以两个奇数不会冲突。然后?这就是一个二分图,跑个最大独立集就好了。

    Code

    int main() {
        n = read();
        s = 0, t = n << 1 | 1;
        long long tot = 0;
        for (int i = 1; i <= n; ++i) {
            a[i] = read();
            tot += a[i];
            if (a[i] & 1)
                Adde(s, i, a[i]);
            else
                Adde(i + n, t, a[i]);
        }
    
        for (int i = 1; i <= n; ++i) {
            for (int j = 1; j < i; ++j) {
                long long sr = 1ll * a[i] * a[i] + 1ll * a[j] * a[j],
                          sq = (long long)(sqrt(sr) + eps);
                if (sq * sq == sr && gcd(a[i], a[j]) == 1) {
                    if (a[i] & 1)
                        Adde(i, j + n, 0x3f3f3f3f);
                    else
                        Adde(j, i + n, 0x3f3f3f3f);
                }
            }
        }
        printf("%lld
    ", tot - dinic());
        return 0;
    }
    
  • 相关阅读:
    java--堆栈
    git 修改默认编辑器
    java 二维数组的行列长度
    公钥私钥
    手机是如何定位的
    Git和svn的区别
    面试未解之谜
    删除单链表中重复元素
    深入分析事务的隔离级别
    传送
  • 原文地址:https://www.cnblogs.com/wyxwyx/p/bzoj3275.html
Copyright © 2011-2022 走看看