【bzoj3158】 千钧一发】的更多相关文章

可以看做一些物品中某些互相排斥求最大价值.如果这是个二分图的话,就很容易用最小割了. 观察其给出的条件间是否有什么联系.如果两个数都是偶数,显然满足条件二:而若都是奇数,则满足条件一,因为式子列出来发现一定不能写成完全平方数.那么这就是个二分图了. #include<iostream> #include<cstdio> #include<cmath> #include<cstdlib> #include<cstring> #include<…
[传送门:BZOJ3158] 简要题意: 给出n个机器,每个机器有a[i]基础值和b[i]价值 选出一部分机器使得这些机器里面两两至少满足以下两种条件之一: 1.a[i]2+a[j]2!=T2(T为正整数) 2.gcd(a[i],a[j])>1 求出能达到要求的最大价值 题解: 神最小割 要求一个最大价值,那么我们可以转换成求损失的价值最小 但是这里两个子集的分化并不明显 对于第二个要求,如果两点的a值都为偶数,那么肯定满足 那如果两个数都为奇数的话,也必定满足要求一,证明如下: 1.一个奇数的…
题目 传送门 题解 很容易建立模型,如果两个点不能匹配,那么连一条边,那么问题就转化为了求一个图上的最大点权独立集. 而我们可以知道: 最大点权独立集+最小点权覆盖集=总权值. 同时最小点权覆盖在一般图上是np的,但是在二分图上就是可解的. 利用一系列数学性质,可以证明A[i]与A[j]奇偶性不同是ij之间连边的充分必要条件. 详细见lidaxin的博客 那么我们可以跑一边最大流即可. 代码 #include <bits/stdc++.h> using namespace std; #defi…
[BZOJ3158]千钧一发 Description Input 第一行一个正整数N. 第二行共包括N个正整数,第 个正整数表示Ai. 第三行共包括N个正整数,第 个正整数表示Bi. Output 共一行,包括一个正整数,表示在合法的选择条件下,可以获得的能量值总和的最大值. Sample Input 4 3 4 5 12 9 8 30 9 Sample Output 39 题解:一开始直接把Number那道题粘了下来交上去,结果发现并不一样~ #include <cstdio> #inclu…
http://www.lydsy.com/JudgeOnline/problem.php?id=3158 (题目链接) 题意 给出n个装置,每个装置i有一个特征值a[i]和一个能量值b[i],要求选出能量值和尽可能大的装置,使它们两两之间至少满足一下两条件中的1个条件:1.不存在T,a[i]*a[i]+a[j]*a[j]=T*T:2.gcd(a[i],a[j])>1. Solution 通过观察与思考,我们可以发现,如果把不符合条件的两个装置用边连接起来,最后要求的就是带权最大独立集,然而这是一…
3158: 千钧一发 题目:传送门 题解: 这是一道很好的题啊...极力推荐 细看题目:要求一个最大价值,那么我们可以转换成求损失的价值最小 那很明显就是最小割的经典题目啊?! 但是这里两个子集的分化并不明显...GG 耐心一点,从题目的要求再入手: 对于第二个要求,如果两点的a值都为偶数,那么肯定满足 那如果两个数都为奇数的话,也必定满足要求一,证明如下: 1.一个奇数的平方%4为1,一个偶数的平方%4为0 2.两个奇数的平方和%4为2 3.如果两个奇数的平方和是一个奇数的平方,那么%4应该为…
3275: Number Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 748  Solved: 316[Submit][Status][Discuss] Description 有N个正整数,需要从中选出一些数,使这些数的和最大.若两个数a,b同时满足以下条件,则a,b不能同时被选1:存在正整数C,使a*a+b*b=c*c2:gcd(a,b)=1 Input 第一行一个正整数n,表示数的个数. 第二行n个正整数a1,a2,?an. Output…
3158: 千钧一发 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1201  Solved: 446[Submit][Status][Discuss] Description   Input 第一行一个正整数N. 第二行共包括N个正整数,第 个正整数表示Ai. 第三行共包括N个正整数,第 个正整数表示Bi. Output 共一行,包括一个正整数,表示在合法的选择条件下,可以获得的能量值总和的最大值. Sample Input 4 3 4 5 1…
网络流/最小割 这题跟BZOJ 3275限制条件是一样的= =所以可以用相同的方法去做……只要把边的容量从a[i]改成b[i]就行了- (果然不加当前弧优化要略快一点) /************************************************************** Problem: 3158 User: Tunix Language: C++ Result: Accepted Time:196 ms Memory:13028 kb ****************…
3158: 千钧一发 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 767  Solved: 290[Submit][Status][Discuss] Description   Input 第一行一个正整数N. 第二行共包括N个正整数,第 个正整数表示Ai. 第三行共包括N个正整数,第 个正整数表示Bi. Output 共一行,包括一个正整数,表示在合法的选择条件下,可以获得的能量值总和的最大值. Sample Input 4 3 4 5 12…