自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 01参数搜索+二分+spfa判负环

【题目大意】给出一个有向图,问求一个回路,使得回路上的点权之和/边权之和 最大。【解题思路】转:此题是对01分数规划的应用,那么首先明白01分数规划的思想.01整数规划问题就是求解方程(a1*x1+a2*x2+..+an*xn)/(b1*x1+b2*x2+..+bn*xn)的最小值/最大值问题。其中xi = 0或1(i=1,2...n)对于此类问题我们可以通过二分来求解很接近答案的

2012-09-29 15:39:43 1259 1

原创 无向图找环和生成树的边(桥)

//***************************************//const int N=3000;int mp[100010][3],cnt;int Btype,Time;int dfn[N],low[N],belong[N];int mystack[N],Top;void init(){ memset(low,0,sizeof(l

2012-09-29 02:00:32 3414

原创 有向图缩点或找割树边

//***************************************//const int N=3000;int dfn[N],low[N],tmp,vis[N];int cnt,belong[N];stackmystack;void init(){ memset(low,0,sizeof(low)); memset(dfn,0,sizeof(dfn));

2012-09-29 01:52:23 961

原创 整数的快速幂和矩阵的快速幂

//*******************************************************////1.整数的快速幂 m^n % k 的快速幂:long long quickpow(long long m , long long n , long long k){ long long ans = 1; while(n)

2012-09-29 01:36:57 846

原创 最小费用最大流

//**********************************//const int maxn=250;const int maxm=62272;const int inf=0x4ffffff;int n,m;struct Edge{ int v,next,c,w;}edge[maxm];int head[maxn],cnt;void ini

2012-09-29 01:15:22 656

原创 最大流dinic总结模版

const int N=550;const int M=300000;const int inf=1<<30;//******************************************//struct Node{ int v,next; int val;}edge[M];int level[N];//顶点的层次int head[

2012-09-28 20:57:27 685

原创 poj 2699(最大流dinic终极模版)

题意:有N个参赛者,两两比赛,赢一场比赛得一分,得分最高的为king,此外,如果一名参赛者比赛中打败了所有得分比他高的参赛者,那么他也是一个king.....题目给出一个非递减的得分序列,表示这N个参赛者的得分情况,按照比赛的得分结果,求最多可能有多少个king.思路: 以每名参赛者和每场比赛都为一点,所有参赛者的点连接源点,容量为各个分数,所有比赛连接一汇点,容量为1;然后从

2012-09-28 20:43:27 855

原创 sat

#include #include using namespace std;int n;bool *a;bool IsOk(){    if(n>=0&&n    else return 0;}int main(){    cout    cout    cin>>n;    bool S,A[10];    while(IsOk()

2012-09-21 01:59:33 740

原创 hdu 4291 矩阵的快速幂(寻找循环节)

补充一个知识:摸运算肯定会出现的循环节的。那么循环嵌套,对内层求MOD,层层向外跳出。现暴力求出循环节,然后用矩阵的快速幂。构找矩阵的方法:一般的对于线性递推方程fn=a1fn-1+a2fn-2+……+aifn-i线性递推方程即形如 fn=a1fn-1+a2fn-2+……+aifn-i的方程以斐波那契数列为例 an=an-1+an-2我们的目的是通过矩阵乘法,求得斐波那

2012-09-19 09:21:44 1869 2

原创 maxflow

网络流,分别把消息和人抽象成点,从始点向每个消息连边,容量为1,每个消息都向知道这条消息的人连边,容量也是1.每个人都连向x,容量为他最多透露的消息数。求出最大流即可。#include#include#include#includeusing namespace std;const int inf=1const int nMax=1010005;const in

2012-09-18 22:30:41 823

原创 数和矩阵快速幂hdu 3493

下面是 m^n % k 的快速幂:// m^n % kint quickpow(int m,int n,int k){ int b = 1; while (n > 0) { if (n & 1) b = (b*m)%k; n = n >> 1 ; m = (m*m)%k; } re

2012-09-18 04:41:57 851

原创 hdu 4292(拆点的网络流)

题意:有F种食物 D种饮料 它们都有一定的数量 有N个人 每个人都有自己喜欢吃的食物和饮料 (每个人至少要一种食物和饮料) 只有能满足他的要求时他才会接服务 求最大能满足多少人?思路:网络流 建一超级源点 汇点 源点与食物相连 边权为其数量,汇点与饮料相连 边权也为其数量 把人分成两个点 之间的边权为1 每个人与之需要的食物和饮料相连 边权为1 #include#include

2012-09-17 22:15:05 650

原创 hdu 4288(lower_bound&&upper_bound的运用)

#include #include #include #include #include #include #include using namespace std;int n;vectornum;//动态的数组int main(){ while(scanf("%d",&n)!=EOF) { num.clear(); int

2012-09-17 15:22:32 970

原创 poj 3694&&hdu 2460 (手写递归栈版的tarjan)

题意:求加入一条边后剩余的桥。题解:加入的边形成的环里的桥都不存在了。#pragma comment(linker, "/STACK:10240000000000,10240000000000")#include #include #include #include #include using namespace std;const int maxn=110009;con

