自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 树 problem f

Problem DescriptionThe Head Elder of the tropical island of Lagrishan has a problem. A burst of foreign aid money was spent on extra roads between villages some years ago. But the jungle overtakes

2016-06-30 12:52:26 315

原创 搜索 继续畅通工程 problem e

Problem Description省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可)。现得到城镇道路统计表,表中列出了任意两城镇间修建道路的费用,以及该道路是否已经修通的状态。现请你编写程序,计算出全省畅通需要的最低成本。 Input测试输入包含若干测试用例。每个测试用例的第1行给出村

2016-06-28 23:34:48 380

原创 Eddy's picture problem b

Problem DescriptionEddy begins to like painting pictures recently ,he is sure of himself to become a painter.Every day Eddy draws pictures in his small room, and he usually puts out his newest pic

2016-06-27 20:54:12 375

原创 乡村道路 problem d

某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。 Input测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( 当N为0时,输入结束,该用例不被处理。 Ou

2016-06-23 14:03:25 486

原创 villages problem a

Problem DescriptionThere are N villages, which are numbered from 1 to N, and you should build some roads such that every two villages can connect to each other. We say two village A and B are connecte

2016-06-20 08:41:02 378

原创 畅通工程 problem c

某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路?题目分析:               并查集。所需要添加的边数=孤立点数-1.问题转化成使用并查集进行合并操作以后,还剩的孤立点数。

2016-06-20 08:38:15 500

原创 动态规划 ——总结.

动态规划是解决多阶段决策问题的一种方法。如果一类问题的求解过程可以分为若干个互相联系的阶段,在每一个阶段都需作出决策,并影响到下一个阶段的决策,从而确定了一个过程的活动路线,则称它为多阶段决策问题。思想:在做每一步决策时,列出各种可能的局部,解依据某种判定条件,舍弃那些肯定不能得到最优解的局部解。以每一步都是最优的来保证全局是最优的。概念:阶段,状态,决策,状态转移方程动态规划

2016-05-21 23:44:29 285

原创 动态规划——problem g

都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝

2016-05-21 22:16:07 314

原创 动态规划——problem q

题意:有t个例子,然后输入n和v,n代表有多少骨头,v代表背包体积,每样东西只有一个,只能取一次思路:动态规划的思想,用空间换时间,过程中会产生大量之间数据,我们用一维数组来存储数据,背包九讲就是用二维数组来讲解#include  #include  #include  using namespace std;  const int N = 1005;  int n

2016-05-19 22:30:27 268

原创 动态规划——problem n

题意:要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分思路:递推递推,先分析下直线分割平面的情况,增加第n条直线的时候,跟之前的直线最多有n-1个交点,此时分出的部分多出了(n-1)+1;f(1)=2,f(2)=7,先画好前面n-1条折线,当增加第n条拆线时,此时与图形新的交点最多有2*2(n-1)个,所以分出的部分多出了2*

2016-05-18 21:40:37 255

原创 动态规划——problem c

题意:从起点到终点,每次只能跳到比上一次大的点,问跳过的格子上和最大是多少。思路:求最长递增子序列,用动态规划。#includeusing namespace std;int main(){    int n;    int i,j,max,max1;    int w[1002],dp[1002];    while(cin>>n)    {

2016-05-17 22:48:45 321

原创 动态规划——problem l

题意:在2×n的一个长方形方格中,用一个1× 2的骨牌铺满方格,输入n ,输出铺放方案的总数.思路:f(1)=1,f(2)=2,f(3)=5,当有n个方格的时候,有两种铺法:先铺好n-1个格,有f(n-1)个方法,再铺第n层的时候只有一种方法,所以总方法是1*f(n-1);先铺好n-2格,有f(n-2)个方法,再铺后面两层的时候只能两个都竖着铺(否则与第一种情况重复),所以也只有一种情况,

2016-05-16 16:05:04 295

原创 动态规划 ——problem k

题意:有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数思路:小蜜蜂只能从某个编号的蜂巢开始爬行,所能爬向的格子最多只能到编号+2的那个格子。比如从2格子开始爬,第一次爬只能到达3,4,5这两个格子。只需要知道后面状态的值,就可以推出前面状态的值。用自底向上的方法逐步填充DP表。#include #include #i

2016-05-16 14:58:56 297

原创 动态规划——problem o

Give you a number on base ten,you should output it on base two.#includeint main(){int n,i,j,a[100];while(scanf("%d",&n)!=EOF){i=0;while(n){a[i]=n%2;n=n/2;i++;}for

2016-05-14 23:05:47 272

原创 动态规划——problem j】

题意有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?思路:递推问题。利用非彼纳西公式:F(n) = F(n-1) + F(n-2) 进行推导#include #includeusing namespace std;int main(){int a[5],n;while(cin>>n&&n!=0){for(i

2016-05-13 12:17:37 320

原创 动态规划——problem m

problem m有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?思路:去年的母牛,只要没有死,今年仍在因此有f(n-1)头,今年出生的母牛有多少?大前年(第n-3年)有多少头母牛,那么到了今年这些牛都能生小牛了,出生数为f(n-3). #include #include using

2016-05-13 11:05:16 268

原创 动态规划——problem B

大意: 最长公共子序列,如果相同那么dp[i][j] = dp[i-1][j-1] + 1,否则就取max(dp[i][j-1],dp[i-1][j])#include  # include # include using namespace std; int max(int a,int b)  {      return a>b ?a : b; 

2016-05-11 20:56:44 338

原创 动态规划——problem f

题意:要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?可以直接用递归计算,将数塔看成一棵树,用数组实现,分别递归的求出每棵子树的最大值 再进行比较,取其中每步的最大值,由底至上,逐层比较,最后的出最大和。 #include   #define SIZE 100    int val[SIZE][SIZE];    i

2016-05-06 23:33:05 357

原创 动态规划——problemA

题意:求一个矩阵之内最大的一个子矩阵的和思路:每个数都有加到前面作为前面已经加好的和的增量和自己独立成为一个“最大和”的选择,在这两个选择中的最大和就是局部的最大和,而保存好第一个最大和,将整个序列的所有局部最大和都求解出来,就能得到全列的最大和#includeint main(){    int i,ca=1,t,s,e,n,x,now,before,max;    sc

2016-05-05 20:42:58 306

原创 搜索算法——总结

搜索算法1.广度搜索(bfs)a.  从初始点开始,根据规则展开第一层节点,并检查目标节点是否在这些节点上,若没有,再将所有的第一层的节点逐一展开得到第二层节点,如没有,则扩展下去,直到发现目标节点为止  b. 比较适合求最少步骤或最短解序列的题目  c.一般设置一个队列queue ,将起始节点放入队列中,然后从队列头取出一个节点,检查是否是目标节点,如不是则进行扩展,将扩

2016-04-24 23:00:13 419

原创 搜索——1015

题意:国际象棋。给出起点和终点,问最少几步可以跳过去。思路:找出从起点出发到达终点的所有路径路径,然后再从这些路径中寻找最短路径scanf跳过空格读字符#include #include #include #include using namespace std;int xx[8] = {1, 2, 1, 2, -1, -2, -1, -2};i

2016-04-24 14:41:50 296

原创 搜索1006

简单题意:   给出4个点坐标A, B, C, D; 从A--B的速度为P,  从C--D速度为Q,  其他速度为R。求从A--D的最快时间。思路:首先在AB上三分一个点出来,然后再在CD上三分一个点让值最小两次三分重叠起来。结果应加上一个精度。#include#include#define eps 1e-9struct point{   

2016-04-23 11:30:00 414

原创 搜索1005

在小车转弯过程中,黄线是不断地变化的,变化规律是先增大再减小。所以抓住这一点,用三分法。先找一个变量,角度sita,之后就是一系列的推导,算出黄线的长度。角度的范围是(0,pi/2)。当三分找出最长的黄线长度之后,使之与Y做比较,当它小于Y时,就说明能够通过#include#include#include#include#include#include#includ

2016-04-23 09:35:42 681

原创 深搜1020

题意:输入一个数字,输出一个素数环,要求每个相邻的数字和为质数,第一个数固定为1思路:考递归搜索的能力,数据不大,其他Prime, map等的优化都没多大作用的,记录好数据#include const int MAX_N = 20;int num;int cycle[MAX_N];bool vis[MAX_N];bool isPr

2016-04-22 20:54:49 262

原创 搜索-1017

最大的A,中等的B,最小的C 规定:最大的瓶子只能往中等的瓶子倒;(若中等的瓶子为空)中等的瓶子只能往最小的瓶子倒;(若最小的瓶子不满)最小的瓶子只能往最大的瓶子倒;(若最小的瓶子已满)这样就会产生一个循环,已最小瓶子的容量为度量进行A->B->C的循环,B作为中间体,只有空了之后才会从A中调入,这样就可以保证每一次的倒入都是独一无二的,而且可以包容所有的情况并且符

2016-04-21 16:58:10 370

原创 搜索—二分三分搜索—1004

这个题主要是一个公式的推导还有二分法和三分法的综合运用。。思路:先三分出一个角度,让抛物线在x=x0出的y取得最大值。然后再到这个y一下去二分一个合适的值。代码:#include#include#include#include#define PI acos(-1.0)#define G 9.8#de

2016-04-21 08:50:05 441

原创 深搜算法-1011

深度搜索题目,统计油田个数。八个方向搜索:int dir[8][2]={{-1,-1},{-1,0},{-1,1},{0,1},{0,-1},{1,1},{1,0},{1,-1}};判断是否选择过 : grid[x][y]='*';#includeusing namespace std;int n,m;char grid[105][105];//存储网格;int dir

2016-04-19 09:34:34 505

原创 广度搜索-1013

题意:有一个只有上下按钮的电梯,每一层有一个参数m,在这一层只能向上或向下走m层,问从A层到达B层最少需要走几步。思路:采用BFS广搜来解决,因为行走路线可以形成一个二叉树,每一步都有两种选择:上或者下。因此,BFS的那种层层搜索恰好能让我们找到满足题目条件的最短路径,注意A == B的情况 #include   #include   #include   #define

2016-04-17 22:12:28 394

原创 深搜算法-1024

题意:给出一个序列,要你输出这个序列的前p个序列(若总排列w排列方式:序列为原序列的非减子序列,length从小到大,length相同的话,位置前的排在前面;思路:判断如果搜索的是子序列的第一个元素,那么判断从原始序列开始到当前位置是否已经出现过该元素,若出现过则之前肯定搜索过该元素,则放弃该元素的搜索。第二个重判,当搜索的不是子序列的第一个元素时,则判断子序列的前一个元素对应原始序列的位

2016-04-16 22:02:36 1709

原创 深搜-n皇后问题 1019

题意:在n×n格的棋盘上放置彼此不受攻击的n个皇后。按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n后问题等价于再n×n的棋盘上放置n个皇后,任何2个皇后不妨在同一行或同一列或同一斜线上。 就是考虑皇后放置的位置,对于每一行,我们需要枚举每个可以放置皇后的位置,而且需要判断当前位置(第i行)是否满足条件,即判断这个位置是否与放置好的前i-1行的皇后的位置相冲突,

2016-04-14 18:02:02 1372

原创 搜素算法——二分搜索-1003

题意:来了f个人,有n个披萨饼,这些披萨饼有着相同的厚度和各自的半径,每个人吃的都是一样的数量,而且不能大家都不想去吃用剩下的边角料留下的披萨,所以就问每个人吃披萨饼的最大量。用二分搜素,注意精度,误差限,一定要注意1e-#include #include #include using namespace std;const double PI = acos(-1.

2016-04-14 16:03:05 421

原创 猜数字 1008

A有1数m,B来猜.B每猜一次,A就说太大,太小或对了。问B猜n次可以猜到的最大数。  第1行是整数T,表示有T组数据,下面有T行 每行一个整数n (1 ≤ n ≤ 30) 思路:B在有限的次数内有无数种猜测方法,在保证能猜中的情况下,求猜测的最大值,用最优方案#include #include#include usi

2016-04-12 19:18:16 401

原创 搜索算法-二分搜索-方程解问题(problem 1002)

题意:Now, here is a fuction:  F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100) 当0思路:与problem A相似 ,相求最小解 ,可以对其求导,求出当导函数=0时x 的值 ,把x代入方程求出解#include using namespace std;#include

2016-04-07 10:53:32 1162

原创 搜索算法-二分搜索-方程解问题(problem 1001)

题意:给出个意愿多次方程 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y;当给出不同的Y,让求x的精确值(小数点后四位)思路:二分法搜索求解,left与right值越来越靠近,当两者差别很小时,中间值大约=解。#include using namespace std;#include #include #include #include #

2016-04-07 10:18:53 491

原创 贪心算法 problemD

简单题意:给出一组字符串,求出普通编码将占用的位数和哈夫曼编码所用的位数,以及普通编码与哈夫曼编码比率(普通编码长度除以哈夫曼编码长度)。解题思路形成过程:哈夫曼编码所占用的位数正好等于哈夫曼树各个非根节点的权值之和。因此,将字符储存好后按每个字母的数量将其进行排序,从小到大进行遍历相加进行哈夫曼树的组建,与此同时对哈夫曼树各个非根节点的权值进行累加即可得结果。

2016-04-07 10:10:39 309

原创 贪心算法 总结

求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。从局部考虑问题 得到局部最优。A题时应选择正确的贪心标准,遇到长题 麻烦题时 要刨根问底,化简题意,把问题层层拨开,找到问题根源。

2016-04-07 10:08:49 295

原创 贪心算法—problem j

这个贪心算法就是普通的数据结构书都会介绍,就是根据出现频率每次选择两个最短的建立huffman树,消除两个插入一个,知道只能一个供选择为止!#include #include  #include using namespace std;struct{       int w;       int p;       int l;       int

2016-04-01 17:03:54 280

原创 贪心算法 田忌赛马(problem C)

题意:这是田忌赛马的故事,首先可以将田忌和国王的马的速度从快到慢排列,然后进行比较。每比一次两边各减去一匹马,用四个标记分别标记田忌和国王的最快、最慢马。先比较他们最快的马,若相等,再比较最慢的马,考虑一下条件和其他因素就可以了。#include"stdio.h"#include"algorithm"using namespace std;const int N=101

2016-03-29 22:09:11 2131

原创 贪心算法 problem M

求中间数 pow() 函数用来求 x 的 y 次幂(次方)    double pow(double x, double y);#include#includeusing namespace std;int main(){double n,p,k;while(cin>>n>>p)    {cout    return 0;}

2016-03-27 20:36:28 288

原创 (水题)坐电梯时间(problem G)

题意:电梯从零层出发  向上运动每层6秒  向下4秒 。给出一组数 需在给的楼层停5秒思路:第一次停的层数直接乘6 +5;以后每层判断是向上是向下。注意:如果不动输出5,# include# includeusing namespace std;int main(){    int N,sum;    int all[110];    while(c

2016-03-24 16:28:38 662

空空如也

空空如也

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

TA关注的人

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