自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Kaggle-Data Science London-1

import pylab as plimport numpy as npfrom sklearn.neighbors import KNeighborsClassifierfrom sklearn.metrics import classification_reportfrom sklearn.cross_validation import train_test_split,Stratif

2014-06-06 16:20:11 1169

原创 POJ 2752

KMP#include #include #include using namespace std;char b[400005];int next[400005];int n, m;void getnext(){ int j,k; j=0; k=-1; next[0]=-1; while(j<m) { if(

2014-04-15 17:13:20 731

原创 HDU 1028

母函数#include #include #include using namespace std;int c1[400], c2[400];int main() { int n; while(scanf("%d", &n) != EOF) { int i, j, k; for(i = 0; i < 400; i++) { c1[i] = 1; c2[i

2014-04-12 10:51:21 773

原创 HDU 1059

多重背包问题:#include #include #include #include using namespace std;#define LLEN 60005int main() { int n[7]; int cse = 1; int flag = 0; while(scanf("%d%d%d%d%d%d", &n[1], &n[2], &n[3], &n[4]

2014-04-12 08:43:53 806

原创 HDU 1518

和上一题一样#include #include #include #include using namespace std;int len[30];int mark[30];int ans, m;int aim;void dfs(int now, int finish, int k) { if(finish == 4) { ans = 1; return;

2014-04-10 16:03:40 755

原创 HDU 1455

深搜+剪枝,比较容易超时#include #include #include #include using namespace std;int mark[111];int len[111];int ans, num, aim, flag;int cmp(const void *a,const void *b) { return *(int *)a-*(int

2014-04-10 15:36:04 601

原创 HDU 1242

搜索水题:#include #include #include using namespace std;#define MMAX 999999int n, m;int dp[210][210];int map[210][210];int point[4][2] = {1, 0, -1, 0, 0, 1, 0, -1};void dfs(int x, int y, in

2014-04-06 21:11:20 591

原创 POJ 2236

还是并查集,只要计算一下距离,然后

2014-04-03 16:29:39 663

原创 POJ 1703

带关系的并查集,每次都存自己和父节点的关系即可。0表示相同,1表示不同#include #include using namespace std;#define MMAX 100050int p[MMAX];int rank[MMAX];void init() { for(int i = 0; i < MMAX; i++) { p[i] = i; rank[i]

2014-04-02 15:37:19 540

原创 POJ 1611

查找某个并查集里元素的个数#include #include using namespace std;#define MMAX 30005int p[MMAX];void init() { for(int i = 0; i < MMAX; i++) { p[i] = -1; }}int find(int x) { int s; for(s = x; p[s]

2014-04-02 14:53:36 600

原创 k-近邻算法

函数:tile(A,(x, y)) 重复A,x行y列tile(A,x) 重复A x次返回 array类型>>> numpy.tile([1,2],(1,2))array([1,2,1,2])mat.sum(axis=0) 计算行和mat.sum(axis=1) 计算列和argsort() 返回排序后的下标>>> aarray([3,1,2])>

2014-03-25 10:25:57 792

原创 POJ 1195

二维树状数组,比较简单#include #include #include using namespace std;const int llen = 1124;int tree[llen][llen]; int len;void init() { for(int i = 0; i <= len; i++) { for(int j = 0; j <= len; j++)

2013-12-21 10:55:27 558

原创 LA 4329

树状数组,前后统计比当前位置的大小的个数,然后累乘,再相加#include #include #include using namespace std;#define LLEN 100004int num[LLEN];int a[LLEN];int lowbit(int x) { return x & (-x);}void update(int pos) { w

2013-12-20 21:41:43 992

原创 POJ 1837

一开始想用集合枚举的方式,后来看了别人的解题报告发现原来通过转换可以变为一个01背包问题。dp[i][j] 表示前 i 个砝码,平衡系数为 j 的时候种类个数。其中 j 为7500为平衡状态(7500 = 15*20*20*25/2,因为不允许存在负数为数组下标,所以除以2)。这里当在左边的时候 j 减去一个数,在右边的时候加上一个数。当左右平衡的时候即会回到7500这个平衡状态。方程

2013-12-19 13:47:53 755

原创 POJ 2492

和食物链类似,需要计算集合之间的关系。这里明确一点即可,就是根节点的初始值是都相同,为0。只要在路径压缩和合并的时候注意即可。#include #include #include using namespace std;#define LLEN 2005int c, g;int p[LLEN], f[LLEN];void init() { for(int i = 0

2013-12-18 11:24:19 1315

原创 UVa 10891

一开始以为只抽一个数,后来发现原来是从一端抽取一列数#include #include #include #include using namespace std;int num[104][104];int sum[104];/*int dfs(int s, int e) { if(num[s][e]) return num[s][e]; if(s > e) retur

2013-12-17 22:37:34 958

原创 UVa 10635

最长公共子序列的问题,不过看了其他的代码是把该问题想最长上升子序列转换的(LIS问题可以在nlogn时间内解决,不理解为何不是n^2)代码如下:#include #include #include #include #include using namespace std;#define LLEN 80000#define INF 99999999int a[LLEN

