自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GLSilence的专栏

怕,你就会输一辈子。

  • 博客(48)
  • 收藏
  • 关注

原创 POJ 3414 Pots(容量BFS)

Pots大意:给你两个碗,三种操作,看多少步能凑出给你的容量。思路:六入口的BFS,难点主要是在记录路径打印上,只要再开一个数组,记录一下前驱,最后按顺西打印即可。#include #include #include #include #include using namespace std;int vis[110][110];int

2013-12-26 11:04:37 608

原创 POJ 3087 Shuffle'm Up(模拟题)

Shuffle'm Up大意:已知两堆牌s1和s2的初始状态, 其牌数均为c,按给定规则能将他们相互交叉组合成一堆牌s12,再将s12的最底下的c块牌归为s1,最顶的c块牌归为s2,依此循环下去。现在输入s1和s2的初始状态 以及 预想的最终状态s12。问s1 s2经过多少次洗牌之后,最终能达到状态s12,若永远不可能相同,则输出"-1"

2013-12-25 20:34:02 621

原创 POJ 3216 Prime Path(数字BFS)

Prime Path大意:给你两个数,求从第一个数经过几次变换到第二个数。变换要求:1.中间数必须是素数   2.每次只能变一个数字。思路:对每一位数字进行bfs#include #include #include #include #include #include #include #include #include #defi

2013-12-25 16:51:10 622

原创 能被N整除的数字的特征(数学知识点)

能被1整除的数:  好像是所有数都行能被2整除的数:  末位数字是偶数的数能被3整除的数:  各位数字之和能被3整除能被4整除的数:  末尾两位数字能被4整除能被5整除的数:  末位是0或5的数能被6整除的数:  既能被2整除,又能被3整除 ★能被7整除的数:    方法1(割尾法):(适用于数字位数较少)一个数割去末位数字,从留下的数中减去

2013-12-25 14:26:17 2709 1

原创 POJ 2442 Sequence(堆)

