自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

爱拼才会赢

成长记录

  • 博客(35)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

转载 二进制补码(好文章)

数在计算机是以补码形式存储的,而我们通常所接触的一般都是源码,机器识别处理的是补码。那么问题来了?数是如何转换成补码的?正数补码还是其本身(原码) 负数在计算机中如何表示?举例来说,+8在计算机中表示为二进制的1000,那么-8怎么表示呢?很容易想到,可以将一个二进制位(bit)专门规定为符号位,它等于0时就表示正数,等于1时就表示负数。比如,在8位机中,规定每个字节的

2016-02-29 16:47:16 653

原创 51Nod 1163 最高的奖励(贪心+优先队列/并查集合)

题目:最高奖励有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励。在结束时间之前完成该任务,就可以获得对应的奖励。完成每一个任务所需的时间都是1个单位时间。有时候完成所有任务是不可能的,因为时间上可能会有冲突,这需要你来取舍。求能够获得的最高奖励。Input第1行:一个数N,表示任务的数量(2 <= N <= 50000)第2 - N + 1行,每行2个数,中间

2016-02-23 05:18:59 2330 1

原创 51Nod 1117 聪明的木匠(贪心+优先队列)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1117一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。例如:若N=3,L1 = 3,L2 = 4,L3 =

2016-02-23 03:46:25 1206

