费用流问题,每个样本选一次,就连一条capacity为1,权为给定的值,因为可以重复走,再连capacity为无穷,权为0的边,再一次连接给定的出点和汇点即可 #include<bits/stdc++.h> using namespace std; #define lowbit(x) ((x)&(- ...
分类:
其他好文 时间:
2020-02-12 16:40:15
阅读次数:
54
最小路径覆盖=节点数-最大匹配数,拆成二分图跑dinic/匈牙利即可,注意输出路径的时候判断拆成的入点和出点和另加的反向边 #include<bits/stdc++.h> using namespace std; #define lowbit(x) ((x)&(-x)) typedef long l ...
分类:
其他好文 时间:
2020-02-12 12:41:03
阅读次数:
65
P1908 逆序对 离散化+树状数组:AC_Code 1 #include <bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int maxn=500010; 5 6 int a[maxn],tree[max ...
分类:
编程语言 时间:
2020-02-09 20:09:07
阅读次数:
71
入门级数据结构算法。复习一下,分别手写一个。 线段树版本(过了CF上的https://codeforces.com/contest/1291/problem/D): 1 #include<bits/stdc++.h> 2 #define f(i,a,b) for(int i=a;i<=b;i++) ...
分类:
编程语言 时间:
2020-02-08 13:26:22
阅读次数:
145
树状数组 $lowbit(x)=x\&( x)$ 二维树状数组 修改某个点,查询(1,1)到(n,m)的前缀和(树状数组要从1开始) HDU2642 Stars $YFF$是个浪漫的人,他喜欢数天上的星星。 为了解决这个问题,我们考虑到天空是一个二维平面,有时星星会很亮,有时星星会很暗。首先,天空中 ...
分类:
编程语言 时间:
2020-02-05 23:49:55
阅读次数:
124
lowbit(x) : 返回x的最后一位1 lowbit(100010) = 10 lowbit(11011000) = 1000 lowbit(x) = x&(-x) = x & (~x+1) : -x x的补码 = x 取反+1 给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数 ...
分类:
编程语言 时间:
2020-01-29 21:52:22
阅读次数:
53
树状数组: 一共需要三个函数: ①lowbit(int x) ②add(int x,int p) ③query(int x) 1.动态求连续区间和 给定 n 个数组成的一个数列,规定有两种操作,一是修改某个元素,二是求子数列 [a,b]的连续和。 输入格式 第一行包含两个整数 n 和 m,分别表示数 ...
分类:
编程语言 时间:
2020-01-27 17:24:35
阅读次数:
89
基本用途:维护序列的前缀和。 对于给定的序列a,建立一个数组c,其中c[x]保存序列a的区间[x-lowbit(x)+1,x]中所有数的和,其中lowbit(x)指:x的二进制下最小的2的次幂,如: lowbit(7)=1,lowbit(6)=2,lowbit(5)=1,lowbit(4)=4 该结 ...
分类:
编程语言 时间:
2020-01-26 19:03:58
阅读次数:
56
一直觉得树状数组是个非常神奇的东西,代码不知道要比线段树短多少倍,还有什么 $lowbit$ 之类的神奇操作。也是因此对其一直一知半解,用的时候都迷迷糊糊,~~瞎打一通~~。所以就写篇博客吧。。 树状数组: 本质上是一个动态的前缀和,可以 $O(logn)$ 维护单点修改, $O(logn)$ 求一 ...
分类:
编程语言 时间:
2020-01-25 18:15:42
阅读次数:
82
树状数组是一种有效更新元素并计算前缀和的数据结构。给定一个数组,需要进行上述操作。朴素算法是线性时间复杂度,而树状数组允许在O(logn)的时间内执行这两个操作。 假设原数组为a,与之等价的树状数组为c,有如下关系: $\begin{cases} \ c[x]=\sum_{i=x-lowbit(x) ...
分类:
编程语言 时间:
2020-01-23 09:37:07
阅读次数:
76