BZOJ 1237 配对】的更多相关文章

Description 你有\(n\)个整数\(A_{i}\)和\(n\)个整数\(B_{i}\).你需要把它们配对,即每个\(A_{i}\)恰好对应一 个\(Bp_{i}\).要求所有配对的整数差的绝对值之和尽量小,但不允许两个相同的数配对.例如\(A=\lbrace 5,6,8 \rbrace\),\(B=\lbrace 5,7,8 \rbrace\),则最优配对方案是\(5\)配\(8\),\(6\)配\(5\),\(8\)配\(7\),配对整数的差的绝对值分别为\(2, 2, 1\),和…
给出两个长度为n的序列.这两个序列的数字可以连边当且仅当它们不同,权值为它们的绝对值,求出这个二分图的最小权值完全匹配.没有输出-1. n<=1e5.用KM会TLE+MLE. 如果连边没有限制的话,将两个序列排序一下显然就得到最优解了. 考虑限制.则需要将排序后一些项交换.可以证明最优解最多交换距离为3.因为DP一下就可以了. # include <cstdio> # include <cstring> # include <cstdlib> # include…
思路:dp[ i ] 表示 排序后前 i 个元素匹配的最小值, 我们可以发现每个点和它匹配的点的距离不会超过2,这样就能转移啦. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define pii pair<int,int> #define piii pair<int, pair<int,int> >…
如果我们直接令dp[i][j]为前i个位置第i个位置填j所产生的逆序对的最少数.这样是不满足无后效性的. 但是如果发现对于两个-1,如果前面的-1填的数要大于后面的-1填的数.容易证明把他们两交换结果不会变差. 所以对于所有的-1,填的数一定是一个非递减的. 现在我们考虑每个位置对答案的贡献.显然数字位和数字位的逆序对数可以预处理一次算出来. 而-1位和-1位的逆序对数是0,剩下的就是数字位和-1位的逆序对数. 考虑dp[i][j]为前i个-1位 第i个-1位填j时产生的逆序对的最少数.这样是没…
dp练习. codevs 1048 石子归并 区间dp #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #include<iostream> using namespace std; ][],w[],sum[]; inline int read() { ,f = ;char ch = getchar(); ; + ch - '; return x * f…
http://www.lydsy.com/JudgeOnline/problem.php?id=1237 如果没有相同的数不能配对的限制 那就是排好序后 Σ abs(ai-bi) 相同的数不能配对 交换一些相邻数的位置,使他们不相同 只交换相邻两个的话: 1 2 3 1 2 3 这种情况不行 而至多相邻3个内部交换,就可以保证相同位置的数不同 #include<cstdio> #include<iostream> #include<algorithm> using na…
4205: 卡牌配对 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 173  Solved: 76[Submit][Status][Discuss] Description 现在有一种卡牌游戏,每张卡牌上有三个属性值:A,B,C.把卡牌分为X,Y两类,分别有n1,n2张. 两张卡牌能够配对,当且仅当,存在至多一项属性值使得两张卡牌该项属性值互质,且两张卡牌类别不同. 比如一张X类卡牌属性值分别是225,233,101,一张Y类卡牌属性值分别为11…
4514: [Sdoi2016]数字配对 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 820  Solved: 345[Submit][Status][Discuss] Description 有 n 种数字,第 i 种数字是 ai.有 bi 个,权值是 ci. 若两个数字 ai.aj 满足,ai 是 aj 的倍数,且 ai/aj 是一个质数, 那么这两个数字可以配对,并获得 ci×cj 的价值. 一个数字只能参与一次配对,可以不参与配对. 在…
4514: [Sdoi2016]数字配对 题意: 有 n 种数字,第 i 种数字是 ai.有 bi 个,权值是 ci. 若两个数字 ai.aj 满足,ai 是 aj 的倍数,且 ai/aj 是一个质数, 那么这两个数字可以配对,并获得 ci×cj 的价值. 一个数字只能参与一次配对,可以不参与配对. 在获得的价值总和不小于 0 的前提下,求最多进行多少次配对. 显然可以配对的两点之间可以连费用为\(c_i \times c_j\)的边 一开始想拆开节点限制流量,但这样没法求配对次数啊 应该深入分…
BZOJ 洛谷 \(Solution\) 很显然的建二分图后跑最大费用流,但有个问题是一个数是只能用一次的,这样二分图两部分都有这个数. 那么就用两倍的.如果\(i\)可以向\(j'\)连边,\(j\)也向\(i'\)连边,如果上一次走了\(i->j'\),那么这一次一定走\(j->i'\). 每次跑最大费用流,直至有一次费用变成负,然后加上当前正权值能抵消它的流量,最后总流量除以2就可以了. \(Another Solution\) 两个数能匹配首先要能整除,其次它们所有质因子的次数和一定只…