自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 收藏
  • 关注

原创 C++11中的String&&

String&&并不是指“引用的引用”,也不存在“引用的引用”这种东西。String&& 和 String&是两码事。  String&&是C++11中的特性,叫做“右值引用”。它只能绑定到右值,即临时对象或将销毁的对象。因此可以把String&&所引用的资源强制拿来使用,且不用重新分配空间。即把String&&所引用对象的资源复制给*this。例子: String& operator

2016-09-03 15:30:41 4632

转载 Hadoop学习初步:Maven构建Hadoop项目

转自:http://blog.fens.me/hadoop-maven-eclipse/前言Hadoop的MapReduce环境是一个复杂的编程环境,所以我们要尽可能地简化构建MapReduce项目的过程。Maven是一个很不错的自动化项目构建工具,通过Maven来帮助我们从复杂的环境配置中解脱出来,从而标准化开发过程。所以,写MapReduce之前,让我们先花

2016-08-19 12:30:58 1221

原创 HDU 1059 Dividing(多重背包)

题意:多重背包。思路:dp[weight] = max(dp[weight], dp[weight - k * cost] + k * value]), k #include #include #include #include #include #include #include #include #include #include #include #includ

2016-01-04 10:05:06 516

原创 为什么time(time_t *)函数里还有一个loc参数而不是time(void)