2013-12-17 21:20:19 695

原创 LA 3384

约瑟夫问题的变种,输入n,k,m 表示有n个人,每数k个删除一次,最开始从m开始。最原始的约瑟夫是每数两次删除一次,公式如下:f(1) = 1f(2n) = 2*f(n) - 1f(2n+1) = 2*f(n) + 1理解的时候这么想:因为是递推,当有一个人的时候不能删除,即为终止状态。之后每次计算的时候依赖于前边的值,拿偶数为例,第二圈为 x 的人即为上一圈 2x-1 位置的

2013-12-16 15:27:57 709

原创 HDU 1207

汉诺塔问题,本来以为是个递推公式的题,f[n] = 2*f[n-2] + 3;后来发现当计算到 f[12]的时候就出错了,搜解题报告后发现原来是个动归的题其中需要用double 类型来存储数据,#include #include #include using namespace std;double a[65];double f[65];int main() { int

2013-12-13 13:08:40 1142

原创 HDU 4597

搜索题因为是两个人选数,并且都希望得到最优,随意需要枚举搜索4中情况,从中找到最优的#include #include #include using namespace std;#define LLEN 30int card1[LLEN], card2[LLEN];int dp[LLEN][LLEN][LLEN][LLEN];int sum1[LLEN], su

2013-12-08 15:23:43 835

原创 Servlet MySQL中文处理问题

中文编码问题一直都比较麻烦,这次我写Servlet 的时候再次遇到了这个问题MySQL编码格式为UTF8,刚开始的时候Servlet 并没有做相应的接收处理,所以一直出现编码问题。查询之后发现,当 setCharacterEncoding为null时,浏览器则采用ISO-8859-1的方式来进行重新的编码。所以在Servlet 接收的时候需要指定编码格式。下面是我的代码,接收U

2013-09-22 12:26:22 1040

原创 Java Servlet生成Json格式数据

在Servlet中覆写doGet方法,是用JSONStringer 类:protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub String IdLi

2013-09-17 14:38:23 33293 3

原创 POJ 2421

水题,直接贴代码了#include #include #include #include using namespace std;#define LLEN 105int map[LLEN][LLEN];int p[LLEN];typedef struct Edge { int u, v; int w;}Edge;Edge edge[10050];int cm

2013-09-05 10:56:00 592

原创 由倒水问题引发出来的对于模线性方程与二元不定方程的思考

今天下课的时候,拿同学手机玩了会游戏,不过很巧,玩的是个倒水的游戏。具体是这样的,相信大家肯定都玩过:给你两个已知容量的杯子,然后要求在某个杯子中得出指定容量的水。1、两个杯子分别为7L和4L,然后要倒出一升的水:求解这样的问题,其实就是求解二元不定方程:7x+4y = 1很容易解得 x = -1, y = 2。因为7和4互质,gcd(7,4) = 1,然后再用扩展欧几

2013-09-03 20:51:59 1471

原创 乘法散列表的分析

