自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(388)
  • 资源 (1)
  • 收藏
  • 关注

原创 两个有序数组,求第K小数

两个有序数组A[0...m-1],B[0...n-1],A与B中所有元素均不重复,求A[],B[]合成数组的第K小数class Solution {public: //there are no duplicate elements in array A or B. int findKthSmallest(int A[], int m, int B[], int n, int k

2015-10-22 14:02:51 1419 1

转载 关于sizeof()函数

千万不要把数组名看成指针,尽管有些时候他们是相通的,但也仅限某些时候而已。sizeof是一个奇特的函数,告诉你你也许不相信——sizeof在编译的时候就已经确定sizeof的结果了,这有点类似于宏。char str[] = “Hello” ; sizeof (str ) = 6 编译器编译的时候根据上下文完全知道str是一个数组,sizeof (str ) = 6 理所当然是在求数

2015-10-20 23:53:04 905

原创 HDU 3966 Aragorn's Story 树链剖分模板

题目:http://acm.hdu.edu.cn/showproblem.php?pid=3966题解:#include#include#include#includeusing namespace std;#define MAXN 50010#define L(u) (u<<1)#define R(u) (u<<1|1)//写在类里面爆栈int n, m, q;i

2013-05-30 22:46:44 3818 1

原创 POJ 1330 Nearest Common Ancestors 最近公共祖先模板/在线/离线

题意:求树上两个节点的最近公共祖先算法一:tarjanLCA(u) {  Make-Set(u)  ancestor[Find-Set(u)]=u  //设置u所在集合的祖先  对于u的每一个孩子v {   LCA(v)   Union(v,u)              //把v生成的子集并入u中   ancestor[Find-Set(u)]=u

2013-05-28 21:53:46 1784

原创 ZOJ 3687 The Review Plan I 容斥原理/禁位排列

题意:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4970题解:#include#include#includeusing namespace std;#define MOD 55566677#define lint long long#define MAXN 52int fa[MA

2013-05-26 23:25:09 1574

原创 POJ 1390

BlocksTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 3796 Accepted: 1506DescriptionSome of you may have played a game called 'Blocks'. There are n bloc

2013-05-22 23:05:47 2211

原创 HDU 1412 搬寝室 DP

题意:。。。题解:将所有的数从小到大排序。证明一个性质:若一个数num[i]被选中,那么一定要选num[i-1]或者num[i+1]来与它配对,这样才能使差方最小。例如有下面四个数,他们从小到大到分别为x, x+a, x+a+b, x+a+b+c选择(x,x+a),(x+a+b,x+a+b+c) ,差方=a^2+c^2选择 (x,x+a+b), (x+a,x+a+b+c),

2013-05-19 20:48:28 922

原创 HDU 4291 A Short problem 矩阵,多重函数求循环节

题意: According to a research, VIM users tend to have shorter fingers, compared with Emacs users.  Hence they prefer problems short, too. Here is a short one:  Given n (1 18), You should solve for

2013-05-19 13:34:09 1217

原创 HDU 4288 Coder 离线线段树部分更新

题意:下标模5等于3的数的和。题解:可以这样,线段树的每个节点存一个数组 sum[5],表示当前节点覆盖的区间中,从左到有编号,模 5 为 0,1,2,3,4的所有数的和每个节点再保存一个当前节点所包含的区间中有多少个数的信息:cnt。那么:        添加的时候就是在相应的位置把整数加进去,并把 cnt+1        删除的时候就是在相应的位置赋值

2013-05-19 00:52:16 887

原创 HDU 3974 Assign the task 线段树(树映射到区间)

题意....题解:#include#include#include#includeusing namespace std;#define MAXN 100001#define L(u) (u<<1)#define R(u) (u<<1|1)struct A_NODE{ A_NODE *sun, *bro; int num;} anode[MAXN],

2013-05-18 22:24:14 932

原创 划分树模板

#include#include#include#includeusing namespace std;#define MAXN 100001#define L(u) (u<<1)#define R(u) (u<<1|1)#define MID(l, r) ((l+r)>>1)struct SegTree{ int l, r;} node[MAXN*4];in

2013-05-11 20:22:47 737

原创 ZOJ 1006 Do the Untwist 加密解密 模拟

题意:加密、解密题解:#include#include#includeusing namespace std;int key;int c2i[1000];char i2c[1000];void init(){ for(int i = 'a'; i <= 'z'; i++) c2i[i] = i - 'a' + 1; c2i['_'] =

2013-04-16 20:52:14 1104 1

原创 ZOJ 1005 Jugs

题意:两个罐子倒水题解:#include#include#includeusing namespace std;int a, b, n;bool vis[1010][1010], flag;int res[10100], step;void print(){ for(int i = 0; i < step; i++) { switch

2013-04-16 19:54:46 1890

原创 ZOJ 1003 Crashing Balloon 搜索

题意:100个气球,气球上标有1-100的号码,每踩一个气球,则自己的得分可以乘以该气球的标号(初始得分为1,每个气球只能踩一次)。题解:假如a>b,求出a,b所有可能的分解情况(分解为1-100的数的乘积)。然后比对,只要存在一种分解情况,使得a的因子中不含b的因子,a就是可能的。#include#include#include#includeusing namespace

2013-04-15 21:29:03 2842 1

原创 线段树模板(lazy标记)ZOJ 3686

题解:先搜索用将树上的点给定时间戳,以此当做该节点的区间。#include #include#includeusing namespace std;#define N 150005bool vis[N], check[N];int dep, k, n;struct treeNode{ int id; treeNode *brother; treeNode *son;

2013-04-03 23:25:22 1514

原创 归并树 第K大值

/*1.O(n*(logn)^2)2.树的节点node从1开始(方便位运算)3.树的层数h从0开始(节约空间)4.数组a的下标从1开始5.我们在queryVal中二分的是[1,n]整个区间,而不是[l,r]区间,这似乎是不正确的。因为假如[l,r]区间中的值为[2,10,22,23],我们要求第3大的值,如果二分到的值是11,他的在[l,r]中的rank为3,这不就错了么?

2013-04-03 15:28:14 1105

原创 ZOJ 1002 回溯

题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=2#include#include#includeusing namespace std;int a[5][5], w[5][5];int n, ans;bool check(int r, int c){ int i; if(w[

2013-03-28 19:35:31 954

转载 A*B mod C的计算方法

A*B mod C的计算方法方法一:大家都能想到,计算A*B的值,然后在计算A*B mod C的值。这是最简单的,但是这个有个弊端,即a*b的值不能太大,太大可能溢出。方法二:回顾进制转换的知识,二进制转换为10进制可以以2的权值相加(貌似是这样描述的)。比如13=(1101)2=1*2^3+1*2^2+0*2^1+1*2^0。同样的,当我们计算A*

2013-03-23 13:43:42 4799

原创 2013腾讯编程马拉松初赛第〇场

小明系列故事——买年货Time Limit: 5000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 374    Accepted Submission(s): 162Problem Description  春节将至,小明要去超市购置年

2013-03-21 17:19:08 1671

原创 POJ 3678 2-sat

#include#include#include#includeusing namespace std;const int SIZE = 2010;int n, m;int head[SIZE], E;bool instk[SIZE];int stk[SIZE], top;int blk[SIZE], blkCnt;int low[SIZE], dfn[SIZE], ti

2012-12-08 18:30:22 1611

原创 POJ 3207 2-SAT

题意:给出一个圆,圆上有许多点,点与点之间有连线,连线要么在圆内,要么在圆外。现在给出所有连线的两个端点,判断这些线能否不相交?#include#include#include#includeusing namespace std;const int SIZE = 5010;int n, m;int e[SIZE][2];int head[SIZE], E;bool in

2012-12-08 00:03:51 870

转载 汇编简化段定义

1. 存储模型伪指令 表4.2.3 MASM 5.0和MASM 6.0支持的存储模型:存储模型功 能适用操作系统Tiny (微型)所有数据和代码都放在一个段内,其访问都为NEAR型,整个程序≤64K,并会产生.COM文件。MS-DOSSmall (小型)所有代码在一个64KB的段内,所有

2012-11-28 22:50:56 8445

原创 ACM/ICPC 2012 天津 - HDU 4438 - 算概率

题解:简单算下概率即可#includeint main(){ int x, y; double p, q; int t; scanf("%d",&t); while(t--) { scanf("%d %d %lf %lf", &x, &y, &p, &q); double tig = (x * p + y *

2012-11-24 22:16:39 1206

原创 ACM/ICPC 2012 天津 - HDU 4433 - DP(顺推)

题意:动态规划(顺推)注意:在第一个字符之前加一个‘0’,在末尾加两个'0'dp[i][x][y]表示前i个字符已经调整好,并且第[i+1]为x,[i+2]为y,此状态最少需要的调整次数。#include#include#include#includeusing namespace std;char s1[1010], s2[1010];int a[1010], b[101

2012-11-24 21:23:13 2000

转载 转】计算机界的传奇人物:高纳德

高纳德设置了一个悬赏游戏。如果有人挑出了他编写的TEX程序的错误,他就给挑错者奖励。第一个错误值2.56美元,第二个值5.12美元,第三个值10.24美元。据说,这张10.24美元的支票是他迄今为止为此签出的最后一张。     高纳德是美国计算机科学家唐纳德·克努斯(DonaldKnuth)的中文名。这位“现代计算机科学的鼻祖”是计算机界的传奇人物。他在 年仅36岁时就获得了图灵奖

2012-11-17 02:11:52 4026

转载 C/C++头文件

引用 C/C++头文件一览C/C++头文件一览 ( C、传统 C++#include     //设定插入点#include      //字符处理#include      //定义错误码#include      //浮点数处理#include     //文件输入/输出#include     //参数化输入/输出#include

2012-11-15 20:03:26 1118

转载 __int64 与long long 的区别

//为了和DSP兼容,TSint64和TUint64设置成TSint40和TUint40一样的数  //结果VC中还是认为是32位的,显然不合适  //typedef signed long int     TSint64;  //typedef unsigned long int   TUint64;    //ANSI C中规定long long才能表示64位  //参

2012-11-15 19:13:44 818

原创 scanf()、getchar()、gets()比较

相同点:调用scanf()、getchar()、gets()这三个函数时,若缓冲区中残留有可令函数结束的字符,则函数碰到时会按自己结束方式结束。没有可令函数结束的字符,则函数会等待键盘输入。键盘键入的数据都会先放入输入缓冲区中,然后函数从缓冲区中读数据。 不同点:读字符串:scanf()函数:从缓冲区中拿字符,碰到【空格、回车、Tab键】则将其从缓冲区中扔掉。遇到第一个不为【空

2012-11-15 14:56:13 745

转载 cin.get( )与cin.getline( )的区别

cin.getline()和cin.get()都是对输入的面向行的读取,即一次读取整行而不是单个数字或字符,但是二者有一定的区别。cin.get()每次读取一整行并把由Enter键生成的换行符留在输入队列中,比如:#include using std::cin;using std::cout;const int SIZE = 15;int main( ){cout

2012-11-15 13:13:53 730

转载 C++输入cin详解

程序的输入都建有一个缓冲区,即输入缓冲区。一次输入过程是这样的,当一次键盘输入结束时会将输入的数据存入输入缓冲区,而cin函数直接从输入缓冲区中取数据。正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据而不会请求键盘输入#1:#include using namespace std;int main(){ char st

2012-11-15 12:58:33 737

转载 ACM算法列表

ACM 所有算法数据结构栈,队列,链表哈希表,哈希数组堆,优先队列双端队列可并堆左偏堆二叉查找树Treap伸展树并查集集合计数问题二分图的识别平衡二叉树二叉排序树线段树一维线段树二维线段树树状数组一维树状数组N维树状数组字典树后缀数组,后缀树块状链表哈夫曼树桶,跳跃表

2012-11-07 19:24:47 7932 1

原创 ACM/ICPC 2012 天津 B题

题意:输入一个数n,求出它的所有因数,并将所有因数转换为m进制,在m进制下将各个位上的数字求平方和,最后将平方和以m进制输出。#includeusing namespace std;int div[100], divCnt;char divs[100][100];char numToCh[200];int chToNum[200];void init(){ int

2012-11-03 10:33:57 1035

原创 ACM/ICPC 2012 天津 A题 (模拟)

题意:给你十三章麻将,问可以糊哪些牌?#include#include#include#includeusing namespace std;int tile[40];int ret[40], retCnt;bool ChiiToitsu(){ int cnt = 0; for(int i = 1; i <= 37; i++) {

2012-11-03 09:56:51 1158

原创 ZOJ 3656 Bit Magic (2-Sat问题)

题意:b[i][j] 与a[i], a[j]的关系如下。现在已知b,问是否存在对应的a,若存在输出YES,否则输出NOvoid calculate(int a[N], int b[N][N]) { for (int i = 0; i < N; ++i) { for (int j = 0; j < N; ++j) { if (i == j) b[i][j] = 0; els

2012-10-14 23:31:30 1938

原创 POJ 2104 K-th Number 划分树

题意:求区间[l,r]中第k小的数题解:#include#include#include#includeusing namespace std;#define MAXN 100001#define L(u) (u<<1)#define R(u) (u<<1|1)#define MID(l, r) ((l+r)>>1)struct SegTree{ int l

2012-10-14 13:55:00 1161

转载 后缀数组

字符串处理当中,后缀树和后缀数组都是非常有力的工具,其中后缀树大家了解得比较多,关于后缀数组则很少见于国内的资料。其实后缀数组是后缀树的一个非常精巧的替代品,它比后缀树容易编程实现,能够实现后缀树的很多功能而时间复杂度也不太逊色,并且,它比后缀树所占用的空间小很多。可以说,在信息学竞赛中后缀数组比后缀树要更为实用。因此在本文中笔者想介绍一下后缀数组的基本概念、构造方法,以及配合后缀数组的最长公共前

2012-10-11 17:29:56 608

原创 HDU 2222 Keywords Search (AC自动机入门题)

题意:题解://先调用PreProcess()初始化//Insert()添加串 Find()查找串//get(char s) 返回字符s所对应的编号(考虑字符集合可能是’A’-’Z’或者”ACGT”等)//全部Insert后调用 bfs()求fail指针#include#include#include#includeusing namespace std;#defi

2012-10-10 23:13:07 731

转载 GLUT函数说明(转载)

一、初始化void glutInit(int* argc,char** argv) 这个函数用来初始化GLUT库。对应main函数的形式应是:int main(int argc,char* argv[]); 这个函数从main函数获取其两个参数。void glutInitWindowSize(int width,int height);void glutInit

2012-10-10 14:07:32 870

转载 程序员的十层楼

程序员的十层楼第1层 菜鸟 第1层楼属于地板层,迈进这层楼的门槛是很低的。基本上懂计算机的基本操作,了解计算机专业的一些基础知识,掌握一门基本的编程语言如C/C++,或者Java,或者JavaScript,...,均可入门迈进这层。 在这层上,中国有着绝对的优势,除了从计算机专业毕业的众多人数外,还有大量的通信、自动化、数学等相关专业的人士进入这一行,此外还

2012-09-21 22:05:10 4593

原创 2012 成都网络赛I题 Buildings

题意:每层楼都有一个重量W一个强度S,每一层楼的潜在伤害值等于 (Σwj)-si,其中 (Σwj)表示第i楼以上的所有楼层的重量之和。求如何摆放使得最大伤害值最小。题解:首先要确定两层楼之间要怎样调整才能使结果最小->考虑任意相邻的两层楼->任意不相邻的两层楼->得到贪心策略。交换顺序之前:PDV1 = Wtop - Si;  PDV2 =Wtop + Wi - Sj    (

2012-09-20 14:30:05 1746

C++ STL 标准模板库

ACMer必备.内容非常详尽,不过是英文版的额。

2012-07-24

空空如也

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

TA关注的人

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