自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

田园园野的博客

每一个你不满意的现在,都有一个你没有努力的曾经。

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

原创 Corn Fields 状压DP

Corn Fields Memory Limit: 65536KTotal Submissions: 10891 Accepted: 5705DescriptionFarmer John has purchased a lush new rectangular

2017-04-28 13:43:38 1453 1

原创 Mondriaan's Dream 瓷砖覆盖地板 编程之美

Description Squares and rectangles fascinated the famous Dutch painter Piet Mondriaan. One night, after producing the drawings in his ‘toilet series’ (where he had to use his toilet paper to draw on,

2017-04-27 19:27:07 686

原创 石子合并(三) 环形合并

题目描述在一个园形操场的四周摆放N堆石子,现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆合并成新的一堆,合并的花费为这相邻两堆之和试设计出1个算法,计算出将N堆石子合并成1堆的最小花费.输入输出格式输入格式: 数据的第1行试正整数N,1≤N≤100,表示有N堆石子.第2行有N个数,分别表示每堆石子的个数.输出格式: 输出最小得分题解: 动态规划 dp[i][t]=min(dp[i][

2017-04-26 16:41:45 4771

原创 石子合并 相邻两堆合并

石子合并(二)描述有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。输入 有多组测试数据,输入到文件结束。 每组测试数据第一行有一个整数n,表示有n堆石子。 接下来的一行有n(0< n <200)个数,分别表示这n堆石子的数目,用空格隔开输出 输出

2017-04-26 16:13:02 1838

原创 石子合并 任意两堆合并

石子合并(一)描述 有N堆石子排成一排,每堆石子有一定的数量。现要将N堆石子并成为一堆。合并的过程中任意两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆。求出总的代价最小值。输入 测试数据第一行有一个整数n,表示有n堆石子。 接下来的一行有n(0< n <200)个数,分别表示这n堆石子的数目,用空格隔开输出 输出总代价的最小值,占单独的一行 样例输入 3

2017-04-26 15:58:11 1886

原创 核电站问题 动态规划

核电站问题一个核电站有N个放核物质的坑,坑排列在一条直线上。如果连续M个坑中放入核物质,则会发生爆炸,于是,在某些坑中可能不放核物质。任务:对于给定的N和M,求不发生爆炸的放置核物质的方案总数。输入描述 Input Description输入文件只一行,两个正整数N,M( 2<=N<50,2≤M≤5)输出描述 Output Description输出文件只有一个正整数S,表示方案总数。样例输入 Sa

2017-04-23 21:30:20 3214 2

原创 挖地雷问题 dfs

问题描述在一个地图上有N个地窖(N<=12),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。[题目要求]当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,每个地窖只能经过一次,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使某人能挖到最多的地雷。输入格式第一行一个数n。 第二行n个数wi表示每个点的地雷数。 随后n-1行若

2017-04-23 16:53:37 773

原创 挖地雷问题 单向 动态规划

挖地雷Problem Description在一个地图上有n个地窖(n<=200),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径,并规定路径都是单向的,也不存在可以从一个地窖出发经过若干地窖后又回到原来地窖的路径。某人可以从任一处开始挖地雷,然后沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使他能挖到最多的地雷。(用动态规划求解)Input输

2017-04-23 10:01:44 1650

原创 山区建小学 动态规划

描述政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往。已知任意两个相邻的村庄之间的距离为di(为正整数),其中,0 < i < m。为了提高山区的文化素质,政府又决定从m个村中选择n个村建小学(设 0 < n < = m < 500 )。请根据给定的m、n以及所有相邻村庄的距离,选择在哪些村庄建小学,才使得所有村到最近小学的距离总和最小,

2017-04-22 21:12:25 1898

原创 合唱队形 动态规划

Description N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, …, K,他们的身高分别为T1, T2, …, TK,则他们的身高满足T1 < T2 < … < Ti , Ti > Ti+1 > … > TK (1 <= i <= K)。 你的任务是,已知所有N位同学的身高,计算

2017-04-22 15:54:17 794

原创 第八届 蓝桥杯 分巧克力

标题: 分巧克力儿童节那天有K位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有N块巧克力,其中第i块是Hi x Wi的方格组成的长方形。为了公平起见,小明需要从这 N 块巧克力中切出K块巧克力分给小朋友们。切出的巧克力需要满足: 1. 形状是正方形,边长是整数 2. 大小相同 例如一块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。 当

2017-04-21 21:12:26 2019 4

原创 剪邮票 蓝桥杯

12张连在一起的12生肖的邮票。现在你要从中剪下5张来,要求必须是连着的。 (仅仅连接一个角不算相连)比如,下图中,粉红色所示部分就是合格的剪取。请你计算,一共有多少种不同的剪取方法。题解:开始想直接dfs,可是会忽略好多种情况,因为dfs的结果是一笔画的,如图二直接dfs就不行。正确的应该是先dfs 5个点,然后判断这5个点是够连通, 是否仅有1个连通分支#include<stdio.h>#i

2017-04-21 19:06:31 752

原创 蓝桥杯 方格分割 第八届

第八届 蓝桥杯 方格分割 标题:方格分割6x6的方格,沿着格子的边线剪开成两部分。 要求这两部分的形状完全相同。如图:p1.png, p2.png, p3.png 就是可行的分割法。试计算: 包括这3种分法在内,一共有多少种不同的分割方法。 注意:旋转对称的属于同一种分割法。请提交该整数,不要填写任何多余的内容或说明文字。

2017-04-20 21:05:51 3122 8

原创 spfa算法 最短路

SPFA(Shortest Path Faster Algorithm)(队列优化)算法: 1.求单源最短路径。 2.判负环(在差分约束系统中会得以体现)。 3.在Bellman-ford算法的基础上加上一个队列优化,减少了冗余的松弛操作,是一种高效的最短路算法。如求如下图到各顶点的最短路径,d[i]记录到顶点i的最短路,Q队列 过程如下:1.初始化:用数组代替队列,二维数组存储点边信息#i

2017-04-16 19:48:42 423

原创 bellman-ford算法 最短路

bellman-ford算法 在负权的图的单源最短路问题Bellman-Ford 算法和 Dijkstra 算法都是可以解决单源最短路径的算法,一个实现的很好的 Dijkstra 算法比 Bellman-Ford 算法的运行时间要低,但dijkstra算法无法解决存在负权环的图的单源最短路问题

2017-04-16 09:47:04 2415

转载 程序员的十层楼,好想哭,我还在第一层

自西方文艺复兴以来,中国在自然科学方面落后西方很多,软件领域也不例外。当然现在中国的许多程序员们对此可能有许多不同的意见,有些人认为中国的程序员水平远落后于西方,有些则认为中国的程序员个人能力并不比西方的程序员差,只是整个软件产业落后而已。那么,到底中国的程序员水平比西方程序员水平差,还是中国有许多优秀的程序员达到或超过了西方程序员同等水平呢?要解决这个问题,必须先知道程序员有多少种技术层

2017-04-07 21:22:08 736

原创 方格填数 蓝桥杯

题目描述填入0~9的数字。要求:连续的两个数字不能相邻。 (左右、上下、对角都算相邻)一共有多少种可能的填数方案?输出方案总数即可。开始题意理解错了,以为每个数字用的次数不限,错了,是每个数字只用一次方一:#include<stdio.h>#include<math.h>#include<string.h>struct Direction{ int x; int y;};

2017-04-07 08:48:25 364

原创 时光计算 已知天数算日期

题目描述 “人生最苦之事莫过于明知要失去,但是却还没发生。”——基兰废墟之地,曾经有一座恢宏的城池,很久以前在一场可怕的符文战争中灰飞烟灭,就像宏伟屏障之下的大多数陆地一样。尽管如此,还是有一个人生还了下来:一名叫做基兰的魔法师。对于他这样一个时光痴迷者来说,住在城市的钟塔之中是再合适不过了。现在他在精神上漂浮于时间中,思考未来之事。他知道一个时间点,以及多个时间间隔(天),他想知道经过这些时间间

2017-04-06 15:53:29 1541

原创 迟到的宁神

题目描述 题目: 张宁去ACM比赛,迟到了,就看到门上写着一个奇怪的算式:ZNASG * ? = GSANZ他对同样迟到的聪神说:“ZNASG应该代表不同的数字,问号也代表某个数字!只有算出来了才能进去考试!”聪神:“我猜也是!”于是,两人沉默了好久,还是没有算出合适的结果来。请你利用计算机的优势,找到破解的答案。把 ZNASG 所代表的数字写出来。输入 没有!输出 输出ZNASG代

2017-04-06 14:51:09 301

原创 蓝桥杯 李白打酒

题目描述 话说大诗人李白,一生好饮。幸好他从不开车。 一天,他提着酒壶,从家里出来,酒壶中有酒2斗。他边走边唱: 无事街上走,提壶去打酒。 逢店加一倍,遇花喝一斗。 这一路上,他一共遇到店5次,遇到花10次,已知最后一次遇到的是花,他正好把酒喝光了。 请你计算李白遇到店和花的次序,可以把遇店记为a,遇花记为b。则:babaabbabbabb

2017-04-05 19:35:52 526

原创 prim算法 最小生成树

最小生成树是最小权重生成树的简称。一个有n个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有n个结点,并且有保持图连通的最少的边普里姆算法(Prim算法) 在加权连通图里搜索最小生成树。意即由此算法搜索到的边子集所构成的树中,不但包括了连通图里的所有顶点,且其所有边的权值之和也为最小。例如如下:图B是由图A的最小生成树图A       图B算法过程详解: 存在两个集合:都存储结点

2017-04-04 23:37:43 449

原创 算法训练 安慰奶牛 C语言

问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路。道路被用来连接N个牧场,牧场被连续地编号为1到N。每一个牧场都是一个奶牛的家。FJ计划除去P条道路中尽可能多的道路,但是还要保持牧场之间 的连通性。你首先要决定那些道路是需要保留的N-1条道路。第j条双向道路连接了牧场Sj和Ej(1 <= Sj <= N; 1 <= Ej <= N; Sj != Ej),而且走完它

2017-04-04 16:59:42 1074

原创 最小生成树 kruscal算法 C语言

克鲁斯卡尔算法的基本思想:在N个顶点的连通无向网中,在所有未选取的边中,在不构成构成回路的前提下,选最小边,若构成回路,取次小边,直到出现N-1条边。#include<stdio.h>#include<string.h>#include<stdlib.h>#define Max 999999int pre[Max],k=0,n,m;struct Egde{ int from,to,v;

2017-04-04 15:44:19 1423

原创 最短路 floyd算法

动态规划#include<stdio.h>#include<string.h>#define max 99999999#define min(a,b) a<b?a:bint main(){ int n,m,i,j,a,b,v,k; scanf("%d%d",&n,&m); int dp[n][n]; for(i=0;i<n;i++){ for(j

2017-04-03 21:49:31 520

原创 最短路径 输出路径 Dijkstra算法

某个源点到其余各顶点的最短路径 这个算法最开始心里怕怕的,不知道为什么,花了好长时间弄懂了,也写了一遍,又遇到时还是出错了,今天再次写它,心里没那么怕了,耐心研究,懂了之后会好开心的,哈哈Dijkstra算法:图G 如图:若要求从顶点1到其余各顶点的最短路径,该咋求;迪杰斯特拉提出“按最短路径长度递增的次序”产生最短路径。首先,在所有的这些最短路径中,长度最短的这条路径必定只有一条弧,且它的

2017-04-03 20:38:15 16386 2

原创 算法训练 最大最小公倍数

问题描述 已知一个正整数N,问从1~N中任选出三个数,他们的最小公倍数最大可以为多少。输入格式 输入一个正整数N。输出格式 输出一个整数,表示你找到的最小公倍数。 样例输入 9 样例输出 504 数据规模与约定 1 <= N <= 106。题解: 当n为奇数时,三个数为奇-偶-奇,两个相邻的自然数互质,其中的两个奇数相差2,也一定互质res=n*(n-1)*(n-2);当n为偶数

2017-04-03 12:20:48 276

原创 算法提高 金属采集

问题描述 人类在火星上发现了一种新的金属!这些金属分布在一些奇怪的地方,不妨叫它节点好了。一些节点之间有道路相连,所有的节点和道路形成了一棵树。一共有 n 个节点,这些节点被编号为 1~n 。人类将 k 个机器人送上了火星,目的是采集这些金属。这些机器人都被送到了一个指定的着落点, S 号节点。每个机器人在着落之后,必须沿着道路行走。当机器人到达一个节点时,它会采集这个节点蕴藏的所有金属矿。当机器

2017-04-02 23:17:38 1003

原创 算法训练 结点选择

算法训练 结点选择 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 问题描述 有一棵 n 个节点的树,树上每个节点都有一个正整数权值。如果一个点被选择了,那么在树上和它相邻的点都不能被选择。求选出的点的权值和最大是多少? 输入格式 第一行包含一个整数 n 。 接下来的一行包含 n 个正整数,第 i 个正整数代表点

2017-04-02 13:47:55 1104

原创 最大公约数,最小公倍数

2个或n个数的最大公约数,最小公倍数 辗转相除法: 在数学中,辗转相除法,又称欧几里得算法,是求最大公约数的算法。两个整数的最大公约数是能够同时整除它们的最大的正整数。辗转相除法基于如下原理:两个整数的最大公约数等于其中较小的数和两数的差的最大公约数。 例如: 用(a,b)来表示a和b的最大公约数。 已知a,b,c为正整数,若a除以b余c,则(a,b)=(b,c)。

2017-04-01 15:58:35 386

原创 函数交换两数 swap(a,b) a=a^b,b=a^b,a=a^b

方法: 此方法节省内存,调用方便 #define swap(a, b) a=a^b,b=a^b,a=a^b ^是按位异或运算符,也就是对应的位如果不同则结果为1,相同为0。 例如: a = 19,b = 7; 那么a的二进制为:0001 0001,b的二进制为:0000 0111 a ^ b就等于 0001 0011 0000 0111

2017-04-01 15:07:24 1552

原创 防御导弹 最长递增子序列

题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截 系统有一个缺陷:虽然它的第一发炮弹能够达到任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试 用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入 最多20个整数,分别表示导弹依次飞来的高度(雷达给出高度数据是不大于30000的正整数)输出 整数M。表示:

2017-03-01 21:16:58 269

原创 四平方和 蓝桥杯2016

题目描述四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和。 如果把0包括进去,就正好可以表示为4个数的平方和。 比如: 5 = 0^2 + 0^2 + 1^2 + 2^2 7 = 1^2 + 1^2 + 1^2 + 2^2 (^符号表示乘方的意思) 对于一个给定的正整数,可能存在多种平方和的表示法。 要求你对4个数排序: 0 <= a <= b <=

2017-03-01 15:15:31 671 3

原创 打印大X 2015年蓝桥杯省赛

题目描述X星球居民小区的楼房全是一样的,并且按矩阵样式排列。其楼房的编号为1,2,3… 当排满一行时,从下一行相邻的楼往反方向排号。 比如:当小区排号宽度为6时,开始情形如下: 1 2 3 4 5 6 12 11 10 9 8 7 13 14 15 ….. 我们的问题是:已知了两个楼号m和n,需要求出它们之间的最短移动距离(不能斜线方向移动输入 输入为3个整数w m n,

2017-03-01 14:03:53 1300

原创 爱丽丝·玛格特罗依德

题目描述 在幻想乡中,爱丽丝·玛格特罗依德是一名居住在魔法森林的魔法使,擅长召唤人偶。一天她的姬友帕秋莉找到了她,要他防御雾雨魔理沙对巴瓦卢魔法图书馆的“破坏”。 她有n点魔法值,每召唤出一个『上海人形』就要消耗若干点(x),最后,它们造成的威力就是每个人形所消耗的魔法值的总积。 她为了知道能有多少威力,找到了全幻想乡唯一会编程的你,你不会让她失望吧?Rewrote From Izayoi S

2017-02-26 21:32:06 874

原创 高精度除法

高精度除法#include<stdio.h>#include<string.h>int a[500],b[500],c[501],lena,lenb,lenc,i,j,x,k;int compare (){ int i; if(a[0]>b[0]) return 1; if(a[0]<b[0]) return -1; for(i=a[0]; i>0; i--)

2017-02-26 21:06:56 579

原创 高精度乘法

高精度乘法#include<stdio.h>#include<string.h>int a[500],b[500],c[501],lena,lenb,lenc,i,j,x,k;void mult(char *a1,char *b1){ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c));

2017-02-26 20:59:40 357

原创 高精度减法

高精度减法#include<stdio.h>#include<string.h>int a[500],b[500],c[501],lena,lenb,lenc,i,j,x,k;void jian(char *a1,char *b1){ char temp[500]; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); mem

2017-02-26 20:57:03 498

原创 高精度算法加法

高精度加法#include<stdio.h>#include<string.h>int a[500],b[500],c[501],lena,lenb,lenc,i,j,x,k;void add(char *a1,char *b1){ memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); memset(c,0,sizeof(c));

2017-02-26 20:53:18 405

原创 快速幂取余算法

求a的m次方然后除以t常规想法是如下int f=1;for(int i=1;i<=m;i++){ f=f*a;}f=f%t;1.容易时间超时,效率低下,快速幂的算法便是提高效率,缩短时间。 2.若a和m较大时容易溢出,若在每次进行次方运算前将所要运算的数取余,则会减少溢出的可能。运用公式: (a^m)%t=((a%t)^m)%t 既在每次进行次方运算前(快速幂运算)将所要运算的数

2017-02-24 20:41:20 600

原创 快速幂

求a的m次方时,若m较大,则效率较低,运用分治法(在本博客中搜索分治法,将了解相关信息)进行快速幂计算主要思想: f^n=f^(n/2)*f^(n/2) n为偶数 f^n=f^(n/2)*f^(n/2)*f n为寄数递归算法:#include<stdio.h>double power1(double a,int m){ double f; if(m

2017-02-24 19:55:15 385

空空如也

空空如也

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

TA关注的人

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