
算法竞赛宝典
Jackie035
这个作者很懒,什么都没留下…
展开
-
算法竞赛宝典 动态规划 货币系统问题(完全背包+一维优化)
【题目描述】货币系统问题(money.cpp/c/pas) 货币是在国家或经济体内的物资与服务交换中充当等价物,或是偿还债务的特殊商品,是用作交易媒介、储藏价值和记账单位的一种工具。魔法世界的货币的历史,可以追溯至史前以物易物的阶段,后来经过金属货币、金银、纸币以及金银本位制度,演化至现代的货币体系,现已知魔法世界的货币系统有V种面值,求组成面值为N的货币有多少种方案。【输入格式】第一行为两...原创 2018-03-28 17:24:39 · 556 阅读 · 0 评论 -
算法竞赛宝典 排序算法 插入排序/希尔排序
//插入排序#include<cstdio>#include<iostream>using namespace std;int a[100000];void insert(int n){ for(int i=1; i<=n; i++) { scanf("%d",&a[i]); int j=i-1; while(j>=1 &a...原创 2018-03-26 20:14:04 · 220 阅读 · 0 评论 -
NYOJ 55 懒省事的小明/合并果子(优先队列)
时间: 1000ms / 空间: 131072KiB / Java类名: Main描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之...原创 2018-03-26 19:25:41 · 158 阅读 · 0 评论 -
算法竞赛宝典 递归算法 油桶问题
//递归算法#include<iostream>using namespace std;int a[1000];int oil(int n, int m){ if (n == 0 || m < 0) return 0; else { if (m == a[n]) return 1; else { if (oil(n - 1, m -...原创 2018-03-26 18:02:19 · 2086 阅读 · 0 评论 -
算法竞赛宝典 递归算法 数字三角形
问题: 给定一个由n行数字组成的数字三角形,如下图所示: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大(每一步只能从一个数走到下一层上和它最近的左边的数或者右边的数)。输入: ...原创 2018-03-26 17:58:24 · 489 阅读 · 0 评论 -
算法竞赛宝典 递归算法 传球游戏
传球游戏描述上体育课的时候,小蛮的老师经常带着同学们一起做游戏。这次,老师带着同学们一起做传球游戏。 游戏规则是这样的:n个同学站成一个圆圈,其中的一个同学手里拿着一个球,当老师吹哨子时开始传球,每个同学可以把球传给自己左右的两个同学中的一个(左右任意),当老师再次吹哨子时,传球停止,此时,拿着球没传出去的那个同学就是败者,要给大家表演一个节目。 聪明的小蛮提出一个有趣的问题:有多少种不同的传球方...原创 2018-03-26 17:48:35 · 589 阅读 · 0 评论 -
算法竞赛宝典 递归算法 八皇后
一、八皇后问题八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。//朴素检查/*好奇怪的是我用...原创 2018-03-26 17:42:52 · 249 阅读 · 0 评论 -
算法竞赛宝典 递归算法 打印图形
//打印图形1//找对应坐标的规律时要从整体的指数变化来看,//不能单纯的只看到两个点之间的关系#include<iostream>#include<bits/stdc++.h>using namespace std;bool mp[1000][1000]={0};void print(int n){ int p=pow(3.0,n-1); for(...原创 2018-03-26 17:36:54 · 762 阅读 · 0 评论 -
算法竞赛宝典 递归算法 分苹果
题目描述:把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法? (5,1,1)和(1,5,1) 是同一种分法。输入:第一行是测试数据的组数n。 以下每行均包含二个整数M和N。输出:对输入的每组数据M和N,用一行输出相应的K。 样例输入27 33 2样例输出82分析:#include<iostream>#include<algorithm>...原创 2018-03-26 17:12:13 · 435 阅读 · 0 评论 -
算法竞赛宝典 递归算法 拆分自然数
Problem Description任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。Input输入有多组数据,对于每组数据就一个数n。Output对于每组输入输出n的拆分方法。Sample Input4Sample Output1+1+1+11+1+21+32+2//难理解的递归#include<iostream> #include<cstdio&g...原创 2018-03-26 16:41:12 · 671 阅读 · 0 评论 -
算法竞赛宝典 排序算法 归并排序
//归并排序(nlog n)#include<cstdio> #include<iostream> using namespace std; int a[100000]; int b[100000]; void print(int n) { for(int i=1; i<=n; i++) printf("%...原创 2018-03-26 20:32:10 · 175 阅读 · 0 评论 -
算法竞赛宝典 递推算法 偶数个3的个数
偶数个3时间限制:1000 ms | 内存限制:65535 KB 难度:1描述 在所有的N位数中,有多少个数中有偶数个数字3 输入第一行为一个整数T,代表有T组数据。(T<10000) 接下来T行,每行一个正整数N。(1<=N<=1000)输出 每行输出一个整数,即方案数(由于结果可能很大,你只需要输出这个答案mod 12345的值。)。样例输入12样例...原创 2018-03-27 08:49:59 · 1107 阅读 · 0 评论 -
算法竞赛宝典 递推算法 布阵
Problem Description 在一无限大的二维平面中,我们做如下假设:1、 每次只能移动一格;2、 不能向后走(假设你的目的地是“向上”,那么你可以向左走,可以向右走,也可以向上走,但是不可以向下走);3、 走过的格子立即塌陷无法再走第二次;求走n步不同的方案数(2种走法只要有一步不一样,即被认为是不同的方案)。Input 首先给出一个正整数C,表示有C组测试数据接下来的C行,每行...原创 2018-03-27 09:35:24 · 234 阅读 · 0 评论 -
算法竞赛宝典 动态规划 收益(完全背包)
【题目描述】收益(Profit.cpp/c/pas) POJ 2063“建太空梯进入太空要1兆亿?”魔法学院的院长瞪大了眼睛。“这只是基础设施的费用,后期还要……”墨老师掰着手指算。“哎呀,现在地主也很穷啊,学院的钱批下来就这么多,你想办法用这笔钱在债券市场上获得最大收益吧。”院长皱着眉头。简单来说,就是你有一笔钱,你要将这笔钱去投资债券,现在有d种债券,每种债券都有一个价值和年收益,债券的价值...原创 2018-03-28 16:48:19 · 649 阅读 · 0 评论 -
算法竞赛宝典 递推算法 区域划分问题
描述:m条线,其中已经p条线已经相交于一点,则最多可以划分出多少个区域#include<iostream>#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){ int m,p; ll sum; while(cin>>m>>p) { ...原创 2018-03-27 11:24:02 · 377 阅读 · 0 评论 -
算法竞赛宝典 递推算法 过河卒
题目描述】如图,A 点有一个过河卒,需要走到目标 B 点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的C点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 C 点上的马可以控制 9 个点(图中的P1,P2 … P8 和 C)。卒不能通过对方马的控制点。【输入】 键盘输入B点的坐标(n,m)以及对方马的坐标(X,Y){不用判错}【输出】 屏幕输出 一...原创 2018-03-27 10:54:22 · 1090 阅读 · 0 评论 -
算法竞赛宝典 排序算法 桶排序
//普通版的桶排序#include<cstdio> #include<iostream> #include<bits/stdc++.h>#define N 100000using namespace std; int a[N]; int c[10];int bucket[10][N];int Max,len;void init(int ...原创 2018-03-27 10:47:16 · 186 阅读 · 0 评论 -
算法竞赛宝典 排序算法 计数排序
//不稳定的计数排序#include<cstdio> #include<iostream> using namespace std; int a[100000]; int b[100000]; void init(int n) { for(int i=1; i<=n; i++) scanf("%d",&am...原创 2018-03-27 10:44:29 · 164 阅读 · 0 评论 -
算法竞赛宝典 排序算法 冒泡+优化
//冒泡排序在于将每一次的最大(升序)不断沉底,只要当一轮比较中没有发生交换,那么就是已经有序#include<cstdio> #include<iostream> using namespace std; int a[100000]; void print(int n) { for(int i=1; i<=n; i++) ...原创 2018-03-27 10:36:07 · 175 阅读 · 0 评论 -
算法竞赛宝典 排序算法 快速排序
//嘻嘻嘻,快排#include<cstdio> #include<iostream> using namespace std; int a[100000]; void print(int n) { for(int i=1; i<=n; i++) printf("%d ",a[i]); prin...原创 2018-03-27 10:31:34 · 269 阅读 · 0 评论 -
算法竞赛宝典 递推算法 军事情报(错排公式)
军事情报Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 16588 Accepted Submission(s): 6909Problem Description大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了!做好“...原创 2018-03-27 10:07:22 · 235 阅读 · 0 评论 -
算法竞赛宝典 递推算法 极值问题
极值问题Description已知m、n为整数,且满足下列两个条件: (1)m、n∈1,2,3,……,k (2)(n^2-mn-m^2)^2=1 对给定的k,求m^2+n^2的最大值 Sample Input 1995 Sample Output m=987 n=1597分析:由条件2:(n^ 2-mn-m^2)^2=1故而: (m^2 + mn- n^2)^2=1继续化简:m^2+mn...原创 2018-03-27 09:53:19 · 1280 阅读 · 0 评论 -
算法竞赛宝典 动态规划 魔法石矿
【题目描述】魔法石矿(Mine.cpp/c/pas)为了找到回家的路,张琪曼施展魔法,从高维空间召唤出了一种叫作“读者”的生物,据说“读者”这种生物无所不能,他们可以穿越时空的限制,聆听到历史的声音、巨人的呐喊。但这次“读者”却很严肃地警告她们,从远古起就阴魂不散的天顶星人已冲破封印再次降临到了这个空间,她们若不早做准备,不仅她们所在的这个世界将变成修罗场,连“读者”所在的时空也会受到牵连。最后“...原创 2018-03-31 19:49:59 · 1790 阅读 · 0 评论 -
算法竞赛宝典 动态规划 抄近路
抄近路(shortline.cpp/c/pas)【题目描述】“最近不知道怎么回事,感觉我们这个城市变成了一个神奇的地方,有时在路上走着走着人就消失了!走着走着突然又有人出现了!你以为这是《寂静岭》,《生化危机》,《行尸走肉》拍摄地?……哎,先不说了,这该死的雾霾又让我们迷路了。”李旭琳发愁地说。张琪曼和李旭琳每天要从家到车站,小区被道路分成许多正方形的块,共有N×M块。由于道路太多以及雾霾的影响,...原创 2018-03-31 11:31:20 · 744 阅读 · 0 评论 -
算法竞赛宝典 递推算法 曲线分割
【问题描述】曲线分割(curve.cpp/c/pas)设有n条封闭曲线画在平面上,而任何两条封闭曲线恰好相交于两点,且任何三条封闭曲线不相交于同一点,问这些封闭曲线把平面分割成的区域个数。【输入格式】输入整数n。【输出格式】输出分割的区域个数。【输入样例】2【输出样例】4//找规律再与寻找变化的地方,研究变化的原因,就有突破口了#include<iostream>#includ...原创 2018-03-31 11:18:18 · 688 阅读 · 0 评论 -
算法竞赛宝典 分治算法 循环比赛
//P16#include<iostream>#include<math.h>using namespace std;int map[40][40];int main(){ int n; while (cin >> n) { map[1][1] = 1; for (int k = 1; k <= n; k++) { int...原创 2018-03-25 08:27:20 · 564 阅读 · 0 评论 -
算法竞赛宝典 分治算法 快速幂取模运算
//理解快速幂运算即可,类似于加法//理解快速幂运算即可,类似于加法#include<iostream>#include<algorithm>#include<bits/stdc++.h>using namespace std;typedef long long ll;int main(){ ll n,x; ll p; cin>&g...原创 2018-03-24 20:38:02 · 590 阅读 · 0 评论 -
算法竞赛经典 递推算法 数的计数
【问题描述】数的计数(people.cpp/c/pas) NOIP2001“修罗王的召唤听见了听见了,黑暗军团的勇士们咆哮了咆哮了,看神国的圣殿动摇了动摇了,我仰天大笑是我们进攻的时候了,哈哈哈哈哈哈……”当漫山遍野响起黑暗军团的战歌时,郁闷的邪狼却在一遍遍地反复计算黑暗军团的总人数。计算方法是这样的,输入一个自然数n(n≤1000),然后对此自然数按照如下方法进行处理:(1)不做任何处理;(2)...原创 2018-03-30 14:38:12 · 498 阅读 · 0 评论 -
算法竞赛宝典 分治算法 预算(贪心)
A1122. 旅行家的预算时间限制:1.0s 内存限制:256.0MB 总提交次数:854 AC次数:169 平均分:54.45将本题分享到: 查看未格式化的试题 提交 试题讨论试题来源 NOIP1999 提高组问题描述 一个旅行家想驾驶汽车以最少的费用从一个城市到另一个城市(假设出发时油箱是空的)。给定两个城市之间的距离D1、汽车油箱的容量C(以升...原创 2018-03-24 17:46:40 · 274 阅读 · 0 评论 -
算法竞赛宝典 分治算法 花费
///二分解决,学习了#include<bits/stdc++.h>using namespace std;int a[100000+10];int n; //天数 int m; //规定的分组数 /*判断用当前的mid值能把天数n分成几组*/ /*通过比较group与m的大小,对mid值进行优化*/ int binary(int key){ int s...原创 2018-03-24 14:03:04 · 439 阅读 · 0 评论 -
算法竞赛宝典 分治算法 逃亡
//输入AB间的路程和步行速度,单人自动驾驶悬浮车的速度求甲乙从A开始同时到达B点的时间#include<bits/stdc++.h>#include<map>using namespace std;int main(){ int s,v1,v2; while(cin>>s>>v1>>v2) { double c0=0...原创 2018-03-24 10:30:34 · 406 阅读 · 0 评论 -
算法竞赛宝典 分治算法 近似整数
题意:给double 的a,int l,求int n,d<=l,使|a-n/d|最小。//追赶法#include<bits/stdc++.h>#include<map>using namespace std;double f;int L; int main(){ while(cin>>f>>L) { double min=...原创 2018-03-24 09:58:46 · 226 阅读 · 0 评论 -
算法竞赛宝典 分治算法 魔法石的诱惑
FactorialTime Limit: 1500MS Memory Limit: 65536KTotal Submissions: 16651 Accepted: 10259DescriptionThe most important part of a GSM network is so called Base Transceiver Station (BTS). These transceiv...原创 2018-03-24 09:00:21 · 684 阅读 · 0 评论 -
算法竞赛宝典 分治算法 神族文字(STL map)
BabelfishTime Limit: 3000MS Memory Limit: 65536KTotal Submissions: 47345 Accepted: 19834DescriptionYou have just moved from Waterloo to a big city. The people here speak an incomprehensible dialect of...原创 2018-03-24 08:32:34 · 524 阅读 · 0 评论 -
算法竞赛宝典 分治算法 残缺棋盘
//从整体的角度,一步一步递归,一步一步分块分治解决#include<iostream>using namespace std;int chess[1050][1050];int k, x, y;int tmp;void lt(int x, int y){ chess[x][y + 1] = 4; chess[x + 1][y + 1] = 4; chess[x ...原创 2018-03-25 08:33:50 · 606 阅读 · 0 评论 -
算法竞赛宝典 分治算法 一元三次方程
一元三次方程求解总时间限制: 1000ms 内存限制: 65536kB 描述 有形如:ax3+bx2+cx+d=0 这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d 均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。输入 一行,包含四个实数a...原创 2018-03-25 09:07:12 · 571 阅读 · 0 评论 -
算法竞赛宝典 分治算法 交叉的梯子(几何公式的推导+二分)
Crossed laddersTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 5209 Accepted: 1980DescriptionA narrow street is lined with tall buildings. An x foot long ladder is rested at the base of the ...原创 2018-03-25 09:35:49 · 1443 阅读 · 0 评论 -
算法竞赛宝典 递推算法 平面分割
【问题描述】凸多边形的三角形剖分(triangle.cpp/c/pas)传说魔法世界的创世神使用过的一件上古神器遗失在一个凸多边形的二维魔法空间中,谁若拥有这件上古神器,将会成为世界之主。修罗王很想拥有这件上古神器,他打算通过若干条互不相交的对角线,把这个多边形剖分成了若干个三角形来寻找,现在的任务是输入凸多边形的边数n,求不同剖分的方案数Cn。比如当n=5时,如图所示,有如下5种不同的方案,所以...原创 2018-03-31 11:16:19 · 501 阅读 · 0 评论 -
算法竞赛宝典 递推算法 妖兽特攻队
【问题描述】妖兽特攻队(frog.cpp/c/pas)NOI 2000不甘心失败的修罗王派出大小各不相同的一队妖兽站在河左岸的石墩(记为A)上,要过到对岸的石礅(记为D)上去执行军事任务。如图8.11所示,河心有几片荷叶(分别记为Y1…Ym)和几个石墩(分别记为S1…Sn)。妖兽站队和移动方法规则如下:(1)每只妖兽只能站在荷叶、石墩或者比它大一号的妖兽背上(统称为合法的落脚点);(2)一只妖兽只...原创 2018-03-31 11:13:04 · 335 阅读 · 0 评论 -
算法竞赛宝典 递推算法 汉诺塔
//汉诺塔的步数问题,H(n)=H(n-1)*2+1,使用迭代的方法求出通项公式#include<iostream>#include<bits/stdc++.h>using namespace std;int main(){ int n; while(cin>>n) printf("%d\n",(1<<n)-1); retu...原创 2018-03-31 10:59:50 · 594 阅读 · 0 评论