- 博客(28)
- 资源 (2)
- 收藏
- 关注
原创 AVL树代码
这个代码输出了map与我的AVL效率的差异,明显AVL快。#include #include #include using namespace std;const int NMax=1000000;templatestruct node{ KEY k;DATA d; int h; node *left,*right;};#define HIGH(_)
2013-01-16 18:30:52 423
原创 stoer wagner代码
合并的代码很容易写错!#include #include #include #include using namespace std;const int NMax=550;int N,M,G[NMax][NMax],dist[NMax],map[NMax];bool inA[NMax];int Dinic() {//1.min=MAXINT,固定一个顶点P
2013-01-13 13:40:37 429
原创 Haskell读入一个字符串,把它转换成数字
toint :: String->Inttoint' :: Char->Inttoint' s |s=='1' =1 |s=='2' =2 |s=='3' =3 |s=='4' =4 |s=='5' =5 |s=='6' =6 |s=='7' =7 |s=='8' =8 |s=='9' =9 |s=='0' =0 |otherwise = 0
2012-12-01 10:37:01 3448
原创 Haskell线段树建树
调了一晚上……data Tree=Tree Int Int [Tree] [Tree]|Empty deriving (Show)build :: (Int,Int)->Treebuild (x,y)=if x<y then Tree x y [build (x,(div (x+y) 2))] [build ((div (x+y) 2)+1,y)] else Tree x y [Emp
2012-11-30 22:23:47 752
原创 完整版线段树求最小值,支持区间减
def Min(a,b): if a return a else: return bclass node: def __init__(self,x,y): self.l=x self.r=y self.key=0 self.lazy=0 i
2012-11-26 21:45:27 564
原创 用Python实现的基本版的线段树
class node: def __init__(self,x,y): self.l=x self.r=y self.key=0 if x mid=(x+y)/2 self.left=node(x,mid) self.right=node(
2012-11-26 20:57:04 1735
原创 用 Python实现C的读入方式
A=[]N=int(input("N:"))x=""tot=0while True: flag=0 y=x.split(" ") for j in y: if j!='': j=int(j) A.append(j) tot=tot+1
2012-11-26 17:59:43 368
原创 用Linux配置pacman
最近对AI突然来了兴趣,玩起了PACMAN(ai.net9.org)刚玩上瘾,就听说了AI比赛马上就要开始,而那个OJ随时都有可能关闭,于是我就想让我的AI能在本地运行我首先登入了windows7系统,可是令我失望的是,game.exe不管怎样都会崩溃,于是我果断登录了Ubuntu,首先,我在控制台里瞬间编译、模拟了游戏,可是,当我把生成好的result.txt用playerlocal播放
2012-11-16 22:01:47 1017
原创 NOIP2012纪念
这回参加了提高组。说说初步思考后的算法。Day1第一题:第二题:两个点相乘,排序(思路来自yjy)第三题:模拟。。。Day2第一题:线性同余(好像算导上的算法算出的X0不是最小的?)第二题:线段树(lazy思想)。。。第三题:。。。。。。
2012-11-15 21:46:06 461
原创 迷宫游戏代码OpenGL
#include // Must have for Windows platform builds//#include "gl\glee.h" // OpenGL Extension ¡°autoloader¡±#include // Microsoft OpenGL headers (version 1.1 by themselves)#include // OpenGL Utili
2012-10-24 17:21:33 817
原创 PHP登入登出系统
------------------------------------~index.php-------------------------------------------欢迎访问yc综合系统 if(isset($_GET["debug"])) setcookie("login","",time()-3600); if(isset
2012-09-16 12:15:01 997
原创 树状数组
树状数组支持部分线段树的操作。主要工作:求前缀和lowbit函数:f(x)=x&(x^(x-1)) 负责转移习题:SPOJ NKTEAM 详见PDF POJ 3321 求后序遍历二叉树顺序,子树即为前面的N项(N为包括自己的子节点个数)
2012-08-26 17:55:48 349
原创 矩阵乘法模板二(递归 例题3613)
____ DFS(int a){ ____ ret1; if(a==1) return G2; ret1=DFS(a/2); ret1=Cheng(ret1,ret1); if(a%2)ret1=Cheng(ret1,G2); return ret1;}注:____是矩阵结构体的类型,Cheng代表两个矩阵相乘返回的值,DFS
2012-06-01 20:54:08 1428
原创 矩阵模版(例题3070、3744)
struct matrix { double A[NMax][NMax]; matrix operator*(const matrix & m) { matrix ret={0,0,0,0}; for(int i=0;i<NMax;i++) for(int k=0;k<NMax;k++)
2012-05-30 21:36:22 345
原创 最大费用最大流模版(POJ 3422)
struct edge{ int num,len,C; edge *next,*rev;}*S[nnMax],pool[MMax];void build(int x,int y,int z,int C){ edge *p=&pool[L++],*q=&pool[L++]; p->num=y;p->len=z;p->C=C;p->next=S[
2012-05-27 21:34:19 429
原创 最小费用最大流模版
struct edge{ int num,len,C; edge *next,*rev;}*S[nnMax],pool[MMax];int d[nnMax];edge *P[nnMax];bool inq[nnMax];queue Q;void build_edge(int x,int y,int z,int C){ edge *p=&
2012-05-27 20:03:41 374
转载 DP算法入门(3)——最大子段和
令b[j]表示以位置 j 为终点的所有子区间中和最大的一个子问题:如j为终点的最大子区间包含了位置j-1,则以j-1为终点的最大子区间必然包括在其中如果b[j-1] >0, 那么显然b[j] = b[j-1] + a[j],用之前最大的一个加上a[j]即可,因为a[j]必须包含如果b[j-1]int max = 0;int b[n+1];int start = 0;int end =
2012-05-12 21:40:06 361
原创 DP算法入门(2)——完全背包问题(POJ2063题解)
昨天阅读了完全背包问题,顺便做了点题。完全背包问题超简单,尤其是O(VN)的算法,很容易就能懂,把01背包的第二重循环倒过来即可。2063这题就是按年走,每年根据当前的余额使用完全背包算出最大获利加到余额上,没什么可说的,注意都要除以1000,memset慎用,附属代码:#include #include #include using namespace std;const
2012-05-10 20:49:56 598
原创 DP算法入门(1)——多重背包问题(POJ1276题解)
今天照着崔老师的背包问题九讲学习了多重背包问题,收获很大。在背包问题九讲中,崔老师共给出了三种完全背包问题的解法,我折中选择了中间的那种,即“转化为01背包问题”的解法,背包问题九讲上介绍的非常好,很容易理解,在这里不多说,可遗憾的是文章中没有给出一个完整的代码,在这里贴出,输入输出格式以POJ1276为准:#include #include #include using names
2012-05-07 21:17:13 1358
转载 POJ2513 欧拉图入门
题目大意:给定一系列sticks,每个木棒的两端都涂有颜色,判断是否能够找到将所有的木棒连接起来的方法,使相互连接的木棒的两端的颜色是相同的?现在要解决的问题是找到一条路径,遍历图的每条边一次,即欧拉路问题要存在欧拉路就要满足:1.该图必须是一个连通图2.该图每个点的度数要么全为偶数,要么有且仅有两个点的度数为奇数 在实际编程过程中,使用map提交时超时,最后只好选择T
2012-05-05 09:28:42 691
原创 poj2299归并秒过
#include using namespace std;const int NMax=500050;long long N,S[NMax],c[NMax],tot;void merge(int a,int b){ int mid=(a+b)/2,x=a,y=mid+1,k=0; while(x<=mid && y<=b) { i
2012-05-04 21:27:42 355
原创 POJ3041 二分图最大匹配(网络流算法)
这题可以先构造一个二分图,它的|X|=|Y|=N,每当输入一个数对(x,y)时,连接一条x->y的边,求最小点覆盖即可。最小点覆盖:对于一个二分图中的每一条边(u,v)都选其中一个顶点(多条边可以选同一点),使得选择的所有点的集合(无重复)元素的数量最小。——我想我已经解释地很清楚了……最小点覆盖相当于最大匹配(证明见《算法艺术与信息学竞赛》,《算法导论》……),最大匹配我是用网络流(弱智
2012-05-02 21:16:38 2234
原创 Bellman-Ford算法判断负权回路
原来学过最短路算法,Dijkstra和Bellman-Ford算法都没认真学,只为了贪图效率和实用,学了个SPFA算法,从而忽略了另外两个算法的一些特性。今天在POJ上偶然遇到了一道题,求是否有负权回路,一点思路也没有,只能看别人的解题报告,发现了Bellman-Ford算法竟能解决这类问题,先对整个图松弛N-1次,再看看还有没有可松弛的边,有的话即是这个图存在负权回路。这次给我的教训就是:学
2012-05-02 18:58:24 968
原创 POJ 3469 第一次AC总结(Dinic+多路增广)
这题是道神题,神就神在,它既能让你搞懂网络流及其优化,还给了你很大的优化空间。首先,说一下算法,这题就是一道最小割+简单构图的题目,增加两个节点分别表示两个CPU,第i个界点与两个CPU各连接一条,边权值分别为Ai、Bi,在后面的输入中要分别给ab和ba都连接一条权值为w的边(注意不要再连反向边了),然后用你建的图求最大流即可,这回我用的是Dinic求解。下面便是优化,这题的优化最有学问,这次
2012-04-09 19:06:05 1299
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人