- 博客(109)
- 资源 (2)
- 收藏
- 关注
原创 位域 大小端
假设多个字段依次为A/B/C/...int A:10;A = 1对应二进制:00 0000 0001,称左侧为高端,右侧为低端一个字节8位,靠近高端放,叫靠左放,靠近低端放,叫靠右放大端:从第一个字段的高端开始,依次切下n位(n小段:从第一个字段的低端开始,依次切下n位(n考虑一下非位域,是不是也满足这个规律
2015-10-27 10:00:08 384
原创 便利贴
int a[2][10];int *q;int (*p)[10];q = a[1]; //a[1]指向一个元素p = a+1; //a+1指向一行 运算符重载: . .* :: ?: sizeof 不可以重载1. 对于单目运算符,建议选择成员函数2. 对于=,(),[],->只能为成员函数3. 对于+=,-=,…,%=建议为成员函数4.
2013-06-05 20:34:06 724
原创 HDU 1164
简单的题目,适合新手学习下面的程序,融合了:1、快速求质数;2、二分查找;3、递归;快速求质数,参考:http://blog.csdn.net/chaoojie/article/details/7710988#include "stdio.h"#include "math.h"int pri[7000];int n;int k;int check(int v){
2013-05-04 17:07:18 996
原创 HDU 1160
类似最长连续(不紧靠)子串,方法有两种参考http://blog.csdn.net/chaoojie/article/details/7919062先按照体重从小到大排序,再按照速度求最长子串#include "stdio.h"typedef struct _Fat{ int w, s; int p;}Fat, *pFat;Fat mice[1001]
2013-05-03 16:52:15 610
原创 HDU 1158 动态规划
#include "stdio.h"#include "string.h"#include "math.h"#define MAX(a, b) ((a)>(b)?(a):(b))#define MIN(a, b) ((a)<(b)?(a):(b))int n;int h, c, f;int w[13]; //12个月int main(){ int i, j, z, m,
2013-05-03 15:30:07 552
原创 HDU 1143
递推,参考资料:http://blog.csdn.net/ma_nong/article/details/7339411http://www.cnblogs.com/chaosheng/archive/2012/06/02/2532030.html当dp[i] 划分成 2 和 i-2 后,再划分成 4和i-4时,4的部分,不能再划分成2 , 2 组合,这样就会和前面的2
2013-04-27 21:36:19 1779
原创 HDU 1116
参考资料:http://www.2cto.com/kf/201107/96614.html当且仅当图是一条欧拉回路或者欧拉通路的时候,才能满足题目的要求,至于欧拉回路和欧拉通路的判定可以总结为如下:1)所有的点联通2)欧拉回路中所有点的入度和出度一样。3)欧拉通路中起点的入度 - 出度 = 1,终点的 初度 - 入度 = 1, 其他的所有点入度 = 出度;#in
2013-04-26 14:47:09 635
原创 Linux Mysql 学习
【远程登录】1、修改my.cnf。把bind-address改为实际IP。这问题可能导致不能远程登录,连不上服务器,而非权限问题2、使用root登录,grant all on *.* to 'xx'@'%' identified by '123',添加新用户。还可再用update更新user表
2012-12-18 16:03:35 343
原创 C语言 类型声明
1、[]与()的优先级相同,自左向右结合2、[]与()的优先级大于*3、[]里面的数字,不能省!即便有多维,也不能省略里面的数字,并且必须和“源”完全一致typedef int T[8]一个数组,长度为8的数组,类型为inttypedef int T()一个函数,返回值为inttypedef int *T[8]
2012-12-17 13:29:29 1113
原创 HDU 3401 DP+单调队列
不会做,看别人的代码,想了一天才想明白原文地址:http://blog.csdn.net/fp_hzq/article/details/7881075#include "stdio.h" #define M 2001 #define MAX(a, b) ((a)>(b)?(a):(b)) int dp[M][M]; int t, m, w; int ap, bp,
2012-12-05 15:53:46 462
原创 hdu 2483
写模拟类型的题是细致活……#include "stdio.h" #include "string.h" int m[301][301]; int r, c; int row[301][301], col[301][301]; int main(){ int z, i, j, k, c1, c0, t, sum; freopen("in.txt", "r",
2012-12-03 14:51:29 647
原创 hdu 3003 背包
背包#include "stdio.h" #include "string.h" #include "stdlib.h" typedef struct _Node{ int price, value; struct _Node *next; }Node, *pNode; pNode brand[11]; int dp[11][10001]; int n, m,
2012-12-03 13:19:18 712
原创 HDU 4004
二分查找:在 0 和 L 之间,枚举距离,假设mm = (0 + L) >>1,然后每次用最长为mm的距离去跳,最后看跳完的次数是否满足条件,若不满足,则表明,#include "stdio.h" int l, n, m; int stn[500005]; void qsort(int st, int ed){ int s = st; int e = ed; in
2012-11-10 10:41:19 718
原创 线索化 树
#include "stdio.h" #include "stdlib.h" typedef struct _Node{ int val; struct _Node* lf; struct _Node* rt; }Node, *pNode; int num[] = {3, 8, 1, 4, 0, 2, 9, 7, 6, 5}; int n = 10; void
2012-09-11 21:39:22 584
原创 整数的素数和分解问题
歌德巴赫猜想说任何一个不小于6的偶数都可以分解为两个奇素数之和。对此问题扩展,如果一个整数能够表示成两个或多个素数之和,则得到一个素数和分解式。对于一个给定的整数,输出所有这种素数和分解式。注意,对于同构的分解只输出一次(比如5只有一个分解2 + 3,而3 + 2是2 + 3的同构分解式)。例如,对于整数8,可以作为如下三种分解:(1) 8 = 2 + 2 +
2012-09-07 18:56:46 1185
转载 判断单链表是否存在环 判断两个链表是否相交问题
原文:判断单链表是否存在环,判断两个链表是否相交问题详解有一个单链表,其中可能有一个环,也就是某个节点的next指向的是链表中在它之前的节点,这样在链表的尾部形成一环。问题:1、如何判断一个链表是不是这类链表?2、如果链表为存在环,如何找到环的入口点?解答:一、判断链表是否存在环,办法为:设置两个指针(fast, slow),初始值都指向头,slow
2012-09-07 14:57:55 422
原创 基数排序
祈祷找个好工作……基数排序,按照从低位到高位,往桶子里塞(LSD)参考资料:http://baike.baidu.com/view/1170573.htm#include "stdio.h" #include "string.h" #include "stdlib.h" typedef struct _Node{ int num; int pos; struct
2012-09-06 15:25:13 368
原创 分治法 大数乘法
不知道有没有更高效的算法#include "stdio.h" #include "stdlib.h" #define M 100 typedef struct _Node{ int s[M]; int l; int c; }Node, *pNode; void cp(pNode src, pNode des, int st, int l){ int i,
2012-09-04 22:09:22 2561
原创 C++虚函数表解析
先看参考资料: 《C++ 虚函数表解析》#include using namespace std; class A{ public: virtual void FuncA(){ cout<<"A::FuncA"<<endl; } // virtual void Func2A(){ // cout<<"A::Func2A"<<endl;
2012-09-02 16:26:13 436
原创 【复习】最大连续子区间 最长递增字串
不熟练的原因是理解的不够深……#include #include #define MAX(a, b) ((a)>(b)?(a):(b))int num[100] = {-1, 2, 5, -4, 3, 0, -1, 3, 6, -10};int n = 10;int func1(){ int i; int max = 0x80000000, sum = 0;
2012-08-29 16:50:03 1065
原创 hdu 1150 二分图 最小点覆盖=最大匹配
到了算法会写,但看不懂题目要用啥算法的阶段……真是悲哀#include #include #include #define M 100int n, m, k;typedef struct _Node{ int to; struct _Node* next;}Node, *pNode;pNode map[M];int match[M];int visit
2012-08-28 21:53:52 485
原创 LCA <O(N logN, O(logN)>
参考资料:http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=lowestCommonAncestor#Another这里加上了RQM转LCA,可以参考《RMQ转换成LCA 》。这个算法的思想与上一篇《LCA 》的思想一样:1、求出树中每个节点的lev(树中的高度)以及每个节点的pare(节点的父亲)。2、假
2012-08-23 15:28:51 1544
原创 LCA <O(N), O(sqrt(N))>
参考资料:http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=lowestCommonAncestor#Another easy solution in O(N logN, O(logN)算法思想:1、求出每个节点i的父亲t[i]和在树中的深度l[i]2、将树按sqrt(n)高度划分成sqrt(n)+0|1块
2012-08-22 16:27:18 1789
原创 RMQ转换成LCA <O(N), O(1)>
参考资料:http://community.topcoder.com/tc?module=Static&d1=tutorials&d2=lowestCommonAncestor#A O(N), O(1) algorithm for the restricted RMQ#include "stdio.h"#include "stdlib.h"#define M 100int
2012-08-21 10:28:34 1918
原创 RMQ DP
最原始的DP,空间和时间复杂度O(n^2)。在线#include "stdio.h"#include "string.h"#define M 100#define MIN(a, b) ((a)<(b)?(a):(b))int num[M] = {2, 1, 67, 33, 53, 21, 6, 35, 44, 61};int n = 10;int dp[M][M];v
2012-08-17 11:49:03 391
原创 RMQ问题 树状数组
用树状数组解决RMQ问题,请看参考资料,作者用Java实现参考资料:http://www.cnblogs.com/ljsspace/archive/2011/08/10/2133514.html下面是仿照用C实现:#include "stdio.h"#include "string.h"#define M 100#define LOW(p) ((p)&(-(p)))int
2012-08-15 17:32:00 678
原创 hdu 1540 线段树
还是要有想象力……这题需要一个栈,用来保存摧毁的顺序。可能出现一个地点,被摧毁多次,而重建时,出栈,只有第一次需要重建,后面再出栈,发现已经是建好的,就不需要再重建例如:摧毁顺序是 5 2 4 5,重建时,5先出栈,重建。然后4、2依次出栈。5再出栈时,发现已经建好,那么就不用再重建了。问题的关键在如何搜索与某个点直接和间接相连的点,我的思路是:首先递归找到这个点,假设是k,然后回退。
2012-08-14 11:46:11 623
原创 hdu 2795 线段树
要注意:h和n的关系,创建树的时候,实际最多200000行#include "stdio.h"#include "stdlib.h"#define MAX(a, b) ((a)>(b)?(a):(b))typedef struct _Node{ int max; int st, ed; struct _Node* lf; struct _Node* rt;}Node, *p
2012-08-13 17:49:19 361
原创 ST 稀疏表
RMQ问题#define MAX(a, b) ((a)>(b)?(a):(b))int num[100] = {3, 9, 10, 4, 0, 7, 1, 8, 12, 5};int n = 10;int f[M][M];void ST(){ int i, j; int k = (int)(log(n)/log(2)); /// for(i=0; i<n; i++){
2012-08-09 14:27:12 1765
原创 hdu 2586 Tarjan离线
参考上一篇文章。这题建图有点不知道怎么下手,稀里糊涂也过了。现在想想Tarjan离线就是DFS+并查集,不难#include "stdio.h"#include "string.h"#include "stdlib.h"#define M 40001#define Q 200int n, q;typedef struct _Node{ int dis; int v;
2012-08-09 10:34:40 538
原创 LCA Tarjin 并查集 离线
以前了解的Tarjin算法是用来求连通分量,在这里是用来求最近公共祖先并查集用过,很有意思的工具。Kraskal算法是并查集最经典的应用。首先初始化集合,每个元素为单个集合。集合,我们需要选出一个代表,这个代表的性质是set[u] = u。一开始一个集合只有一个元素,所以该集合的代表也就是该元素。当两个集合需要合并时,例如:set[a] = a, set[b] = b。要是把a当作合并后集
2012-08-08 19:58:18 1408
原创 堆 排序
#include "stdio.h"int num[100] = {100, 3, 2, 0, 8, 9, 32, 12, 4, 1};int n = 10;void swap(int* a, int* b){ int t = *a; *a = *b; *b = t;}void ajast(int p, int ed){ if(2*p+1>=ed) return; if(
2012-08-06 11:31:23 342
原创 hdu 2190
DPdp[i][j]表示,第i列,以方式j结束时的情况数。#include "stdio.h"#include "string.h"void main(){ int c, n, i; int dp[31][2]; //方式0,以1*1的地砖结束;方式1,以2*2的地板结束 memset(dp, 0, sizeof(dp)); dp[1][0] = 1; dp[2][0
2012-07-27 15:51:13 812
原创 hdu 2189
直接DFS会超时,所以改用DP#include "stdio.h"#include "math.h"#include "string.h"int prime[50], p;void main(){ int c, n, i, j, k, t; int dp[151][50]; //因为个体无差别,所以要保证分组是以个数递增来的 memset(dp, 0, sizeof(dp)
2012-07-27 15:18:18 775
原创 hdu 3487
做了一天……内牛满面……参考资料:http://dongxicheng.org/structure/splay-tree/http://blog.csdn.net/liuwei_nefu/article/details/5901869#include "stdio.h"#include "stdlib.h"typedef struct _Node{ int
2012-07-26 19:50:58 806
原创 C++ 重载赋值运算符
C++类创建时,会产生一个默认的赋值运算符函数:A& operator=(const A&);普通类实例之间赋值可能没问题,但当类成员变量中有指针引用的动态内存时,复制后只是简单地将指针值复制,而没有将其指向的动态内存也拷贝一份,这样即多个类实例内的指针指向同一动态内存,当类实例析构时,会导致这块动态内存delete多次而产生错误。这也就说明需要我们对一些特别的类重载其赋值运算符函数,即深拷
2012-07-25 17:40:21 669
转载 C++ Traits技术
原文地址:http://www.cppblog.com/woaidongmao/archive/2008/11/09/66387.html概述:traits是一种特性萃取技术,它在Generic Programming中被广泛运用,常常被用于使不同的类型可以用于相同的操作,或者针对不同类型提供不同的实现.traits在实现过程中往往需要用到以下三种C++的基本特性:enum
2012-07-25 10:52:34 4559 2
原创 hdu 3415
单调队列参考资料:http://wenku.baidu.com/view/432e4c2ce2bd960590c677c6.html第一次写,粗心地把最后输出语句的%n写成了%k,搞了好久#include "stdio.h"#define M 100010typedef struct _Node{ int val; int pos;}Node, *pNode;Node
2012-07-24 16:10:07 539
原创 Splay 伸展树
应该算比较精简了,不过 指针 和 指向指针的指针 实在头疼!#include "stdio.h"#include "stdlib.h"typedef struct _Node{ int val; int rev; int child; struct _Node* pre; struct _Node* ch[2]; //0,左孩子; 1,右孩子;}Node, *pNode;
2012-07-19 16:15:10 335
原创 Treap 堆树
与AVL树操作类似,代码更简单#include "stdio.h"#include "stdlib.h"#include "time.h"typedef struct _Node{ int data; int fix; struct _Node* lf; struct _Node* rt;}Node, *pNode;void l_rot(pNode* root){ pN
2012-07-19 11:47:26 385
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人