自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

青竹梦

青色的竹子,紫色的梦

  • 博客(22)
  • 资源 (2)
  • 收藏
  • 关注

原创 排列与组合专项公式

1,错排公式D(n) = (n-1) [D(n-2) + D(n-1)]2,组合公式C(n,k) = C(n-1,k) + C(n-1,k-1)3,把n个相同的豆子放在k个不同的碗里,有几种放法。假如xi代表第i个碗里有xi个豆子。x1+x2+x3+....+xk=n;(xi>=0)x1'+x2'+x3'+....+xk'=n+k(xi'=xi+1,xi>=

2014-02-28 09:18:21 1237

原创 hdu-1325-Is It A Tree?--并查集判断是否是一棵树

这绝对是杭电的一个坑题。。。。绝对是。。。。要注意加的边是有向边。#include#include#include#includeusing namespace std;#define maxn 19int f[maxn];int ru[maxn];int vis[maxn];int leap;int find(int x){ while(x!=f[x])

2014-02-25 16:54:46 1278

原创 hdu-1011- Starship Troopers-自由树转二叉树+树形DP

题目很水,但是有很多易错点。。。注意:1,题目输入的时候是自由树,无向边。2,如果某个点的bugs是0,也必须有至少一个士兵经过此点。做法::按照题意,把自由树转为二叉树。然后树形dpdp[x][y]:在二叉树中的x节点为根的树中,使用了y个士兵获得的最大值。dp[x][y]=dp[node[x].l][k]+nval[x]+dp[node[x].r][y-k];

2014-02-24 10:34:38 1318

原创 多叉树转二叉树

将多叉树转为二叉树:#include#include#include#includeusing namespace std;struct list{ int l; int r;}node[2001];void init(){ int i; scanf("%d%d",&n,&m); memset(vis,-1,sizeof(vis));

2014-02-24 09:05:17 3984 2

原创 Codeforces Round #231 (Div. 2)A-D

A题:不解释,注意任意一个位置的数必须大于等于1#include#include#include#include#define LL __int64using namespace std;int main(){ int i,l1,l2; char str[100001]; while(~scanf("%s",str)) { in

2014-02-21 12:42:36 749

原创 poj-3114-Countries in War-tarjan缩点建图+dij求最短路

tarjan缩点建图,用了一上午的时间写好了模版。但是在求最短路的时候不小心使用了floyd,乃至超时。这不科学。。按照正常的时间复杂度,应该超时不了的。下午比赛,晚上把之修改为dij,最后通过了~~#include#include#include#include#include#include#define tar_maxn 1100000#define INF 9

2014-02-20 19:51:25 833

原创 超级模版系列----tarjan

tarjan算法模版:须预定义:#define tar_maxn 1100000//最大的边数#define INF 99999999//任意两点间最大的距离#include#include#include#include#include#include#define tar_maxn 1100000#define INF 99999999using name

2014-02-20 19:48:56 1259

原创 Codeforces Round #230 (Div. 1)

A题:A题题意:定义两个点为相连的,则:1,两点间的欧式距离等于1,并且这两点的任意一个点都没有被锁上2,如果A,B相连,B,C相连,那么A,C相连。定义特殊点为距离坐标原点的欧式距离不超过n的整数点。让你锁上一些点,使得任意特殊点不能和任意非特殊点相连。求出锁得的最少的点。做法:求四分之一圆。枚举x。注意用64位啊#include#include

2014-02-19 10:14:11 1679 2

原创 poj-3130-3335-求多边形的核

求多边形的核一般使用半平面交的方法。如图所示:在对多边形的每一个边进行延长,然后每条变把多边形分成两半。图中红色的区域就是核所在的区域。红色区域上的点可以看到多边形的任何一个顶点。//下面的代码是我在网上找到的模版#include#include #include #define eps 1e-8using namespace std;const int MAXN

2014-02-18 09:21:12 2034

原创 TC-SRM-609-DIV2-950- VocaloidsAndSongs

做到这道题目的时候,大脑已经极度不清醒了,头昏昏的,很不舒服。后来想不能半途而废。要努力做一次完美的比赛。后来就直接做了。最后rank50,虽然是在div2,但是也是比较高兴的。cha阶段,我一开始看见两个错误的代码,但是下手太慢了,就被别人cha掉了。伤心。。。言归正传:预处理dp(i,j):从i个中取j个的取法。ans[i]:一共有i首歌曲,结果是多少。i首歌曲,三

2014-02-16 20:28:29 1403

原创 SDUTOJ-1650-dp

纯动归问题。dp[i][j]:前i个字母共用了j个按键,最小的按键次数。dp[i][j]=min(dp[k][j-1])(k#include#include#include#include#include#define LL long long#define INF 1000000000using namespace std;vectorvec[1001];char

2014-02-16 20:05:45 917

原创 SDUTOJ-1646-Complicated Expressions-二叉树的建立

由题意,我们可以建立一个二叉树。然后中序遍历二叉树,得到最终的结果。在中序遍历二叉树的时候,我们判断当前子树的根节点与其子节点的符号之间的关系。#include#include#include#include#include#include#define LL long long#define INF 1000000000using namespace std;str

2014-02-16 19:58:29 1005

原创 Five in a Row, Again-记录状态的dfs+剪枝

用一个二进制记录当前状态。二进制中的0代表当前点已经被走过,1代表当前点还未走过。如果当前二进制之前计算过,且值大于当前值的话,那么就终止不走。#include#include#include#includeusing namespace std;int shuyu[5001];int n;int w[101][101];int e[101][101];int s[1

2014-02-16 19:51:58 1037

原创 Codeforces Round #229 (Div. 2)

模拟放数过程,从大往小放。先放最外层,最外层有可能不会被放满,然后逐步的往里放,一直到第一层为止。#include#include#include#includeusing namespace std;int dp[100001];void chu(int n,int m){ int i,j; for(i=1; i<=m; i++) {

2014-02-16 19:48:05 959

原创 poj-1095-Trees Made to Order

调试了一晚上,终于对了。。整个晚上竟然都没有发现取数之前没有+1,太气人了。。用dos(i,j,k)代表:子树的根节点为i,一共有j个节点的第k大的树。#include#include#include#include#include#include#define LL long long#define MAXN 550000000using namespace st

2014-02-14 00:22:01 1468

原创 poj-1807-Bee Breeding-坐标系

建立坐标系。然后根据点的坐标来判断两点之间的距离。#include#include#include#include#includeusing namespace std;#define LL intvectorvecx,vecy;void add(int x,int y){vecx.push_back(x);vecy.push_back(y);}LL xx[8]={-1,

2014-02-13 19:08:24 1433

原创 poj-1699-Best Sequence-dfs+子状态

这道题目竟然真的ac了,好神奇啊。当时算的时间复杂度为O(T*N!),理论值达到7kw。做法:预处理dp数组,使得dp[i][j]代表j放在i后面长度的增加值。然后dfs,dfs的时候要注意,用一个二进制数标记当前状态。二进制中0代表当前位置已取,1代表当前位置未取。每次查找二进制的子状态。然后看看哪个位置在子状态消失了。一定要直接查找子状态。查找方法详参我的另一篇

2014-02-13 10:54:51 1097

原创 poj-2406-Power Strings-kmp

利用kmp求next数组的思想对字符串进行模式匹配。显而易见,最后一个字符的匹配到的位置到最后一个字符是一个循环节。例如匹配串:   a b a c a b a cnext数组:0 1 1 2 1 2 3 4第8个字符的next数组的值为4;则一个循环节为8-4+1=4;总共的循环次数为8/4=2次;#include#include#include#inclu

2014-02-11 10:50:02 991

原创 kmp中next和nextval的区别

模式匹配。kmp中next数组表示如果当前匹配不成功,匹配串移动到的位置,不考虑移动到的位置的数与当前位置数的关系。kmp中nextval数组表示如果当前匹配不成功,匹配串移动到的位置,考虑移动到的位置的数与当前位置数的关系。求next while(i<len) { if(j==-1||str[i]==str[j]) {

2014-02-11 10:44:08 13284

原创 poj-3694-Network-并查集+tarjan

做法:利用tarjan算法求出每一个节点出现时对应的时间戳dfn。对于每一个桥,恰有一个节点与其对应。isb[i]标记i之前的边是不是桥。当连接两点的时候,求出这两个点到根节点的路径上的边,把这些边的isb设置成0;#include#include#include#include#define MAXN 500001using namespace std;struc

2014-02-10 10:24:07 1171

原创 Codeforces Round #228 (Div. 1)-B-Fox and Minimal path

做法:输入一个数n(例如n=11)。把n转化成二进制为(1011)。那么11构造出来的图为:从点1到点2有三条路,分别为路1,2,3。三条路分别是1011中的三个1,即把11分离成8+2+1。1路上分离出来8条路,8=2*2*2;2路上分离出来2条路,2=2;3路上分离出来1条路。把所有的点画出来即为:红色的点代表图中的点,黑色的线是边。

2014-02-07 20:15:09 1592

原创 poj-3422-Kaka's Matrix Travels-最小费用最大流

最小费用最大流。建图方式如图所示然后就是费用流的模板~~把最小费用转化成最大费用,做法一样。还有一种做法,就是把所有的边的费用取负,然后去最小费用,然后去负值就好。‘#include#include#include#include#includeusing namespace std;#define INF 99999999#define maxn 505

2014-02-06 17:30:38 1201

zookeeper的设计原理及应用

该文件详细的介绍了zookeeper的设计原理,主要对选举和事务进行说明。还列举了一些应用场景,值得一看

2018-03-22

空空如也

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

TA关注的人

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