自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 CF 475D.CGCDSSQ ST表 + 二分

题目链接题意:给定长度为nnn的正整数序列aaa。有mmm组询问,每组询问包括一个正整数xxx。对每个询问计算共有多少个区间[l,r][l,r][l,r],满足al,al+1,…,ara_l,a_{l+1},\dots,a_ral​,al+1​,…,ar​的最大公约数为xxx,即gcd(al,al+1,…,ar)=xgcd(a_l,a_{l+1},\dots,a_r)=xgcd(al​,al+1​,…,ar​)=x。数据范围:题解:1.首先,我们使用STSTST表存储区间之间的最大公约数。

2021-08-08 22:24:58 135

原创 CF 5C.Longest Regular Bracket Sequence 栈 + DP

题目链接题意:给一个只包含′(′、′)′'('、')'′(′、′)′左右括号的字符串,询问最长的合法括号序列的长度和出现次数。题解:设dp[i]dp[i]dp[i]表示以位置为iii的右括号结尾的最长合法括号子序列的长度,状态转移方程可以得出是:dp[i]=dp[cur−1]+i−cur+1dp[i] = dp[cur - 1]+i-cur+1dp[i]=dp[cur−1]+i−cur+1,其中,curcurcur表示位置为iii的右括号所对应的左括号的位置,这个可以使用栈记录,也就是对应的栈顶元素

2021-08-08 21:36:43 143

原创 ABC206 E.Divide Both 容斥

题目链接题解:直接枚举

2021-06-29 17:32:16 217

原创 ABC 207 D. Congruence Points 计算几何

题目链接题解:这道题,看起来既要平移又要旋转,挺麻烦。可以抓住一个性质,如果这两个点集可以通过旋转匹配,那么,这两个点集中的点相对重心的位置分布是相同的。因此,我们可以先求出这两个点集中的点相对其重心的相对坐标,这样我们就能够忽略掉平移这个操作所带来的影响。下面就要考虑能否通过旋转使两个点集匹配。从点集SSS中选一个xxx坐标不为0的点ppp,这样可以保证有tantantan值。由于这题范围很小,因此直接暴力枚举点集TTT中的所有点转到点ppp所需的角度θ\thetaθ,然后,判断点集SSS的剩

2021-06-28 18:51:10 282

原创 ABC207 E. Mod i DP前缀和优化

