自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (4)
  • 收藏
  • 关注

原创 hdu 3874 Necklace 树状数组 离线操作

//对询问进行离线操作,读入所有的询问,然后将所有询问按照右升序排序//在处理第i个询问时,保证从第一个数到第i个询问的右边范围ri的所有和只是前面不相同的点的和//而且每个点的相同点的位置都是在ri范围内最后一个点,由于在第i次询问后的//所有询问的右范围都大于ri,所以删除相同的点不会影响后面的询问#include#include#include#include

2015-03-30 18:02:05 551

原创 hdu 3298Contestants 树形dp

//dp[u] 表示以u为根节点的子树的点student的总数//可以将这个树分为以u为节点的子树和除了这个子树剩下的点两部分//枚举所有点,求出sum-2*dp[i]的绝对值的最小值即可得到答案#include#include#includeusing namespace std;const int maxn = 100010;const __int64 inf

2015-03-28 17:38:46 383

原创 hdu5094Maze bfs+状态压缩

//开一个四维数组记录墙和门的情况//开一个三维数组标记在该位置时有哪些钥匙//钥匙的记录用状态压缩//注意在同一个位置可以有多把钥匙,在这卡了一个晚上。。。。。。。#include#include#include#includeusing namespace std;const int maxn = 60 ;int vis[maxn][maxn][1i

2015-03-27 21:49:50 535

原创 hdu 1429 bfs+状态压缩

//开一个三维标记数组,标记Ignatius有没有以拿到钥匙的状态到达该位置//由于钥匙的个数最多十个,所以可以用状态压缩来做//用1和0表示有没有第i种钥匙,这样对于这个人拿到的钥匙状态就可以用二进制数表示//用bfs找到最小值#include#include#include#includeusing namespace std ;const int maxn

2015-03-27 19:10:48 510

原创 hdu5025 Saving Tang Monk bfs+状态压缩

//开一个四维数组,前面两维表示在图中的位置//后面两维表示到达该位置有多少个钥匙和经过的路线有多少条蛇//由于时间和步数不同步,所以得用优先队列来做//或者遍历所有情况得到最大值//由于钥匙需要按照顺序找,所以能直接记录最后一个钥匙的大小//而对于经过蛇不是特定的顺序,所以对于蛇的记录可以运用一个二进制数表示#include#include#include#i

2015-03-26 22:19:48 470

原创 CodeForces 520B Two Buttons bfs+优先队列

#include#include#include#includeusing namespace std;const int maxn = 10010;const int inf = 0x7fffffff;int vis[maxn*10] ;int n,m;int ans = inf;struct node{ int step ; int value ;};

2015-03-25 22:12:11 758

原创 hdu3433 A Task Process dp+二分

//time时间内 dp[i][j]前i个人中完成j个A任务后最多能完成多少B任务// dp[i][j] = max(dp[i][j],(time - k*a[i])/b[i]+dp[i-1][j-k]);//由于time越大,dp[i][j]越大,故可以用二分找到最小的time的值#include#include#includeusing namespace std;

2015-03-25 22:09:04 501

原创 hdu2614Beat dfs水题

#include#include#includeusing namespace std;const int inf = 0x7fffffff;const int maxn = 30;int map[maxn][maxn];int vis[maxn];int N;int dfs(int u,int sum,int pre){   int ans = sum

2015-03-24 19:36:44 710

原创 hdu 3152Obstacle Course bfs+优先队列

#include#include#include#include#includeusing namespace std ;const int maxn  = 130;const int inf = 0x7fffffff;int N;int dx[4] = {-1,0,1,0};int dy[4] = {0,1,0,-1};int line[maxn][m

2015-03-24 19:14:23 516

原创 hdu 2181 dfs水题

哈密顿绕行世界问题Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1506    Accepted Submission(s): 957Problem Description一个规则的实心十二面体,它的 20

2015-03-24 15:37:48 890

原创 对于二分匹配的总结

(1) 最大独立集: 在一个二分图中,选择一些顶点,使得所选择的点集中任意两个顶点之间没有边相连最大独立集 = 顶点个数 - 最大匹配设所有匹配了的点的集合为A,所有没有匹配的点的集合为B设(u,v)为一条匹配边,那么集合B中的点最多能和u,v中的一个点中存在边,如果两条边都存在边的话会再次产生增广路而使得它不是最大匹配。那么对于匹配(u,v)中,如果存在与B集合中的点有边的点且这个点

2015-03-23 20:44:50 526

原创 hdu 3861 强连通分量缩点+二分匹配求最小路径覆盖