2012-09-17 13:34:08 1339 3

原创 hdu 4125(手写递归 栈 )

(AC仅限于hdu,跑了3900+ms,险过。不过在poj上TLE,因为poj上的时间是3000ms)解题思路:对于此题首先将所给的数字构造一棵平衡二叉树,不过不能用纯模拟去构造这棵树,因为所给的数字构成的树可能就是一条链状!若用纯模拟去构造的话无疑会TLE!那么我们观察易得下一个数字的父节点必定是当前已加入的所有节点中比下一个节点大的所有数中的一个最小值,或者是当前已加入的所

2012-09-14 16:17:26 1248 1

原创 hdu (4268)贪心muliset的upper_bound和lower_bound

有童鞋A 和 童鞋BA想用手里的牌尽量多地覆盖掉B手中的牌..给出了T表示有T组样例..每组样例给出一个n 表示A和B手中都有n张牌接下来2*n行 有h w 分别代表A手中n张牌的高和宽 以及 B手中n张牌的高和宽问A手中的牌最多能覆盖B多少张牌思路:对一个坐标排序假设是x坐标然后扫描维护一个y坐标然后每次取的是堆里面最大的Tips:set里的一

2012-09-13 15:12:04 797

原创 hdu 4284(状态压缩)&& poj 3311 &&,,,

题目:给出一些城市,从1出发,旅游一圈回到1,由于花费可能不够,所以选择一些城市打工,打工之前需要花费d买一个证,工资为c。选中的城市必须去工作一次,而且只能工作一次,问能不能完成旅行。思路:先用floyd预处理,因为hdp[pos][statue]表示在statue的情况下到pos位置的能到达最多的钱。然后枚举  (1#include#include#include#in

2012-09-11 15:44:13 671

原创 分状态的树状数组hdu 4267

我们用tree[v][k][mod]来表示树状数组的状态。假如a、b、c、k,那么用树状数组,区间更新,update(b,a%k,k,c),update(a-1,a%k,k,-c) ,就可以了~~~也就是说,区间[1,b]内每个ui % k == mod ,那么ui 的值就加c ,然后[1,a-1]区间内每一个ui-c,于是就完成了[a,b]这个区间内的更新了~~查询q的时

2012-09-11 03:37:21 686

原创 树状数组总结

树状数组的基本知识已经被各种大牛和菜鸟讲到烂了,我就不多说了,下面给出基本操作的代码。假定原数组为a[1..n],树状数组b[1..n],考虑灵活性的需要,代码使用int *a传数组。 #define lowbit(x) ((x)&(-(x)))int sum(int *a,int x){int s=0;for(;x;x-=lowbit(x))s+=a[x];retur

2012-09-11 03:30:55 639

原创 2-sat(2011年成都现场赛)

/*在2-sat中,i和j冲突,连两条有向边i-->j',j-->i'。那么当i和j要求不同时,如果i和j相同,就表示i和j冲突,连两条有向边i-->j',j-->i'。那么当i和j要求相同时,如果i和j不同,就表示i和j冲突,连两条有向边i-->j',j-->i'。求强连通分量,如果i和i'在同一SCC中,则无解,输出no,否则输出yes。*/#include#inc

2012-09-07 13:04:41 798

原创 poj 2337(欧拉回路的最小子字典序)

C++语言: poj 2337 并查集+欧拉通路+贪心思维+dfs#include #include #include #include #include #include #include using namespace std;#define mset(x) (memset(x,0,sizeof(x)))#define MAXN 26struct node{ i

2012-09-05 16:26:46 3366

原创 poj 1275(约束差分求解:汇总)

有是一道差分约束题,虽然啊以前看过,但不是很了解,现在明白了。转:对于差分约束系统的一个资料参考:1) 建图后求最短路(对应 从求最短路后分析开始。求最短路后一定有:d(u) + w(u,v) >= d(v) 转换为:d(v) – d(u) 所以得到建图的规则为:一条b到a的边权值为c。建图后求最短路即为一组解。2) 建图后求最长路(对应 >= 的差分约束)同上。求

2012-09-04 16:09:23 780

原创 hdu(4021)八数码的解是否存在问题

题意:给出一个board,上面有24个位置,其中23个位置上放置了标有数字1~23的方块,一个为空位(用数字0表示),现在可以把空位与它旁边的方块交换,给出board的起始状态,问是否可以达到指定的状态。思路:看起来很像著名的“八数码”问题,首先,针对八个特殊位置(死角),如果这里有空位就把它和相邻的位置交换,这样之后如果两个状态的对应死角上的数字不同,那么显然是不能达到指定状态的,因为无

2012-09-03 17:38:11 1151

原创 poj (3074:数独)Dancing Link算法神模版

http://www.ocf.berkeley.edu/ jchu/publicportal/sudoku/0011047.pdf题意:玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个粗线宫内的数字均含1-9,不重复。/*DLX解决9*9的数独问题,转化为729*324的精确覆盖问题行:一共9 * 9 * 9 == 729行。一共9 *

2012-09-02 17:04:22 4700

空空如也

空空如也

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

TA关注的人

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