构造乘法散列表的乘法方法包含了两个步骤:1. 用关键字 K 乘上常数 A (02. 然后再用 m 乘以这个值,再向下去整总之散列函数为:h(k) = |_ (m*(k*Amod1)) _| 这里对m没有太大的要求,一般选择他为2的某个幂次方( m 的取值规定了hash的长度)Knuth提出 A 的最佳选择为 A ≈ (√5-1)/2 = 0.618 033 988 7.

2013-08-22 23:35:45 1566

原创 HDU 1391

分类讨论推倒公式而已#include #include #include using namespace std;int main() { int n; scanf("%d", &n); while(n--) { int a, b; int k; scanf("%d%d", &a, &b); if(0 == a && 0 == b) { printf("

2013-08-19 10:56:04 716

原创 Windows C++ 读取中文文件

中文用的是宽字符,在C++中使用的均是以w开头的函数、类。 文件名为英文\中文,内容为中文:int main() { wchar_t linex[100]; FILE* f1; f1 = _wfopen(L"in.txt", L"rt+,ccs=UNICODE"); locale loc(""); wcout.imbue(loc); while(!feof(f1)) {

2013-08-17 15:38:30 6812

原创 Windows下文件列举,搜索

Windows下列举文件用的函数是 FindFirstFile 和 FindNextFile ,另外一个结构体是WIN32_FIND_DATA 以下是MSDN对于WIN32_FIND_DATA的定义typedef struct _WIN32_FIND_DATA { DWORD dwFileAttributes; FILETIME ftCreationTime; FIL

2013-08-16 21:47:04 1330

原创 BBC 生命大设计

BBC霍金的生命的意义一视频中,有一段图案特别漂亮,于是我就写了一下,具体的繁殖规则是这样的:有存活体和死方格两个部分构成,我分别用 ' * ' 和 ‘  ’ 表示。当一个存活体周围有超过三个存活体时,这个存活体就会因为过度拥挤而死亡,当一个死方格周围有三个存活体时,这个死方格就会产生新的生命。这里我使用了滚动数组,从而优化了代码。不过在运行的时候发现,死亡率依旧很高,并没有达到视频中那么

2013-08-11 20:12:43 1367

原创 POJ 3122 二分查找

分派,每个人只能从其中一个派中取一部分,并且保证等分。就用二分了。做的时候用C++提交没有问题,用G++提交,输出的时候必须是 %f(居然double 类型的也用%f)无解了。#include #include #include using namespace std;#define LLEN 10005#define PI 3.1415926535897932do

2013-08-11 16:20:51 1519

原创 POJ 1251 优先队列 Prim

Prim 算法是每次都将未加入到结合V 中,并且边是最短的点加入到 V 中,从而最终形成最小生成树。这里可以使用优先队列进行算法的优化。这里的结构体里 v, next, w的 v是起点,w是权值,而next是head 的索引值,而head 是每次都更新的值,在使用 Prim 做更新的时候就不用像原来那样逐个遍历,而是使用head索引来依次查找。这里在搜索的时候,不是像之前使用Prim那样逐

2013-08-09 19:50:31 1459

原创 算法导论 最小生成树的形成

1.  给定一个图G和一棵最小生成树T,假定减小了不在T中的某条边的权值。请给出一个算法,来寻找经过修改的图中的最小生出树。这是算法导论中的一道思考题,其实想一下的话并不难,减小一条边,首先比较这条边和最小生成树中的最大边,如果还是比这个大的话就说明原来那个生成树仍然是最小生成树,如果小的话,这个时候先搜索出这条边与生成树中其他边所能形成的环,然后从这个环中去掉最长边,剩下的边即可构成

2013-08-08 17:55:29 1800

原创 ZOJ Dijkstra

成语接龙,告诉的是边的信息,但是这个其实就是告诉的一个起点,和一条边,终点可能是不可达的,所以最终告诉你的还是点的信息。先处理字符串,存入图中,然后就可以用Dijkstra了。#include #include #include using namespace std;#define NLEN 1010#define INF 0x3fffffffint cost[

2013-08-08 11:23:43 634

原创 ZOJ 1298 Dijkstra

计算多米诺骨牌推倒推倒的时间。这里先用Dijkstra计算单源最短路径,然后在其他不在该路径中的边所需要推倒的时间,time[i] + time[j] + edge[i][j]/2即可。这里要枚举#include #include #include using namespace std;#define NLEN 510#define INF 1000000int

2013-08-07 16:57:04 946

原创 HDU 1879

最小生成树,不过有些边是已经有的,有些边是没有的。这里有两种算法,一种是如下采用并查集的方式,另一种是将已经有的边的权值置为0,这样再用Prim或者Kruskal算最小生成树的时候就一定会将这条边选入。#include #include #include #include using namespace std;typedef struct Edge { int u,

2013-08-07 10:09:23 790

原创 POJ 1679 次小生成树

判断最小生成树是否唯一,方法是这样的:1. 对图中每个点,扫描其他的边,如果存在其他权值相同的边,则对改边作标记2. 然后用 Kruskal或者Prim 求MST3. 求的MST后,如果该MST不包含作了标记的边,即可判定MST唯一;如果包含作了标记的边,则依次去掉这些边在求MST,如果求的MST权值和原MST权值一样,即可判定MST不唯一。这里在在第二次计算生成树时,不能

2013-08-07 09:46:10 742

原创 ZOJ 1914 Prim Kruskal

先计算出最小生成树,然后在输出第p-s小的边#include#include#include#include#define N 501#define Maxint 9999999double c[N][N],x[N],y[N],dist[N];int s[N], closest[N],n;int cmp(const void *a,const void *b) {

2013-08-06 12:39:39 657

原创 ZOJ 2158 Prim

先算出节点之间的直接距离,然后再用Prim就能算出来了#include #include #include #include using namespace std;#define LLEN 2005#define MMAX 0x3fffffffint map[LLEN][LLEN];char node[LLEN][10];int t;int dis(int

2013-08-06 10:42:37 765

原创 ZeroC—ICE分布式数据同步Demo

环境介绍:操作系统:Windows数据库:MySQL 5.6IDE:VS2012ICE版本:3.5.0MySQL Lib版本:5.6.12 配置文件:客户端配置文件 info.conf# IP和端口ServerIP = 127.0.0.1ServerPort = 10000# DateBase信息DataBase = demoiceTable = d

2013-08-05 15:52:08 8686 2

原创 ZeroC—ICE中间件初步Demo

如今官方的版本已经到了3.5这里就先写个简单的初步,初学肯定会遇到各种各样的问题,这里顺便做个汇总。如果写的有不对的地方,还望指出。首先是编写Slice定义,编写Slice就是要包含应用的接口(只是接口,实现在外部),这里就按照手册写个打印的服务。Printer.ice:module Demo { interface Printer { void printSt

2013-08-04 11:53:12 3773

linux内核源码0.12

linux 0.12 源代码 内核 内核源代码

2013-01-02

无线安全知识

关于无线安全 破解 黑客 分享 攻防

2012-11-04

杭电动态规划

动态规划 杭电 课程 课件 详细解析 HDU

2012-11-01

算法导论答案

算法导论答案解析

2012-11-01

空空如也

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

TA关注的人

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