scau10303 #include<cstdio>#include<iostream>#include<cstring>using namespace std;//ap表示原三角,bp表示各子问题最优解,cp表示子问题是如何合成原问题的int ap[105][105],bp[105][105],cp[105][105],n;void Init(){ memset(ap,0,sizeof(ap)); memset(bp,0,sizeof(bp)); memset(cp,0
康复训练(8596) 8596 最长上升子序列(优先做)时间限制:300MS 代码长度限制:10KB提交次数:255 通过次数:118题型: 编程题 语言: G++;GCC;VC;JAVADescription当元素 ai1 < ai2 < … < aiK. 就说这个序列是有序上升的。给定序列(a1, a2, …, aN),存在许多这样的子序列(ai1, ai2, …, aiK),其中1 <= i1 < i2 < … < iK <= N.也就是说,子序列是原序
康复训练(9715) 9715 相邻最大矩形面积时间限制:1000MS 代码长度限制:10KB提交次数:0 通过次数:0题型: 编程题 语言: G++;GCC;VC;JAVADescription在X轴上水平放置着 N 个条形图,这 N 个条形图就组成了一个柱状图,每个条形图都是一个矩形,每个矩形都有相同的宽度,均为1单位长度,但是它们的高度并不相同。例如下图,图1包含的矩形的高分别为2,1,4,5,1,3,3 单位长度,矩形的宽为1单位长度。你的任务就是计算柱状图中以X轴为底边的最大矩形的面积。图2阴影部
康复训练(scau10304 ) 10304 平面域着色时间限制:1000MS 代码长度限制:10KB提交次数:188 通过次数:53题型: 编程题 语言: G++;GCC;VC;JAVADescription平面上有一点P,它是n个域D1、D2、……,Dn的共同交点,现取k种颜色对这n个域进行着色,要求相邻两个域着的颜色不同,求着色方案数。这里,2<=n<=10,1<=k<=9。输入格式输入:输入两个值:n和k。n为域的个数,k为颜色数输出格式输出:对n个域着色的方案数如输入3 3输
康复训练(scau10343) 10343 划分凸多边形(优先做)时间限制:800MS 代码长度限制:10KB提交次数:0 通过次数:0题型: 编程题 语言: G++;GCC;VC;JAVADescription问题描述:一个正凸N边形,可以用N-3条互不相交的对角线将正N边形分成N-2个三角形。现在要求读入N边形的N(N≤20),输出不同划分方法的总数(要求解的是划分方法数,而不需要输出各种划分法)。这里,注意:(1)顶点编号,认为顶点皆不相同,因此不允许认为将凸N边形转置视为相同划分。(2)若输出是“No an
康复训练(scau 8594) 8594 有重复元素的排列问题(优先做)时间限制:1000MS 代码长度限制:10KB提交次数:1610 通过次数:656题型: 编程题 语言: G++;GCC;VC;JAVADescription设集合R={r1,r2,…,rn}是要进行排列的n个元素,其中r1,r2,…,rn可能相同。试着设计一个算法,列出R的所有不同排列。即,给定n以及待排的n个可能重复的元素。计算输出n个元素的所有不同排列。输入格式第1行是元素个数n,1<=n<=15。接下来的1行是待排列的n个元
数据结构课设框架 //头文件上界 #include<cstdio>//头文件下界 // 结构体上界 //食物 typedef struct FOOD{ char name[100]; //名字 double price; //价格 double discount; //折扣 int number; //库存 int hot; //热度 Ptr_FOOD next; } FOOD,*Ptr_FOOD;//用户typed
带权并查集——并查集3(以后改进写法,现在讲的不易懂) 在了解带权并查集前,我们先要理清楚我们前面讲的并查集的路径压缩。int find(x){ int p=x; if(p!=pre[p])pre[p]=find(pre[p]); return pre[p];}前面我们讲了,这一步操作能够使得find路径上的节点全部指向根节点。好的,我们知道pre[]数组是保存某个节点的父节点是谁。而加权并查集要一个value[]数组保存某个节点与他父节点之间的权值。而这个权值在其父节点改变时自然也会发生改变。带权并查集路径压缩int find(x){ i
树状数组——求逆序对个数(初学者都能看懂) 在网上翻看了一些博客,感觉大体对于树状数组求逆序对的讲解不够详细,那些博客,更多像是给已经学会逆序对的人复习用的。而初学者,可能要冥思苦想。接下来,我便从一个初学者的角度,来一步步的,讲解一下由树状数组求逆序对。需要的前置知识只有,会线段数组的基本应用。单点更新,区间查询,求lowbit。先贴树状数组的基本代码。求lowbitint lowbit(x){return x&(-x);}单点更新void update(int x,int y,int n){ for(int i=x;i
堆排序——华农oj8644 8644 堆排序时间限制:1000MS 代码长度限制:10KB提交次数:1909 通过次数:1257题型: 编程题 语言: G++;GCCDescription用函数实现堆排序,并输出每趟排序的结果输入格式第一行:键盘输入待排序关键的个数n第二行:输入n个待排序关键字,用空格分隔数据输出格式第一行:初始建堆后的结果其后各行输出交换堆顶元素并调整堆的结果,数据之间用一个空格分隔输入样例105 4 8 0 9 3 2 6 7 1输出样例9 7 8 6 4 3 2 5 0 1
HDU-1166 敌兵布阵 C国的死对头A国这段时间正在进行军事演习,所以C国间谍头子Derek和他手下Tidy又开始忙乎了。A国在海岸线沿直线布置了N个工兵营地,Derek和Tidy的任务就是要监视这些工兵营地的活动情况。由于采取了某种先进的监测手段,所以每个工兵营地的人数C国都掌握的一清二楚,每个工兵营地的人数都有可能发生变动,可能增加或减少若干人手,但这些都逃不过C国的监视。中央情报局要研究敌人究竟演习什么战术,所以Tidy要随时向Derek汇报某一段连续的工兵营地一共有多少人,例如Derek问:“Tidy,马上汇报第3个营地
堆中的路径——题解 5-树7 堆中的路径 (25分)将一系列给定数字插入一个初始为空的小顶堆H[]。随后对任意给定的下标i,打印从H[i]到根结点的路径。输入格式:每组测试第1行包含2个正整数N和M(≤1000),分别是插入元素的个数、以及需要打印的路径条数。下一行给出区间[-10000, 10000]内的N个要被插入一个初始为空的小顶堆的整数。最后一行给出M个下标。输出格式:对输入中给出的每个下标i,在一行中输出从H[i]到根结点的路径上的数据。数字间以1个空格分隔,行末不得有多余空格。输入样例:5 346
归并排序两种实现——代码 #include<cstdio>#include<cstring>#include<cstdlib>#define maxn 10000void Marge_sort(int ap[],int n);void Divide(int ap[],int tmp[],int left,int right);void Combine(int ap[],i...
拓扑排序入门 实际上挺早之前便了解了拓扑排序,但一直不是很清楚他有什么用的。最近做了一道拓扑排序的题目,大概对这类问题有了一些了解吧。拓扑排序适用于一种特殊的图,这种图有以下特征。1:该图为有向图。2:该图有严格的顺序,不存在后面的被指向的节点去指向前面的节点。即不存在a->b->c->a这一条。拓扑排序有两个作用,检查是否是拓扑图和输出拓扑序。话不多少,例题来见CodeForce...
选择排序——华农oj 8643 8643 简单选择排序时间限制:1000MS 代码长度限制:10KB提交次数:2235 通过次数:1301题型: 编程题 语言: G++;GCCDescription用函数实现简单选择排序,并输出每趟排序的结果输入格式第一行:键盘输入待排序关键的个数n第二行:输入n个待排序关键字,用空格分隔数据输出格式每行输出每趟排序的结果,数据之间用一个空格分隔输入样例105 4...
希尔排序——华农oj 8640 8640 希尔(shell)排序时间限制:1000MS 代码长度限制:10KB提交次数:1858 通过次数:1304题型: 编程题 语言: G++;GCCDescription用函数实现希尔(shell)排序,并输出每趟排序的结果,初始增量d=n/2,其后d=d/2输入格式第一行:键盘输入待排序关键的个数n第二行:输入n个待排序关键字,用空格分隔数据输出格式每行输出一趟排...
直接插入排序——华农oj 8638 8638 直接插入排序时间限制:1000MS 代码长度限制:10KB提交次数:2050 通过次数:1393题型: 编程题 语言: G++;GCCDescription用函数实现直接插入排序,并输出每趟排序的结果.输入格式第一行:键盘输入待排序关键的个数n第二行:输入n个待排序关键字,用空格分隔数据输出格式每行输出一趟排序结果,数据之间用一个空格分隔输入样例105 4...
冒泡排序——华农oj 8641 8641 冒泡排序时间限制:1000MS 代码长度限制:10KB提交次数:3093 通过次数:1361题型: 编程题 语言: G++;GCCDescription用函数实现冒泡排序,并输出每趟排序的结果(要求当一趟冒泡过程中不再有数据交换,则排序结束)输入格式第一行:键盘输入待排序关键的个数n第二行:输入n个待排序关键字,用空格分隔数据输出格式每行输出每趟排序结果,数据之...
棋盘问题 POJ - 1321 棋盘问题 POJ - 1321/* 这是一道广度优先搜索的题目。 */#include<cstdio>#include<cstring>#include<cstdlib>#include<cmath>int n,k,cnt;char g[10][10];int visit[10]; //visit表示...
动态规划简单题——不断更新 hdu 2084 数塔 简单从上往下递推#include<cstdio>#include<cstring>#include<cstdlib>/* 1;分解问题:dp[i][j]表示第i行第j列的位置到达底部的最大数字和 2;初始状态:最下面一行的dp值就是原三角形底对应位置的值 3:状态转移方程:dp[i][j]=max(dp[i+1][j],d...