//用tarjan求出强连通分量,再将强连通分量的所有点缩为一个点//具体的tarjan算法http://www.cnblogs.com/saltless/archive/2010/11/08/1871430.html//然后重新建图,很容易想到剩下的是一个最小路径覆盖的题目#include#include#include#includeusing namespace

2015-03-23 20:07:58 571

原创 poj 3020Antenna Placement 最小边覆盖

//最小边覆盖//最小边覆盖=最大独立集=n-最大匹配//这个是在原图是二分图上进行的//由于此题为无向图//最小边覆盖=最大独立集=n-最大匹配/2;#include#include#includeusing namespace std;const int maxn = 45*15;int line[maxn][maxn];int match[maxn

2015-03-21 21:55:52 1052

原创 poj 3041Asteroids 二分匹配求最小点覆盖模板题

//最大匹配=最小覆盖//这题是求最小覆盖点的模板题#include#include#includeusing namespace std;const int maxn = 510;int line[maxn][maxn];int match[maxn];int vis[maxn];int N , K;int find(int start){ 

2015-03-21 16:54:40 674

原创 poj 2060 Taxi Cab Scheme 最小路径覆盖

//二分匹配的最小路径覆盖//对于第i次ride,如果在第i次ride结束后还能在第j次ride出发前赶到第j次的出发点//那么i到j就有一条边//根据最小路径覆盖 = N - 最大匹配即可得到答案#include#include#include#includeusing namespace std;const int maxn  = 510;int lin

2015-03-20 20:10:32 529

原创 poj 1719Shooting Contest

//本题大意是对于一个r*c的矩阵,每一列有两个是白色的//现在选c个位置,要求每一行至少有一个白色的方格被选上//每一列只能选一个//用二分匹配求出最大匹配,如果最大匹配等于r,则满足//每一行至少有一个白色的格子被选上//注意c>r的情况#include#include#includeusing namespace std;const int maxn

2015-03-19 20:30:16 697

原创 poj 1698Alice's Chance 最大流模板题

//建立一个超级源点和一个超级汇点//从超级源点到每一个film的权值为需要在这个film工作的天数D//然后从film到每个星期的第j天为一条权值为1的边//从每个星期的第j天到超级汇点的权值为1//这样就可以只需要验证从超级源点到超级汇点的最大流是否和所有film的天数之和是否相等#include#include#include#includeusing n

2015-03-18 22:39:40 522

原创 poj 1548 Robots 最小路径匹配解法

//最小路径覆盖=N-最大匹配#include#include#include#includeusing namespace std;const int maxn = 30*30;int line[maxn][maxn];int vis[maxn];int match[maxn];int N;int find(int start){int i;

2015-03-18 21:16:18 795

原创 poj1548Robots dfs做法

//搜索每一行//将该行的所有点都清除//然后再一改行的最后一个点的位置向下走一步//然后将下面一行的所有点清除//然后再重复上述操作#include#include#includeusing namespace std;const int maxn=30;int line[maxn][maxn];int C,R;int ans = 0;void

2015-03-18 20:50:39 681

原创 poj1486 二分匹配的唯一边

//用二分匹配求出最大的匹配数//然后任意删除一条边//如果再次求得的最大匹配不是原来的值//那么该边就是这个最大匹配的唯一边#include#include#includeusing namespace std;const int maxn = 110;int line[maxn][maxn];int match[maxn];int vis[maxn]

2015-03-17 21:44:18 996

原创 poj 1274The Perfect Stall 二分匹配模板水题

#include#include#includeusing namespace std;const int maxn = 210;int match[maxn];int line[maxn][maxn];int vis[maxn];int N , M;int find(int start){    for(int i = 1;i     {   

2015-03-17 17:55:11 614

原创 poj1469 COURSES 二分匹配模板水题

#include#include#includeusing namespace std;const int maxn = 310;int match[maxn];int line[maxn][maxn];int vis[maxn];int N , P;int find(int start){    for(int i = 1;i     {   

2015-03-17 17:53:34 566

原创 hdu 3832Earth Hour 最短路spfa

//用spfa求出1,2,3点到任意点的最短路//然后枚举1,2,3,任意点u//求出1,2,3,到u点的最短路之和ans//其最n-ans-1即为最多能熄灭的灯数#include#include#include#includeusing namespace std;const int maxn=1010;const int inf=99999;int

2015-03-16 21:52:15 553

原创 hdu3829Cat VS Dog 二分匹配求最大独立集