原创 51Nod 1013 3的幂的和(快速幂+逆元)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1013求:3^0 + 3^1 +...+ 3^(N) mod 1000000007Input输入一个数N(0 Output输出:计算结果Input示例3Output示例40分析:快速幂+逆

2016-02-22 04:32:59 1075

原创 树的重心——树形dp

树的重心(质心):对于一颗n个节点的无根树,找到一个点,使得把树变成以该节点为根的有根树时,最大节点数最少。换句话说,删除这个节点后最大连通块(一定是树)的节点数最少。PS:首先要知道什么是树的重心,树的重心定义为:找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡.  实际上树的重心在树的点分治中有重要的作用, 可以避免N^2的

2016-02-22 02:37:26 2670

原创 树的最大独立集——树形dp

树的最大独立集:对于一颗n个节点的无根树,给出n-1条遍,选出尽量多的节点,使得任何两个节点均不相邻。输出一个最大独立集分析:    d[i]:表示以i为节点的子树的最大独立集大小。    那么对于每个节点j. 取或者不取。 取j则j的孩子不能取,不取j则j的孩子可以取;    那么问题转化成了:取节点j,求出j的所有孙子的d值之和再+1。 不取j,求出j的所有儿子的d值之

2016-02-22 02:22:29 5038 3

原创 51Nod 1405 树的距离之和(树形dp)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1405给定一棵无根树,假设它有n个节点,节点编号从1到n, 求任意两点之间的距离(最短路径)之和。Input第一行包含一个正整数n (n <= 100000),表示节点个数。后面(n - 1)行,每行两个整数表示树的边。Output

2016-02-22 02:03:17 900

原创 CodeBloks(解决路径问题)以及如何编译C++11新特性

BC编译器运行出现如下异常:Can't find compiler executable in your search path for GNU GCC我也是在网上找教程解决了,跟大家分享一下。。这个问题困扰了我99 81年。setting-conpiler 下面找到toolchain-executables 选择编译器路径 我的是C:\Program Files (x86)\

2016-02-19 18:27:16 1611

原创 硬币问题(字典最小序)-DAG动态规划问题

题目:     有n种硬币,面值分别为V1,V2,...Vn,每种都有无限多。给定非负整数S,可以选用多少个硬币,使得面值之和恰好为S?输出硬币数目的最小值和最大值!    分析:我们把每种面值看作一个点!表示“还需要凑足的面值”,初始状态为S,目标状态为0。那么若当前状态在i,每使用一个硬币j,状态便转移到i-Vj因为求最大值跟求最小值类似,这里只贴记忆化搜索求最小值代码

2016-02-19 02:16:33 1062 1

原创 矩形嵌套(最小字典序)—DAG动态规划问题

初步学习DAG(有向无环图dp)问题:       描述 有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅当a<c,b<d或者b<c,a<d(相当于旋转X90度)。例如(1,5)可以嵌套在(6,2)内,但不能嵌套在(3,4)中。你的任务是选出尽可能多的矩形排成一行,使得除最后一个外,每一个矩形都可以嵌套在下一个矩形内。输

2016-02-19 02:06:01 967

原创 51Nod 1432 独木舟(贪心)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1432分析:刘德聪只有意志坚强的人才能到达成功的彼岸如果感到靠谱的话你就点赞同这题排序需要O(nlogn)   处理只需要O(n)题目要求每个人体重都不超过船重量,不然可以先预处理超过船重量的这些人。 然后将

2016-02-15 18:31:08 547

原创 51Nod 1138 连续整数的和(数学、规律)

题目链接http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1138给出一个正整数N,将N写为若干个连续数字和的形式(长度 >= 2)。例如N = 15,可以写为1 + 2 + 3 + 4 + 5,也可以写为4 + 5 + 6,或7 + 8。如果不能写为若干个连续整数的和,则输出No Solution。

2016-02-15 02:28:32 1388

原创 51Nod 1094 和为k的连续区间 (前缀和暴力枚举/map优化)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1094    一整数数列a1, a2, ... , an(有正有负),以及另一个整数k,求一个区间[i, j],(1 Input第1行:2个数N,K。N为数列的长度。K为需要求的和。(2 <= N <= 10000,

2016-02-14 03:58:37 694

原创 51Nod 1092 回文字符串(LCS跟dp)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1092回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。每个字符串都可以通过向中间添加一些字符,使之变为回文字符串。例如:abbc 添加2个字符可以变为 acbbca,也可以添加3个变为 abbcbba。方案1只需要添加2个字符

2016-02-14 03:26:19 645

原创 51Nod 1031 骨牌覆盖(Fibonacci 数列,有趣)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1031在2*N的一个长方形方格中,用一个1*2的骨牌排满方格。问有多少种不同的排列方法。例如:2 * 3的方格,共有3种不同的排法。(由于方案的数量巨大,只输出 Mod 10^9 + 7 的结果)Input输入N

2016-02-13 02:15:54 1063

原创 51Nod 1007 正整数分组(01背包的变形)

题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1007将一堆正整数分为2组,要求2组的和相差最小。例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的。Input第1行:一个数N,N为正整数的数量。第2 - N

2016-02-13 01:17:49 741

转载 容斥原理详细介绍

翻译:vici@cust对容斥原理的描述容斥原理是一种重要的组合数学方法,可以让你求解任意大小的集合,或者计算复合事件的概率。描述       容斥原理可以描述如下:         要计算几个集合并集的大小,我们要先将所有单个集合的大小计算出来,然后减去所有两个集合相交的部分,再加回所有三个集合相交的部分,再减去所有四个集合相交的部分,依此类推,一直计算到所有集合相交

2016-02-12 01:40:43 2893

原创 51Nod 1289 大鱼吃小鱼(模拟 有趣)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1289有N条鱼每条鱼的位置及大小均不同,他们沿着X轴游动,有的向左,有的向右。游动的速度是一样的,两条鱼相遇大鱼会吃掉小鱼。从左到右给出每条鱼的大小和游动的方向(0表示向左,1表示向右)。问足够长的时间之后,能剩下多少条鱼?

2016-02-11 20:36:16 2891 1

原创 蓝桥杯 算法训练 操作格子 (线段树)

题目链接:http://lx.lanqiao.org/problem.page?gpid=T18问题描述有n个格子,从左到右放成一排,编号为1-n。共有m次操作,有3种操作类型:1.修改一个格子的权值,2.求连续一段格子权值和,3.求连续一段格子的最大值。对于每个2、3操作输出你所求出的结果。输入格式第一行2个整数n,m。接下来一行n

2016-02-11 17:37:37 680

原创 51Nod 1305 Pairwise Sum and Divide(规律、数学)

题目链接 :http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1305有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整:fun(A)    sum = 0    for i = 1 to A.length        for j = i+1 to A.length 

2016-02-11 04:36:34 1352

原创 51Nod1381 硬币游戏(概率+题解)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1381有一个简单但是很有趣的游戏。在这个游戏中有一个硬币还有一张桌子,这张桌子上有很多平行线(如下图所示)。两条相邻平行线之间的距离是1,硬币的半径是R,然后我们来抛硬币到桌子上,抛下之后硬币有时候会和一些直线相交(相切的情况也算是相交),有时候不会。

2016-02-11 04:11:09 1487

原创 51Nod1174 区间中最大的数(学习线段树)

题目链接:    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1174给出一个有N个数的序列,编号0 - N - 1。进行Q次查询,查询编号i至j的所有数中,最大的数是多少。例如: 1 7 6 3 1。i = 1, j = 3,对应的数为7 6 3,最大的数为7。(该问题也被称为RMQ问题)Input第1行:1个数...

2016-02-11 02:09:10 1224 3

原创 51Nod1091 线段的重叠(贪心法+区间相关)

题目链接:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1091X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0

2016-02-09 03:04:13 1820 1

原创 归并排序(分治法+简洁易懂)

归并排序是一种高效的排序算法(时间复杂度(O(nlogn))),按照分治三步法,对归并排序算法介绍如下:划分问题: 把序列分成元素个数尽量相等的两半递归求解:把两半元素分别排序。合并问题:把两个有序表合并成一个(我之前看都没有看过归并排序这么简洁的代码,包括在书上)归并好处:高效(思想也很重要)缺点:需要辅助存储空间。#include"stdio.h"#include

2016-02-07 03:49:13 1173

原创 51Nod 1065 最小正子段和(归并 贪心,好题)

题目链接 :   http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1065 N个整数组成的序列a[1],a[2],a[3],…,a[n],从中选出一个子序列(a[i],a[i+1],…a[j]),使这个子序列的和>0,并且这个和是所有和>0的子序列中最小的。例如:4,-1,5,-2,-1,2,6

2016-02-07 02:55:19 867

原创 51Nod 1050 循环数组最大子段和(dp)

题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1050其实就是求循环数组的最大字段和题意:给定一个长度为50000的数组,求它的循环数组的最大子段和。 分析:本题与普通的最大子段和问题不同的是,最大子段和可以是首尾相接的情况,即可以循环。那么这个题目的最     大子段和有两种情况

2016-02-07 02:47:14 1387

原创 51Nod 1051 最大子矩阵和(二维最大字段和dp)

如果清楚如何求最大字段和(一维),那么二维的就相当简单了如果不清楚的话,可以看看: http://blog.csdn.net/qq_33850438/article/details/50638748以下是我写的代码: #include"stdio.h"#include"stdlib.h"#include"algorithm"#include"math.h"u

2016-02-06 20:26:24 1800

原创 51Nod 1049 最大子段和(分治/dp)

题目:       N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20    分治法:          #include"stdio.h"#include"stdlib.

2016-02-05 17:35:52 1421

原创 分治法(浅谈分治法)

分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题可用二分法完成。步骤:       1,划分问题:把问题的实力划分成子问题       2,递归求解:递归解决子问题。       3.  合并问题:合并子问题的解得到原问题的解。      下面介绍一个

2016-02-05 17:10:12 764 1

原创 51Nod 1080 两个数的平方和(数论)

本题可以枚举,我一开始用枚举,不恰当,导致差点超时 用了700s#include"stdio.h"#include"stdlib.h"#include"algorithm"#include"string.h"#include"math.h"const int maxn=1e5;int hash[maxn]; void Hash(int n){ int m=

2016-02-04 01:22:51 1386

原创 51Nod 1046 A^B Mod C(快速幂)

 学习:http://blog.csdn.net/xuruoxin/article/details/8578992int PowerMod(long long a,long long b,long long c){ long long ans=1; a=a%c; while(b) { if(b&1) //奇数情况 ans=(ans*a)

2016-02-04 00:38:35 907

原创 51Nod 1057 N的阶乘(数论)

输入N求N的阶乘的准确值。Input输入N(1 Output输出N的阶乘Input示例5Output示例120主要思路手算模拟学习点:printf("%04d",5); 0005 printf("%-4d",5); 5 (后加三个空格)自己代码:#include"stdio.

2016-02-03 23:40:51 1928 1

转载 欧拉函数(数论)

欧拉函数定义:对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。例如:φ(8) = 4(Phi(8) = 4),因为1,3,5,7均和8互质。本人也是通过看别人的微博了解学习了欧拉函数:写得非常详细:http://www.cnblogs.com/yefeng1627/a

2016-02-03 21:48:07 727

原创 算法训练 出现次数最多的整数(狗血题)

问题描述  编写一个程序,读入一组整数,这组整数是按照从小到大的顺序排列的,它们的个数N也是由用户输入的,最多不会超过20。然后程序将对这个数组进行统计,把出现次数最多的那个数组元素值打印出来。如果有两个元素值出现的次数相同,即并列第一,那么只打印比较小的那个值。  输入格式:第一行是一个整数N,N £ 20;接下来有N行,每一行表示一个整数,并且按照从小到大的顺序排列。 

2016-02-01 21:38:28 1478

原创 蓝桥杯 算法训练 2的次幂表示(构造)

问题描述  任何一个正整数都可以用2进制表示,例如:137的2进制表示为10001001。  将这种2进制表示写成2的次幂的和的形式,令次幂高的排在前面,可得到如下表达式:137=2^7+2^3+2^0  现在约定幂次用括号来表示,即a^b表示为a(b)  此时,137可表示为:2(7)+2(3)+2(0)  进一步:7=2^2+2+2^0 (2^1用2表示)  3

2016-02-01 04:08:10 789

Git-2.10.0-64-bit

最新Git工具, 自己使用Chrome下载了挺久,分享给大家吧

2016-09-28

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

TA关注的人

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