Sequence题意:给你n*m的矩阵,然后每行取一个元素,组成一个包含n个元素的序列,一共有n^m种序列,让你求出序列和最小的前n个序列的序列和。 思路:1.将第一序列读入a向量中,并按升序排序。2.将数据读入b向量中,并按升序排序。    将a[0] + b[i] ( 0    建堆。    然后b[1] + a[i] (0

2013-12-23 21:37:30 540

原创 POJ 2251 Dungeon Master (三维BFS)

Dungeon Master 大意:给你一个三维的地图,可以上下左右前后的运动,求从‘S’到‘E’的对短距离。 思路: 训练计划上说是DFS,敲着敲着发现敲不动了,就BFS了。#include #include #include #include using namespace std;int Map[35][35][35];int s_x,

2013-12-19 18:22:54 562

原创 SDUTOJ 1293 乘积最大的分解(数论)

乘积最大的分解 思路:让分解出来的因子有尽可能多的3,剩下的用2补全。最开始思路错了,WA了好长时间= =!函数中n == 1的情况应该是不用,经测试数据中没有这组。*注意用 long long 99的时候会超int的数据范围  1 #include 2 #include 3 4 long long is_(long long n) 5 {

2013-12-17 14:12:55 599

原创 POJ 1321 棋盘问题(棋盘DFS)

棋盘问题 思路:分层查找,逐行深搜。注意k   1 #include 2 #include 3 #include 4 #include 5 #include 6 #include string.h> 7 #include 8 #include 9 #include 10 #define LL long long11

2013-12-17 14:12:53 613

原创 POJ 3009 Curling 2.0(棋盘DFS)

Curling 2.0 大意:就是要求把一个冰壶从起点“2”用最少的步数移动到终点“3”其中0为移动区域,1为石头区域,冰壶一旦想着某个方向运动就不会停止,也不会改变方向(想想冰壶在冰上滑动),除非冰壶撞到石头1 或者 到达终点 3冰壶撞到石头后,冰壶会停在石头前面,此时(静止状态)才允许改变冰壶的运动方向,而该块石头会破裂,石头所在的区域由1变为0. 也就是说,冰壶撞到石头后,并

2013-12-17 14:12:51 500

原创 POJ 2488 A Knight's Journey (棋盘DFS)

A Knight's Journey 大意:给出一个国际棋盘的大小,判断马能否不重复的走过所有格,并记录下其中按字典序排列的第一种路径。   1 #include 2 #include 3 #include 4 #include 5 #include 6 #include string.h> 7 #include 8 #inclu

2013-12-17 14:12:49 559

原创 POJ 1146 ID Codes (STL)

ID Codes STL知识点:给你一个字符串,求用这个字符串重新组合后,比这个字符串大的下一个字符串。例: abaacb -> ababaccba -> abc C++:  next_permutation(a, a+len); 当然,prev_permutation就是求前一种排列组合的了。POJ 1146 Code:  1 #inc

2013-12-17 14:12:47 519

原创 POJ 1017 Packets(模拟)

Packets 大意:给你一些包,他们的大小是 1*1,2*2,3*3,4*4,5*5,6*6, 高都是h,让你放到6*6高度为h的箱內,希望用的箱子最少思路:由于盒子和箱子的高均为h,因此只需考虑底面积的空间。6*6的盒子,每个盒子独占一个箱子。5*5的盒子,每个盒子放入一个箱子,该箱子的剩余空间允许放入的最大尺寸为1*1,且最多放11个4*4的盒子,每个盒子放入一个箱子,该

2013-12-17 14:12:45 494

原创 POJ 1006 Biorhythms (中国剩余定理)

Biorhythms大意:有中文翻译思路:中国剩余定理的完美诠释中国剩余定理介绍     在《孙子算经》中有这样一个问题:“今有物不知其数,三三数之剩二(除以3余2),五五数之剩三(除以5余3),七七数之剩二(除以7余2),问物几何?”这个问题称为“孙子问题”,该问题的一般解法国际上称为“中国剩余定理”。具体解法分三步:找出三个数:从3和5的公倍数中找出被7除余1的最小数1

2013-12-17 14:12:43 567

原创 POJ 2049 Finding Nemo (网格中的BFS)

Finding Nemo大意:有一个迷宫,在迷宫中有墙与门有m道墙,每一道墙表示为(x,y,d,t),x,y表示墙的起始坐标d为0即向右t个单位,都是墙d为1即向上t个单位,都是墙有n道门,每一道门表示为(x,y,d),x,y表示门的起始坐标d为0即向右一个单位表示门d为1即向上一个单位表示门再给出你起点的位置(f1,f2),并保证这个点的位置不会再墙或者门中,为起点到(0,0)最少要穿过

2013-12-17 14:12:41 511

原创 CF 135B Rectangle and Square(正方形判断 & 矩形判断)(数学)

Rectangle and Square 大意:给你8个点,看里面能不能有一个正方形,一个矩形,如果有,输出YES和正方形点的编号和矩形编号,不能输出NO。PS:正方形和矩形的判断可以当做模板来使用  1 #include 2 #include 3 #include 4 #include 5 #include 6 #include

2013-12-17 14:12:38 602

原创 POJ 3273 Monthly Expense(二分查找)

Monthly Expense 大意:给你天数N(1 ≤ N ≤ 100,000),和每天需要花的钱(存放在数组中),让你把这些天分成M(1 ≤ M ≤ N)份(每份都是连续的天),要求每份的和最大值尽量小,输出这个和。思路:二分查找。让数组中的最大值为左界,数组的和为右界。左界的含义是将整个数组分成N块,那么和的最大值就是数组元素中的最大值。右界的含义是将整个数组当做一块,那么最大值就是

2013-12-17 14:12:36 484

原创 HDU 1069 Monkey and Banana(DP)

Monkey and Banana 大意:把给定的长方体(不限个数)叠加在一起,上面的长和宽比下面的长和宽短,求这些长方体加起来的最高高度。 思路:每个格子最多3个状态,也就是高最多有3种,也就是一共有N*3 最多90个格子,但是X和Y可以对调,那么就最多180个,对180个格子对X从小到大排序,X相等,Y就从小到大排序,那么这个问题就可以转换成类似求最大递增子序列问题一样思路的DP,

2013-12-17 14:12:34 404

原创 HDU 1506 Largest Rectangle in a Histogram(DP)

Largest Rectangle in a Histogram 大意:找到面积最大的矩形 思路:对于每一个a[i],用dp找出a[i]左边和右边连续大于自己的数的长度     l[i]表示比a[i]大的数连续的最左边的位置     r[i]表示比a[i]大的数连续的最右边的位置  1 #include 2 #include 3 #include

2013-12-17 14:12:32 476

原创 HDU 2602 Bone Collector(01背包)

Bone Collector 最基本的01背包   两种实现都要掌握的很熟练! 二维数组实现01背包: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include string.h> 7 #include 8 #include 9 #define LL lo

2013-12-17 14:12:30 542

原创 HDU 2546 饭卡(背包)

饭卡思路:先把最贵的一个拿出来,剩下的用背包求出最优解,用5元去买最贵的。 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include string.h> 7 #include 8 #include 9 #define LL long long10 using

2013-12-17 14:12:28 440

原创 UVA 10066 The Twin Towers (LCS)

The Twin Towers LCS水题,就是题读的时候有点费劲。   我英语是渣渣- -!  1 #include 2 #include 3 #include 4 #include 5 #include 6 #include string.h> 7 #include 8 #include 9 #define LL long

2013-12-17 14:12:26 439

原创 HDU 3123 GCC(同余模定理)

GCC大意:给一个n,一个m,求(0! + 1! + 2! + 3! + 4! + ... + n!)%m     0 0 思路:n可以达到10^100,很明显不能直接处理。但是发现只要n>m,那么m!+(m+1)!+...+n!这些项都是可以被m整除的,要对m求余,只需要找比m小的阶乘即可,而m的范围为1000000,在O(m)的复杂度下是可以完成的。所以只需判断n是否大于m,若大于m,

2013-12-17 14:12:24 703

原创 POJ 1942 Paths on a Grid(组合数学)

Paths on a Grid大意:矩形方格,从左下角走到右上角,只能向上或向右,问一共有多少种情况。思路:排列组合,每一个点的不同走法的总数,是由左边的点和下边的点的总数之和,这就很容易联想到排列组合的一个公式:1942 : Paths on a Grid (排列组合)" src="http://edu6.teacher.com.cn/tkc040a/kechengneirong/4.2

2013-12-17 14:12:21 441

原创 POJ 1019 Number Sequence(组合数学)

Number Sequence大意:给一个有规律的序列,给你一个n,求第n位的数字是多少。最开始理解错了,理解成第n个数字是多少了,应该是第n位是多少,WA了好几遍,看了Discuss中第2147483647位答案是2,才知道是怎么回事的= =、思路:数字的位数可以用 log10((double)i) + 1 这个公式求出来,这样逐步求精就可以慢慢地求出结果了。 1 # i

2013-12-17 14:12:19 396

原创 UVA 10453 Make Palindrome(DP)

Make Palindrome 大意:求一个字符串在通过在任意位置增加一个字符使得变为一个回文串的最小操作数及打印出该回文串。  1 #include 2 #include 3 #include 4 #include 5 #include 6 #include string.h> 7 #include 8 #include 9

2013-12-17 14:12:17 380

原创 POJ 3250 Bad Hair Day(DP / 单调栈)

Bad Hair Day 开个标记数组记录,记录右边第一个比它大的位置。#include #include string.h>#define N 80001long long p[N],left[N],sum;int main(){ int n,i,j; scanf("%d",&n); for(i = 1; i )

2013-12-17 14:12:15 486

原创 因式分解(数学)(未完成 还需完善)

因式分解 # include # include # include # include # include # include string.h># include # include using namespace std;int a[100000010];int b[100000010];void run(){

2013-12-17 14:12:13 333

原创 字符串二维数组排序(知识点)

struct node{ char data[100];} s[100010];bool cmp(const node &x, const node &y){ if(strcmp(x.data, y.data) 0) return true; return false;}sort(s, s+n, cmp);

2013-12-17 14:12:11 736

原创 求抛物线与直线形成的面积(数学)

HDU1071 应该是求定积分的 但是还没研究很透怎么用定积分实现  就找了一个公式s = -(y2-y1)/pow(x2-x1, 2)*pow(x3-x2, 3)/6 以下是Discuss中的详细分析:设直线方程:y=kx+t…………………………………………………………(1)抛物线方程:y=ax^2+bx+c……………………………………………………(2)已知抛物线

2013-12-17 14:12:09 2983

原创 最大公约数应用(数学)

HDU1222 思路:思路:m和n如果有公约数,则安全洞存在,无公约数或公约数为1,则无  1 # include 2 typedef long long LL; 3 4 LL gcd(LL m, LL n) 5 { 6 if(mn) 7 { 8 int t = m; 9 m = n;

2013-12-17 14:12:06 600

原创 欧拉函数(数学)

在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。 φ函数的值  通式:φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数(看准是质因数 刚开始以为是因数 怎么算都不对),x是不为0的整数。    1 # include 2 # include

2013-12-17 14:12:04 727

原创 N个三角形分割平面个数(数学)

一个三角形的时候,再加一个三角形,每一条变会与第一个三角形的两条边相交,这样增加2个小三角形,即两个面。f(2)=3*2+f(1),再加一个三角形,每一条边会与前两个三角形的四条边相交,形成四个小三角形,f(3)=3*4+f(2),依次类推,f(n)=f(n-1)+6*(n-1),化简即f(n)=3*2*(n-1)+f(n-1)。  1 # include 2 # inclu

2013-12-17 14:12:02 1973

原创 切蛋糕&切西瓜(数学)

(1) n条直线最多分平面问题题目大致如:n条直线,最多可以把平面分为多少个区域。析:可能你以前就见过这题目,这充其量是一道初中的思考题。但一个类型的题目还是从简单的入手,才容易发现规律。当有n-1条直线时,平面最多被分成了f(n-1)个区域。则第n条直线要是切成的区域数最多,就必须与每条直线相交且不能有同一交点。 这样就会得到n-1个交点。这些交点将第n条直线分为2条射线和n-2条线断。

2013-12-17 14:12:00 593

原创 求N^N第一位数字(数学)

1 #include 2 #include 3 using namespace std; 4 5 int main(void) 6 { 7 long long int digit; 8 int n,m; 9 cin>>m;10 for(int i=0;i){11 cin>>n;12 d

2013-12-17 14:11:58 860

原创 简单二分查找模板(查找)

1 # include 2 3 int search(int a[], int n, int v) //这个好像是效率最高的 4 { 5 int left = -1, right = n, middle; 6 while(left+1 != right) 7 { 8 middle = left + (right-left

2013-12-17 14:11:56 490

原创 求一个数阶乘的位数&N^N的位数(数学)

n!的位数=log10(1)+log10(2)+......+log10(n)取整后加一 1 # include 2 # include 3 4 using namespace std; 5 6 int main(void) 7 { 8 int n, t; 9 cin >> n;10 while(n--)11

2013-12-17 14:11:54 818

原创 三点坐标求三角形面积(数学)

1 struct point{double x, y;}p[105]; 2 3 double xmult(point p1,point p2,point p0) 4 { 5 return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y); 6 } 7 8 double area_triangle(point p1

2013-12-17 14:11:52 898

原创 素数筛模板(数学)

这是我找了好多找到素数筛优化的很不错的了  如果有大神知道还能再优化的话希望能提取宝贵意见  Orz 1 # include 2 # include 3 # include 4 # include 5 # include 6 # include string.h> 7 # include 8 # include 9 using namesp

2013-12-17 14:11:50 411

原创 最长公共子序列、上升子序列、最长上升子序列、最长公共子串

最长公共子序列其实有很多方法可以过,因为在弄DP所以就只写了动态规划的方法:动态规划方法1、序列str1和序列str2    ·长度分别为m和n;    ·创建1个二维数组L[m.n];    ·初始化L数组内容为0    ·m和n分别从0开始,m++,n++循环:    - 如果str1[m] == str2[n],则L[m,n] = L[m - 1, n -1]

2013-12-17 14:11:48 520

原创 求组合数(数学)

只是简单的求组合数 代码也很简单 分子分母约分:(对于数据要求不是很多) 1 int c(int x, int y) 2 { 3 int i, j, sum = 1; 4 if(y > (x/2)) 5 y = x - y; 6 for(i = x, j = 1; i > x-y; i--, j++) 7

2013-12-17 14:11:45 506

空空如也

空空如也

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

TA关注的人

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