据说....(据说。。。)是由于time()最开始定义的时候,time_t并不是long型,那时候早期的C还没有long int型,而且函数不能返回数据结构。系统只有16位整数,表示时间的话需要数据机构或是数组才可以,参数就用一个time_t *loc作为返回值。。所以早期的time()可能是这个姿势的。。。time_t now;time(&now); /* sets now.time

2015-12-25 16:36:24 1137

原创 求字符串最长连续不重复的字串

思路:dp[c]记录字符c上一次出现的位置。l记录上一个连续不重复字串的左边界,这样就可以更新连续不重复子串的长度。我这里输出的是第一次出现的最长的连续不重复子串。#include #include #include #include #include #include #include #include #include #include #include #inclu

2015-12-23 23:30:09 1156

原创 POJ2785 4 Values whose Sum is 0

题意:给4个数组,问有多少种组合可以使得a + b + c + d = 0。思路:预处理A + B,然后每次算C + D求匹配的A +B的个数。 O(n^2 log n)。#pragma warning(disable:4996)#include #include #include #include #include using namespace std;const int

2015-12-22 19:39:37 442

原创 HDU1257 最少拦截系统(LIS)

题意:中文题。思路:求递减序列有几条。#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;#define mem(a

2015-12-22 00:28:04 445

原创 HDU2546 饭卡(01背包)

题意:中文题。思路:01背包,求能购买的价值最后减去。由于大于等于5时才可购买,所以价钱大的最后买,也就是先更新大的,再更新小的。所以要从大到小排序。#include #include #include #include #include #include #include #include #include #include #include #include u

2015-12-20 01:02:18 532

转载 .globl _start 含义

.globl指示告诉汇编器,_start这个符号要被链接器用到,所以要在目标文件的符号表中标记它是一个全局符号(在第 5.1 节 “目标文件”详细解释)。_start就像C程序的main函数一样特殊,是整个程序的入口,链接器在链接时会查找目标文件中的_start符号代表的地址,把它设置为整个程序的入口地址,所以每个汇编程序都要提供一个_start符号并且用.globl声明。如果一个符号没有用.gl

2015-12-19 23:23:44 1318

原创 UVALive 4329 Ping pong(树状数组)

题意:n个球员每人有不同能力值。选两选手一裁判,裁判序号和能力值都在两选手间,问有多少种选法。思路:b[i], c[i]维护第i个球员左右两边比他能力小的人数。用树状数组,先从左往右扫一遍,bit[x]记录是否出现了能力x的人,那么比i能力小的人的个数为sigma bit[i]。最后扫一遍每个球员做裁判的选法得到答案。#include #include #include #inclu

2015-12-16 00:34:10 399

原创 LightOJ 1084 - Winter(记忆化搜索)

题意:每人最多走k步,所有人走成若干堆,问最少走成多少堆。思路:记忆化搜索。dp[i]表示从i开始最少走成多少堆,next表示最多走到的位置。由于每堆至少3个人,所以得到next值以后分3种情况,next,next - 1,next - 2开始。由于cur能到的话cur+1也一定能到,因此可以得到转移方程。#include #include #include #include #i

2015-12-14 23:17:05 494

原创 双向链表实现长整数运算

*问题描述:设计一个实现任意长的整数进行加法运算的演示程序。*基本要求:利用双向循环链表实现长整数的存储,每个结点含一个整形变量。任何整形变量的范围是 -(2^15 - 1)~ (2^15 - 1)。输入和输出形式:按中国对于长整数的表示习惯,每四位一组,组间用逗号隔开。 *测试数据:(1)0;0;应输出“0”。(2)-2345,6789;-7654,3211;应输出“-1,000

2015-12-14 21:05:31 9135

原创 LightOJ 1071 - Baker Vai(水DP)

题意:两个机器人从(1, 1)到(n, m),除了终点外不可相遇。求路径最大价值。思路:水DP。#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typede

2015-12-10 17:09:05 526

原创 LightOJ 1068 - Investigation(数位DP)

题意:给定区间求被k整除且数位和被k整除的个数。思路:数最多10位,所以数位和不会超过90,那么k > 90时一定为0了。因而dp数组开到90就好。#include #include #include #include #include #include #include #include #include #include #include #include us

2015-12-09 13:55:51 408

原创 LightOJ 1064 - Throwing Dice(概率DP)

题意:掷n次骰子,点数和不小于x的概率。思路:概率dp。不用记录分母,因为n次就是6^n。#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef u

2015-12-09 12:56:42 542

原创 LightOJ 1061 N Queen Again(状压DP)

题意:给定8皇后位置,问最少多少步使得其互不攻击。思路:状压dp。#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;

2015-12-09 11:47:16 527

原创 HDU 3709 Balanced Number(数位dp)

题意:若某数,固定某位为支点,得到平衡的则称为平衡数。给定区间问有多少个。思路:数位dp。#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef l

2015-12-07 16:45:43 372

原创 HDU 4507 恨7不成妻(数位dp)

题意:中文题略。思路:dp[pos][pre1][pre2],pos位,pre1各位数字和模7,pre2数模7。得到下一位平方和时利用平方和公式:如223 ^ 2 = (200 + 23) ^ 2 = 200 ^ 2 + 2 * 200 * 23 + 23 ^ 2。#include #include #include #include #include #include #

2015-12-07 16:18:35 453

原创 HDU 5592 ZYB's Permutation(树状数组)

题意:给出i位置的逆序对数前缀和,求原序列。思路:从n开始往前推,树状数组维护已经出现的比i大的有几个,然后二分找。O(nlognlogn)。#include #include #include #include #include #include #include #include #include #include #include #include using

2015-12-05 22:00:54 343

原创 HDU 5591 ZYB's Game(取石子)

题意:AB选手猜数字。正确数字为X,若选手猜的数字为i,若i比X小,则主持人会告诉他[1, i]都不是正确答案,比X大则[i, n]都非答案。但其实选手是知道答案的(假装不知道23333)。谁最后被逼的猜X谁就输。给定n问后首胜的X有几个。思路:本质还是取石子游戏。先手的人只要取一定量的石子使得X两边石子的数量相等的话就可以保证自己必胜。那么显然,当且仅当X为1~n中心,即n为奇数时,此时X可

2015-12-05 21:49:10 327

原创 UVa 10459 The Tree Root(树)

题意:以同一棵树以i为根得到不同的最大深度。求最大深度最小的点和最大的点集。思路:任取一点dfs一遍找到其最远点,再从最远点dfs一遍找到另一个最远点。这样所有点的最远距离一定是到这两个点之一。再反过来跑一遍dfs更新所有点的dist。这样就得到了所有节点的为根时的最大深度。类似的题:http://acm.hdu.edu.cn/showproblem.php?pid=219

2015-12-04 17:12:12 401

原创 HDU 2196 Computer

题意:问每个点到任意点的最远距离为多少。思路:任取一点dfs一遍找到其最远点,再从最远点dfs一遍找到另一个最远点。这样所有点的最远距离一定是到这两个点之一。再反过来跑一遍dfs更新所有点的dist。#include #include #include #include #include #include #include #include #include #inclu

2015-12-04 16:57:26 320

原创 UVa 10560 Minimum Weight

题意:砝码称重1~N,问最少要几个砝码。思路:很容易得到b[i] = sum[i-1] * 2 + 1。因为sum[i-1]的都是已表示完备的,因此下一个需要多出sum[i-1] + 1。#include #include #include #include #include #include #include #include #include #include #i

2015-12-04 13:06:04 415

原创 UVa 10651 Pebble Solitaire(状压DP)

题意:110->001,011->100。问最后最多少几个1。思路:状压DP水题。#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long

2015-12-04 13:03:05 459

原创 UVa 10493 Cats, with or without Hats

题意:一喵可带一帽,一帽可装n喵。m只喵没带帽子,有且只有1只喵不在其它喵带的帽子里。问有几喵。思路:不在其它喵帽子里的那个喵是树根。由此形成一棵树,每只喵要么无子节点,要么有n个子节点。显然总数y为帽子的里喵的和加上不在帽子里的喵。设总数为y,则有y = (y - m) * n + 1  =>  y = (n*m - 1) / (n - 1)。注意n==1时,m可为任意值,即Mult

2015-12-04 12:54:41 560

原创 Codeforces Round #334 (Div. 2) D. Modular Arithmetic(置换)

题意:给出方程 f(kx%p)=kf(x)%p ,问在集合A->B上不同的映射函数f有几种,其中A=B={0,1,2..p-1},p为素数(除了2),k为小于p的一个常数。思路:f(kx1%p) = kf(x0)%p,f(kx2%p) = kf(x1)%p = k^2 * f(x0)%p,f(kx3%p) = ... = k^3 * f(x0)%p,......f(kxm%p)

2015-12-02 19:40:23 360

原创 POJ 2369 Permutations(置换)

题意:求一个置换的最小循环节。思路:各个自循环长的LCM。#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;#de

2015-12-02 19:40:16 448

原创 POJ 3128 Leonardo's Notebook(置换)

题意:给定置换B,求是否存在置换A使得A^2 = B。思路:对一个长度为n的循环。n为奇数,则平方后仍为奇数。n为偶数,则分裂成两个n / 2的循环。所以一个置换若要由平方得到,则包含的偶数循环个数一定为偶数个。#include #include #include #include #include #include #include #include #include

2015-12-02 16:37:34 372

原创 POJ 1721 CARDS(置换)

题意:i位置的每次换成x[i]位置的。k次后得到输入的序列。问初始序列为咩。思路:置换有循环节。2 ^ t = 1 (mod n)。找到t即可。f[i][N]表示第i次变换后的序列。#include #include #include #include #include #include #include #include #include #include #incl

2015-12-02 15:20:20 327

原创 Codeforces Round #334 (Div. 2) B. More Cowbell

题意:装盒子。一个盒子最多装俩。k个相同容量的盒子,求最小容量。思路:显然用的盒子越多最小容量越小。所以若n #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;

2015-12-02 12:08:35 353

原创 POJ 1027 Cipher(置换)

题意:第i个移动到a[i]。问k次之后的字符串。思路:置换求循环节。#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL

2015-12-02 12:03:32 360

原创 POJ 3270 Cow Sorting(置换群)

题意:每次交换两数,花费为两数和。最后得到递增序列。求最小花费。思路:找到所有置换群。两种方法,和置换群里最小的交换或和整个数列最小的交换。#include #include #include #include #include #include #include #include #include #include #include #include using

2015-12-02 10:43:49 364

原创 Codeforces Round #334 (Div. 2) C. Alternative Thinking

题意:翻转连续字串,使得‘10101....'子串最长。思路:乍一看是dp,其实不用。翻的子串的不相邻长度是不变的。因此只需找'11'和'00'就可以了。由于只有字串边界有影响,因此最多增长2,且不会比原串小。#include #include #include #include #include #include #include #include #include #in

2015-12-02 10:37:48 701

原创 LightOJ 1057 - Collecting Gold(状压DP)

题意:从起点出发,采到所有金子回到起点的最小步数。可以走8个方向。思路:dp[s][j]表示经过的点的状态s,回到i的最小步数。怎么算回到j点的步数呢?我们更新状态时得到新的点i,所以算i到j的最小步数。转移方程:dp[newState][j] = min(dp[newState][j], dp[s][i] + Dis(x[i] - x[j], y[i] - y[j]));#include

2015-12-01 16:16:42 456

原创 UVa 11021 Tribles(概率DP)

题意:k个虫,活一天,死后生虫。生i只(0 思路:事件相互独立。全概率公式。#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long lon

2015-12-01 15:45:56 362

原创 HDU 2841 Visible Trees(欧拉+容斥)

题意:给个n*m网格,求从(0, 0)点可看到的点数。思路:显然是求x与y互质的(x, y)个数。设n #include #include #include #include #include #include #include #include #include #include #include #include using namespace std;ty

2015-11-29 23:07:43 470

原创 UVALive 4683 Find The Number(容斥原理)

题意:k大小的元素集合,得到一个递增数列,这个数列中的数能且仅能被这个元素集合的一个元素整除。求第n大的数。思路:与一般的容斥不同,这里的能整除1个元素的算了1次,能整除2个的算了2次,能整除3个的算了3次......奇加偶减。算的过程中会爆long long,所以注意和1e15比较一下。#include #include #include #include #include

2015-11-29 18:00:14 654

原创 POJ 2773 Happy 2006(容斥原理)

题意:给n和k,求与n互素的第k个数。思路:二分+容斥原理。#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;typedef long long LL;#d

2015-11-28 23:19:04 400

原创 HDU 5587 Array

题意:一个序列初始为{1},每次复制整个序列添加到原序列后面,并在两个序列间再添个0,所有新增的数字加1。求前M项和。思路:官方题解是数位DP(玄学)。           自己打了张表找规律,发现对 2^x - 1,其和为 sum(2^(x-1) -1) * 2 + 2 ^ (x-1)。为了方便对于前M项和用sum(M+1)表示。注意到每次复制后项数为2 ^ x - 1。显然是和二进制有

2015-11-28 21:28:50 328

原创 HDU 4059 The Boss on Mars(容斥原理)

题意:求[1, n]与n互素的数的4次方的和。思路:求1到n的4次方和公式,       sigma(i^4) = n * (n + 1) * (2 * n + 1) * (3 * n * n + 3 * n - 1) / 30.由于要取模,所以要对30求下逆元。剩下的就是,每次求出不互素的,然后根据容斥加减前缀四次方和。#include #include #include

2015-11-28 17:27:08 386

空空如也

空空如也

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

TA关注的人

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