/*可以用最大独立集做对于一个人喜欢的和另一个人不喜欢的可以将这两个人用一条线相连由于一个人喜欢的和不喜欢的是猫和狗中的任意一个,所以这图是一个二分图最大独立集中任意两个人的喜欢的和另一个人不喜欢的是不同的所以在这个集合里删除所有的人的不喜欢的,不可能会有人喜欢的被删所以最大独立集就是开心的最多的人*/#include#include#includeus

2015-03-16 19:21:48 1134

原创 hdu3530Subsequence rmq

//用rmq做,ma[i][j],以i为起点的2^j长度的数组中的最大值//枚举所求最长子列的起点//枚举这个最大长度为是在2^(j-1)和2^(j)z之间//然后再在这个范围内找#include#include#include#includeusing namespace std;const int maxn=100010;int a[maxn],

2015-03-12 21:16:26 763

原创 hdu3183A Magic Lamp 贪心问题

//贪心问题,只需要保证在前面的数大于后面的数时//删除前面的数#include#include#include#includeusing namespace std;const int maxn = 1010;stack sta;int main(){    int ans[maxn];    string str;    int k;int

2015-03-11 21:08:24 540

原创 hdu1470Closest Common Ancestors LCA

//刚学lca,代码是参考大神的#include#include#includeusing namespace std;const int maxn=1010;const int maxq=500010;int parent[maxn];int ancestor[maxn];int answer[maxq];//**********************/

2015-03-09 21:19:05 504

原创 hdu2852 KiKi's K-Number 树状数组求第k大数

//再求第k大数时只需要getsum(b-1)//b就是a的第k大数//又gesum(b-1)#include#include#includeusing namespace std;const int maxn=100010;int tree[maxn];int lowbit(int i){    return (i&(-i));}int get

2015-03-07 17:40:15 692

原创 hdu5147 Sequence II树状数组求逆序对

//用树状数组求出在b前面比b小的数的个数//然后求b后面的顺序对的个数,//枚举b可得quad//由于数列是从1到n的所有数//那么(n-num[j])-(j-1-totol[j])即为第j个数之后比j大的数的个数//其中num[j]表示第j个数,total[j]表示在j之前比j小的数的个数#include#include#includeusing names

2015-03-07 15:15:25 723

原创 hdu2838Cow Sorting树状数组求逆序对

//对于数列中的一个数,在它前面比它大的一定要和它交换//在它后面比它小的一定得和它交换//可以用树状数组存入每一个数在它之前比它小的数的个数//那么(i-1)-total[i]为在它前面比它大的数的个数//然后在所有数都存入树状数组后用getsum(num[i])可以求出整个数列中比这个数小的数的个数//那么getsum(num[i])-1-total[i]则为在它之后比它小

2015-03-06 20:34:55 739

原创 hdu1394Minimum Inversion Number树状数组求逆序对水题

//ans[i]=ans[i-1]+(n+1)-2*num[i]//num[i]为输入时的数据//ans[i]为m=i时的逆序数//用树状数组求ans[0]的逆序对#include#include#includeusing namespace std;const int maxn=5010;int num[maxn];int tree[maxn];int

2015-03-06 18:34:47 773

原创 hdu 1541 Stars 树状数组模板题

#include#include#includeusing namespace std;const int  maxn=15010;const int maxlen=32010;int tree[4*maxn];int lowbit(int n){    return (n&-n);}int getsum(int i){    int sum=0

2015-03-06 16:24:57 587

原创 hdu 5148Cities 树形dp

//dp[u][k1]=min(dp[u][k1-k2]+dp[v][k2]+edge*k2*(k-k2))//dp[u][k]表示以u节点为根节点的子树中选k个节点所得的最优解#include#include#include#includeusing namespace std;const int maxn=2010;const __int64 inf=1e18;

2015-03-06 14:30:54 540

原创 hdu 5163 Taking Bus 水题

#include#include#includeusing namespace std;#define maxn 100010__int64 sum[maxn];int main(){    //freopen("in.txt","r",stdin);    //freopen("out.txt","w",stdout);    int T,n,m;int

2015-03-04 21:41:57 567

电子技术基础_模拟部分(第五版)_康华光_课后答案(无水印完整清洁版)

电子技术基础_模拟部分(第五版)_康华光_课后答案(无水印完整清洁版)

2015-10-30

Python学习手册

Python可移植、功能强大、易于使用,是编写独立应用程序和脚本应用程序的理想选择

2015-09-11

python基础教程(第二版)

python基础教程中文高清pdf【第二版】

2015-09-11

空空如也

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

TA关注的人

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