题目链接题解:让sum[i]sum[i]sum[i]表示前iii个数的和,dp[i][j]dp[i][j]dp[i][j]表示将前iii个数分成jjj段的可行方案数。接下来,找状态转移方程:dp[i][j]+=dp[k][j−1]dp[i][j]+=dp[k][j -1]dp[i][j]+=dp[k][j−1],其中满足(sum[i]−sum[k])%j==0(sum[i] - sum[k]) \% j == 0(sum[i]−sum[k])%j==0。这样直接枚举,可以发现时间复杂度是O(n3

2021-06-28 16:53:28 173

原创 洛谷P3911 最小公倍数之和 莫比乌斯反演经典转换

题目链接题解:刚拿到这道题目,发现是nnn个离散的数,很难处理。因此,我们需要对问题进行转化:∑i=1N∑j=1Nlcm(i,j)∗cnt[i]∗cnt[j]\sum_{i=1}^N\sum_{j=1}^Nlcm(i,j)*cnt[i]*cnt[j]i=1∑N​j=1∑N​lcm(i,j)∗cnt[i]∗cnt[j]cntcntcnt表示该数出现的次数。下面可以对上面的式子进行化简:∑i=1N∑j=1Nlcm(i,j)∗cnt[i]∗cnt[j]\sum_{i=1}^N\sum_{j=1}

2021-05-31 21:10:49 108

原创 牛客挑战赛 B.Random eat Cake 期望

题目链接题面:题解:在这里,我们考虑一次吃xxx块蛋糕的概率。根据隔板法,我们可以求出nnn块蛋糕能够生成的序列的数量为:g(n)=2n−1,g(0)=1g(n)=2^{n-1},g(0)=1g(n)=2n−1,g(0)=1假设一次吃kkk块蛋糕的概率为f(k)f(k)f(k),枚举这kkk块蛋糕左右的序列可得:f(k)=∑i=kng(i−k)g(n−i)g(n)f(k)=\sum_{i=k}^n\frac {g(i-k)g(n-i)}{g(n)}f(k)=i=k∑n​g(n)g(i−k)

2021-05-20 20:21:09 85

原创 HDU 6105 Gameia 树上博弈论

题目链接题意:给定一个树,AAA可以选一个未染色结点染成白色BBB有kkk次机会可以在任何时候切断一条连边,BBB可以选一个未染色结点染成黑色,同时和这个结点连接的点也会变成黑色(无论是白色还是未染色)。最后还有白色的结点那么AAA赢否则BBB赢。题解:如果BobBobBob能够将这棵树分成若干两两点对,那么BobBobBob最终一定可以获胜。也就是说,假设AliceAliceAlice染了一个节点,为了把这个节点变黑,BobBobBob必须染与其直接相连的节点。不过,假设现在的节点总数是偶数,可能

2021-04-27 22:07:34 173

原创 Codeforces 894 B. Ralph And His Magic Field (组合数学)

题目链接题意:给一个n×mn×mn×m的矩阵,现在要给每个位置填数,只能填111或−1-1−1,问有多少种方法能够使每行每列乘积均为kkk,k∈{−1,1}k\in\{-1,1\}k∈{−1,1}题解:先考虑k=1k=1k=1的情况,我们先给前n−1n-1n−1行前m−1m-1m−1列填好数字,这时可以随便填,因此现在的方案数就是2p, 其中p=(n−1)∗(m−1)2^p,\ 其中p=(n-1)*(m-1)2p, 其中p=(n−1)∗(m−1)。填完之后,我们再填前n−1n-1

2021-04-22 12:15:27 102

原创 CF1152C Neko does Maths

题目链接题意:给我们两个整数aaa和bbb,让我们给a,ba,ba,b同时加上一个非负整数kkk,使得lcm(a+k,b+k)lcm(a+k,b+k)lcm(a+k,b+k)最小,如果lcmlcmlcm一样小,则让kkk最小。输出kkk。题解:a和ba和ba和b可以表示成:a=x1∗g+y,b=x2∗g+ya=x_1*g+y,b=x_2*g+ya=x1​∗g+y,b=x2​∗g+y。其中,ggg是aaa和bbb的最大公约数,yyy是他们共同的余数。那么我们其实要做的就是把余数yyy补上一个kkk,

2021-04-19 18:22:26 80

原创 HDU 6880 Permutation Counting 计数DP

题目链接题意:给我们长度是n−1n-1n−1的bbb数组。其中bib_ibi​满足:其中aaa数组是1 n1~n1 n的排列,让我们求有多少种nnn的排列对应得bbb数组是题目所给得数组。题解:这是个计数DPDPDP问题。我们这里定义dp[i][j]dp[i][j]dp[i][j]表示前iii个数的排列,第iii个位置放的数是第jjj小的方案数。那么如果b[i−1]=0b[i-1]=0b[i−1]=0,也就是a[i]>a[i−1]a[i]>a[i-1]a[i]

2021-04-17 16:45:52 95

原创 HDU 6863 Isomorphic Strings 字符串哈希

题目链接题意:给定一个字符串sss,长度是nnn,问是否存在一个整数kkk,满足k∣nk|nk∣n,且将sss分成相等长度的kkk段子串,每一段子串都是循环同构,两个串s1s1s1,s2s2s2循环同构就是满足存在一个iii,使得s2=s1i+1s1i+2…s11s12…s1is2=s1_{i+1}s1_{i+2}\dots s1_1s1_2\dots s1_is2=s1i+1​s1i+2​…s11​s12​…s1i​。题解:我们可以枚举所有nnn的因数kkk,对于每个因数kkk,计算每个子串的哈

2021-04-17 16:06:51 107

原创 HDU 6850 Game 博弈论

题目链接题解:这道题目要先找到必败态。可以发现第一个选了最长边端点的人一定输,因为,一个人选了一个端点,另一个人直接选另一个端点,那么游戏结束。我们把最长边删去之后,如果有人第一次选了当前最长边的一个端点,那么这个人还是必输。那么接着删去现在的最长边及其端点,直到如果最后只剩111个点没选,那么无论怎么选,都是第一个选择一个"最大边"的一个端点,必输。否则,先手必赢。实现细节见代码:#include <bits/stdc++.h>using namespace std;typede

2021-04-17 10:54:07 88

原创 最大子矩阵 二维树状数组

题目链接用树状数组维护一个二维数组即可。和二维前缀和求法一样。具体实现见代码:#include <bits/stdc++.h>using namespace std;int m, n, x, y;int a[1010][1010], sum[1010][1010];int lowbit(int x) { return x & -x;}void add(int x, int y, int k) { for (int i = x; i <= m; i += lo

2021-04-15 17:06:25 84

原创 DP + 树状数组例题

例题一:HDU 3030 Increasing Speed Limits题意:求一组数中有多少严格上升子序列。题解:由于要求严格上升,因此相同大小的数只能出现一次,我们开始先对原始数组进行排序去重操作。得到的新数组就是离散化的数组,每个数对应的下标表明它是第几大的元素。这里的状态表示就是dp[i]dp[i]dp[i]表示以第iii大的元素结尾的严格上升子序列的个数。显然,对于当前的状态,可以转移到所有满足的d[j]d[j]d[j],这里的d[j]d[j]d[j]要求a[j]<a[i]&am

2021-04-15 15:22:22 90

原创 poj 1990 MooFest

题目链接思路参考链接实现细节见代码:#include <bits/stdc++.h>using namespace std;#define int long longtypedef long long ll;const int MAXN = 1e5 + 10;int sum[2][MAXN];struct Node { int v, w;}a[MAXN];bool cmp(Node x, Node y) { return x.v < y.v;}int low

2021-04-14 16:10:12 72

原创 2021 ICPC昆明 I.Mr. Main and Windmills

题目链接题意:一个点走过一条线段,在线段的同一侧有许多点,随着点的移动,从线段上的这个点看这些点的视角会发生变化。目光可以看成一条直线,顺时针扫过整个平面,然后对于每个点进入视野的时间就会有先后顺序。问mmm次对于最初的第hhh个点第kkk次交换位置的时候,此时线段上的点的位置坐标。题解:对于一个给定的点,与其他点会形成多条直线,我们可以求出这些直线与给定线段的交点。根据这些交点与线段起点的距离排序,交换kkk次时所观察的坐标就是排序后第kkk个交点的坐标。实现细节见代码:#include &l

2021-04-10 22:32:08 135

原创 洛谷 P3964 松鼠聚会

题目链接参考链接题解:这道题目的距离其实就是切比雪夫距离,又称棋盘距离,也就是D=max(∣x2−x1∣,∣y2−y1∣)D = max(|x_2-x_1|,|y_2-y_1|)D=max(∣x2​−x1​∣,∣y2​−y1​∣)。与之有一定联系的距离是曼哈顿距离,假设A(x1,y1),B(x2,y2)A(x_1,y_1),B(x_2,y_2)A(x1​,y1​),B(x2​,y2​),那么∣AB∣=∣x2−x1∣+∣y2−y1∣|AB|=|x_2-x_1|+|y_2-y_1|∣AB∣=∣x2​−x1

2021-04-10 22:14:12 132

原创 51nod 1350 斐波那契表示

题目链接参考链接题解:没有思路先打表观察,可以发现函数f[i]f[i]f[i]有规律,会出现斐波那契数列式分层:1 12 13 1 24 1 2 25 1 2 2 2 36 1 2 2 2 3 2 3 37 1 2 2 2 3 2 3 3 2 3 3 3 4可以发现前nnn项的和可以预处理其中的一部分,由于斐波那契数列增长速度接近指数,因此所需要的数组大小不会超过100。剩余的数可以依据一定的规律进行处理。实现细节见代码:#include <bi

2021-04-09 18:09:15 83

原创 hdu 5894 hannnnah_j’s Biological Test

题目链接题意:nnn个座位要安排mmm个人,每两个人之间至少隔kkk个位置,求方案数。题解:因为mmm个人之间有mmm个空隙,我们设第iii空隙为aia_iai​,因此有a1+a2+⋯+am=n−ma_1+a_2+\dots+a_m=n-ma1​+a2​+⋯+am​=n−m,这里ai≥ka_i\geq kai​≥k,我们可以改写成b1+b2+⋯+bm=n−m−m∗kb_1+b_2+\dots+b_m=n-m-m*kb1​+b2​+⋯+bm​=n−m−m∗k,这里bi≥0b_i\geq 0bi​≥0,

2021-04-01 15:37:15 70

原创 51nod 1670 打怪兽

题目链接题解:因此前一轮和后一轮的关系密切,可以使用递推解决。令dp[i]dp[i]dp[i]表示第iii轮依然存活时的方案总数,此时的能量一定是iii。显然dp[0]=n!dp[0]=n!dp[0]=n!,因为,无论怪物怎么排列,第0轮一定是存活的。我们找到现在能够打败的怪物数量xxx,其中这些怪物已经被打败的是iii个。因此,此时我们可以求出第i+1i+1i+1轮我依然存活的概率是x−in−i\frac {x-i}{n-i}n−ix−i​,只要将这个概率乘上dp[i]dp[i]dp[i],我

2021-03-31 19:05:05 86

原创 hdu 5698 瞬间移动

题目链接题意:从左上角开始移动,每次可以选择右下方的一个格子移动过去,求到第nnn行mmm列的格子的方案数。题解:枚举到(n,m)(n,m)(n,m)总共需要移动的步数kkk。那么容易发现kkk步走到(n,m)(n,m)(n,m)的方案数其实就是Cn−2k−1∗Cm−2k−1C_{n-2}^{k-1}*C_{m-2}^{k-1}Cn−2k−1​∗Cm−2k−1​,预处理阶乘和逆元可以很快做出这题。实现细节见代码:#include <bits/stdc++.h>using names

2021-03-31 17:57:23 92

原创 poj2409 Let it Bead

题目链接题意:给我们mmm种不同颜色的珠子,每种颜色的珠子数量无限。现在我们要从中挑nnn个珠子,穿成一个环形手链,问能够制造多少种不同的手链。如果两个手链经旋转或翻转后能够完全重合在一起,对应位置的珠子颜色完全相同,则视为同一种手链。题解:这道题目是PolyaPolyaPolya定理的模板题。对于这道题目,首先我们要考虑有几种置换方式。不难发现有两种,分别是旋转和翻转。先分析旋转置换。我们可以发现,根据一个珠子旋转的次数,这种置换方式总共有nnn种情况,也就是一个珠子旋转kkk次,其中k=0

2021-03-29 16:40:56 85

原创 Burnside引理与Polya定理

基本概念置换形如:其实和映射差不多,111映射为p1…p_1\dotsp1​…。循环置换形如:如果根据映射关系画一张图的话,循环置换的图应该是如下形式:两者的关系:任何一个置换都可拆成若干个循环置换的乘积。置换群从1−n1-n1−n所有的置换方式应该有n!n!n!种,包含其中若干种置换方式的群称为置换群。BurnsideBurnsideBurnside引理概念每个置换的不动点个数的平均值就是不同的方案数。不动点可以通过下面这个例子理解:假设现在对于一个环的染色方案如下:

2021-03-29 15:28:12 271

原创 hdu 3949 XOR

题目链接题意:给我们nnn个整数,让我们从中至少选取一个进行异或运算,问我们第kkk小的结果是多少?题解:发现nnn的数量较大,因此暴力肯定不行。为了将处理的数据范围减小,我们可以使用线性基处理。我们发现,每个数的二进制位也就63位,因此采用线性基处理之后,得到的无关组的向量个数最多636363个,相比之前的1e41e41e4,数量已经大幅减少。由于题目要求至少取一个进行异或运算,因此,我们需要对原来的向量组能否取到000进行特判。方法就是,比较当前的无关组的向量个数ddd与之前向量组向量个数nn

2021-03-26 17:22:59 61

原创 P3812 线性基

题目链接题意:给我们nnn个整数,让我们从中选任意个整数,使得他们的异或和最大。题解:这道题目nnn的数据范围给的不是很大,不能很好的感受到线性基在减少处理空间上的重要作用,其实这道题目nnn的范围可以加到1e51e51e5。直接想枚举所有的数的组合显然不行。看到了异或和,我们可以想到进制。根据线性基的做法,我们可以将所有的整数看作一个向量组,每个向量的维度也就是他们的进制位数,这道题是50。接下来,我们要求出这个向量组的极大线性无关组,使用高斯消元。将每个数转换成二进制,从高位到低位每次找到所

2021-03-26 16:01:46 82

原创 线性基

介绍一些基本概念向量组例如:x1,x2,…,xkx_1,x_2,\dots,x_kx1​,x2​,…,xk​这么一组向量就可以称之为一个向量组。相关概念线性相关如果一个向量组当中,某个向量可以被该向量组中的其他向量表示出来,那么称这个向量组是线性相关的。线性无关如果一个向量组当中,任何一个向量不可以被该向量组中的其他向量表示出来,那么称这个向量组是线性无关的。线性空间形如{a1x1+a2x2+⋯+akxk∣ai∈R}\{a_1x_1+a_2x_2+\dots+a_kx_k|a_i\in R

2021-03-26 15:46:55 529

原创 斯特林数

斯特林数有两类,分为第一类斯特林数和第二类斯特林数。其中第一类斯特林数又有无符号版本和有符号的版本。这里主要介绍无符号版本。第一类斯特林数定义将1−n1-n1−n划分为kkk个圆排列的方案数,这kkk个圆排列相互之间没有顺序。记作s(n,k)s(n,k)s(n,k)或[nk]\begin{bmatrix}n \\k \end{bmatrix}[nk​]。求法[nk]=[n−1k−1]+(n−1)[n−1k]\begin{bmatrix}n \\k \end{bmatrix}=\begin{bma

2021-03-24 14:50:24 278

原创 51nod 2463 旅行

题目链接题意:给定mmm条无向边,可以随机一个点出发,按照无向边走完所有的城市,到了每个城市之后,可以有两种选择:选择一条与当前城市相连的道路,走向一个没有去过的城市沿着第一次访问该城市时经过的道路后退到上一个城市当回到起点时,可以选择结束这次旅行或继续旅行。在每到达一个新的城市(包括起点)时,将城市的编号记录下来,这样会形成一个长度为nnn的序列,请输出字典序最小的序列。题解:题目当中的数据只给了m=n−1m=n-1m=n−1或者m=nm=nm=n这两种情况。由于起点可以自由选择,因此我

2021-03-20 18:50:51 88

原创 51nod 1255 字典序最小的子序列

题目链接题意:给我们一个字符串SSS,让我们从中找到一个子序列满足以下两个条件:包含字符串中所有出现过的字符各1个。是所有满足条件1的串中,字典序最小的。题解:这题可以使用栈解决。对与还没当前...

2021-03-20 16:21:24 165

原创 51nod 1625 夹克爷发红包

题目链接枚举+贪心。题意:有nnn排mmm列观众,给定这些观众现在手里的红包金额。老板现在最多还能发kkk组高级红包,每组高级红包只能同时给一行或一列的人派发,同时,每个高级红包的金额都是xxx, 每个人只能接受一个高级红包,被发高级红包的人手里的普通红包会被收走。问,怎么派发才能使所有人拿到的红包总额最多。题解:这道题目如果只能分给行或者列,直接贪心就可以解决,但是,此题既能给行又能给列。每次给了行之后,由于有每个人只能收一个高级红包,导致再给列时,原来的数组已经发生了改变,也就是每次操作其实

2021-03-18 18:48:24 57

原创 51nod 1163 最高的奖励

题目链接贪心,优先队列。题意:给了nnn个任务的结束时间和奖励,让我们安排做任务的顺序,使最终能够得到的奖励最大。题解:朴素做法:首先将所有的任务根据奖励的大小从大到小排序,如果奖励大小相同,结束时间晚的排在前面。贪心的策略就是,将该任务结束时间前第一个没有被安排任务的时间分给该任务。由于结束时间的数据较大,直接贪心会出错,我们发现,总共只有nnn个任务,也就是最多只需要nnn个单位的时间就可以做完所有任务。因此,我们在贪心时,将当前任务的结束时间与nnn取一个minminmin。朴素版代码:

2021-03-18 16:36:49 110

原创 洛谷P2303 Longge的问题

题目链接题意:给定一个整数nnn,让我们求出表达式∑i=1ngcd(i,n)\sum_{i=1}^ngcd(i,n)∑i=1n​gcd(i,n)的值。题解:首先,我们可以发现这个最大公约数一定是nnn的约数。因此我们可以进行分类,也就是枚举nnn的约数。然后原来的表达式就可以改写成:∑d∣nd∗\sum_{d|n}d*∑d∣n​d∗最大公约数为d的个数,也就是有多少个xxx满足gcd(x,n)==dgcd(x,n)==dgcd(x,n)==d。这个个数该怎么求?我们发现,如果有gcd(x,n)==

2021-03-16 19:01:05 113

原创 莫比乌斯反演

莫比乌斯反演和容斥原理可以相互联系。有的题目使用容斥原理做起来比较复杂,这时候可以使用莫比乌斯反演解决。1.莫比乌斯函数的定义x=p1α1p2α2…pkαk,pix = p_1^{\alpha_1}p_2^{\alpha_2}\dots p_k^{\alpha_k},p_ix=p1α1​​p2α2​​…pkαk​​,pi​均为质数,αi≥1.\alpha_i\geq1.αi​≥1.μ(x)={情况1:存在αi≥2. μ(x)=0情况2:∀αi=1. μ(x)=(−1)k\mu(x)

2021-03-15 17:12:58 97

原创 51nod 1678 lyk与gcd

题目链接这天,lyk又和gcd杠上了。它拥有一个n个数的数列,它想实现两种操作。1:将 aia_iai​ 改为bbb。2:给定一个数iii,求所有 gcd(i,j)=1gcd(i,j)=1gcd(i,j)=1 时的 aja_jaj​ 的总和。题解:直接统计gcd(i,j)==1gcd(i,j)==1gcd(i,j)==1的和不太好下手,因此,我们从反面入手,先统计处gcd(i,j)!=1gcd(i,j)!=1gcd(i,j)!=1的和。如何得到这个和呢?我们可以采用容斥原理。首先我们将i

2021-03-15 15:48:38 73

原创 PAT 甲级真题 1057 Stack

题目链接题解:题目就是求第k小元素问题。由于操作次数比较多,因此直接排序输出中间元素会超时,因此这题要用到第K小元素的经典做法之一,树状数组。用树状数组来维护现在栈内元素的信息,然后使用二分查找中间元素的值。这样时间复杂度是O(nlogn)O(nlogn)O(nlogn)。实现细节见代码:#include <bits/stdc++.h>using namespace std;const int MAXN = 1e5 + 10;int c[MAXN];stack<int&g

2021-03-08 16:00:43 116

原创 51nod 1103 N的倍数

题目链接前缀和+抽屉原理题意:给了一个长度为nnn的数组,从中任意找到若干个数,它们的和是nnn的倍数。题解:这里可以使用抽屉原理,模nnn的余数总共有nnn个。如果出现前缀和模nnn等于0,表明这前iii个数的和一定是nnn的倍数;反之,如果没有前缀和等于0,那么此时前缀和模nnn的余数只有n−1n - 1n−1个,因此对于这nnn个数的前缀和来说,一定会有2个前缀和模nnn的余数相同,那么在这之间的所有数的和模nnn一定等于0,也就是nnn的倍数。实现细节见代码:#include <

2021-03-05 16:20:37 47

原创 51nod 3038 数列求和

题目链接题意:给定两个数nnn和kkk,求∑i=1nik mod 10007\sum_{i=1}^ni^k\ mod\ 10007∑i=1n​ik mod 10007的值题解:容易发现直接暴力枚举的时间复杂度是O(nlogn)O(nlogn)O(nlogn),而nnn的数据范围比较大,因此暴力不行。我们可以考虑到,这里的模数10007比较小,因此,我们可以从每个数模10007的余数下手。利用这个同余,我们发现1k,10008k,20015k,…%100071

2021-03-04 20:08:36 451 1

原创 51nod 2006 飞行员配对(二分图最大匹配)

题目链接题解:用匈牙利算法找出最大匹配数即可。#include <bits/stdc++.h>using namespace std;int head[110], cnt, match[110];bool vis[110];struct E { int v, next;}e[1010];void add(int u, int v) { e[cnt].v = v; e[cnt].next = head[u]; head[u] = cnt++;}bool find(i

2021-02-24 17:10:58 59

原创 51nod 1257 背包问题 V3

题目链接二分单位体积的价值,然后判断是否可行。题意:给我们n个物品的体积和价值,从中选k件物品,求单位体积的最大价值是多少?题解:二分单位体积的价值,然后将原有的物品进行转换排序,选取前k件,判断是否可行。#include <bits/stdc++.h>using namespace std;const int MAXN = 5e4 + 10;int n, k;int allw, allp;struct Node { int w, p; double pw;}a[M

2021-02-24 14:58:38 70

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除