![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法与ACM
文章平均质量分 92
ice110956
全新主页上线:www.huangwc.cn,本blog停止更新,欢迎来访。
展开
-
排序算法C++实现
整理一下排序算法。首先一个数组,A={x1,x2,x3......xN},我们先要从大到小经行排序1.按照人们最直观的思想,应该是一次次的遍历,每次从里面取最大的一个,放到另一个数组里面,这就是简单选择排序。2.我们从第一个值开始,跟其后面的值对比,如果后面的大,则与后面的交换。那么每一次的结果就是最小被放到了最后,接着是第二小的呗放到了倒数第二,依次类推。经过N此之后,变为一个有序数原创 2013-07-19 10:03:26 · 934 阅读 · 0 评论 -
acm.njupt--2008
描述逆袭(Counter Attack)什么的,是必须的,不逆袭,不算活过。DS为逆袭,求教神预言家Master Yu。预言家一听是DS想逆袭,心中一叹曰“喜闻乐见”,随即铺开一列塔罗牌,对DS说:你可以从这列塔罗牌中取走任意多个,但是,不能取走相邻的牌,因为相邻的牌是相刑的,会带来一生孤独运。预言家说完,抬手转身出门而去,远处传来上帝的声音:“若你能找出所有的可行取法,百日内必可被逆推!”请问,到底有多少种可行的取法呢?输入第一行包含一个正整数T (1≤T≤10),表示有T组测试用例。每组用例包原创 2014-03-03 11:37:46 · 1169 阅读 · 0 评论 -
acm.njupt--1859
描述 大戈壁越野赛前后分为很多赛段,一个车队也有多辆车。一个车队在一个赛段只能使用一辆车,但是到达赛段中转站(分隔各赛段的点)时可以任意更换车辆,当然也可以不换。在不同赛段,不同的车有着不同的表现,如果规则不限定换车次数,显然可以在每一个赛段都用最好用的车,但很不幸,换车次数有限定,那么,安排一个合理的换车策略十分重要。我们认为,车队可以选择任意一种车开始赛程,不算换车次数。 现在依次给出从起点到终点N个赛段中每辆车的表现(跑完当前赛段所需时间),请计算出跑完全部赛程所需最短时间。输入原创 2014-03-02 10:03:05 · 1412 阅读 · 2 评论 -
acm.njupt--2027
描述给出一初始序列a1, a2,...,an,下面有m个操作(x, l, r) : 对于a[l], a[l+1],...,a[r]都加上x.输出m个操作结束后的序列.输入第一行两个整数n,m(0 <= n,m <= 100000),n表序列{A}的长度, m表操作的个数。第二行有n 个整数ai(-10000 <= ai <= 10000)。下面m行,每一行表示一个操作,一个操作表示为3个整数x, l, r(1 <= l <= r <= n, |x|<=1000)。输出输出结果序列。原创 2014-03-02 14:53:38 · 1145 阅读 · 0 评论 -
acm.njupt--2026
Keroro来侵略地球之前,曾跟Giroro伍长打赌:“我一个人灭掉整个地球给你看!”.于是Keroro同学真的自己一个人来到地球开始他的侵略行动了。从K隆星出发之前,Keroro从Kururu曹长那儿拿了若干台左手武器{Li}和若干台右手武器{Ri},Keroro需要从{Li}里选一台左手武器,从{Ri}里选一台右手武器,用来组合成可用的恐怖武器。左右手武器组合的规则很简单,假设从{Li}选出来攻击力为p的武器,从{Ri}选出来攻击力为q的武器,组合起来的攻击力就是p XOR q.Keroro想知道原创 2014-02-28 20:12:15 · 1200 阅读 · 0 评论 -
acm.njupt--1983
描述2013“华为杯”南京邮电大学大学生团体歌唱大赛比赛形式为:大赛分为多轮,每一轮随机选择参赛团体进行两两PK赛。当根据多轮多场的PK赛成绩能够确定排名次序时,大赛结束。我们将问题进行简化,从1开始按递增顺序给每一个参赛团体分配一个整数编号,每个参赛团体在比赛期间表现出的歌唱水平各不相同且稳定不变,每场PK赛成绩必定胜负。给定已记录的多场PK赛成绩,请你根据胜负关系确定大赛是否应该结束,并且能够排除记录出现错误的情形。举一个例子,共有三个参赛团体参加大赛,如果参赛团体1在PK赛中胜参赛团体3、参赛团原创 2014-02-28 19:12:51 · 997 阅读 · 0 评论 -
acm.njupt 1001-1026 简单题
acm.njupt 1001-1026简单题 第一页许多是简单题,每题拿出来说说,没有必要,也说不了什么. 直接贴上AC的代码.初学者一题题做,看看别人的AC代码,寻找自己的问题. 记得实习公司的经理说过,最快提高编码水平的方法有一个就是看别人的代码.简单题没有太多需要解释的方法,就是训练一些编码方法. 由于第一页的许多题目都是大二的时原创 2013-10-31 20:19:28 · 3353 阅读 · 0 评论 -
后缀树与最长回文子串
后缀树与最长回文子串首先引入求最长回文子串的问题:回文串:正反一样的字符串.如ABCDCBA,反过来是还是ABCDCBA. 回文子串:DABCAEA中有两个回文子串(不包括长度为1的),即ABCA,AEA.长度ABCA>AEA. 那么字符串DABCAEA的最长回文子串就是ABCA. 解决方法:1. 遍历所有的子串. 长度N的字符串,共原创 2013-12-13 21:26:31 · 5000 阅读 · 2 评论 -
哈夫曼编码正确性之屌丝证明法
哈夫曼编码是数据结构中比较基础的东西。最近遇到一个类似哈夫曼编码的问题,解法却截然不同。问题A君:N堆石子排成一列,两两合并成一堆,只能相邻的合并。合并的代价为两堆石子个数之和。总的代价为所有中间结果之和。求最小总代价。也就是有次序的哈夫曼树。对比两个问题后,开始思考哈夫曼编码的正确性问题。对比两个问题后,开始思考哈夫曼编码的正确性问题。 回顾一下哈夫曼编码:哈夫曼编码的构造代价为Cost=所有叶原创 2013-10-21 19:05:00 · 8199 阅读 · 2 评论 -
快速幂取模
如何快速地求A^B,特别是当A,B都很大的时候.结果取A^BmodC 菜鸟解法:Result=pow(A,B)modC.超过int范围,挂掉. 菜鸟想了想,每次乘一个A,modC :Result=1;While(B--){ Result*=A; Result%=C;}超时,挂掉.原创 2013-10-21 20:07:36 · 1301 阅读 · 0 评论 -
约瑟夫问题的N种解法
有n个囚犯站成一个圆圈,准备处决。首先从一个人开始报数,报到k的人被处死,剩下n-1个人继续这个过程,直到最终只剩下一个人留下.问题是,给定了n和k,一开始要站在什么地方才能避免被处决? 1. 模拟实现我们利用计算机来模拟这个过程,可以得到最后的结果.具体的编码中,考虑到每次要随机删除一个人,用链表实现比较方便.然后又是一个圈,可以考虑用循环链表.指针从头到尾遍历原创 2013-10-21 16:30:12 · 4063 阅读 · 0 评论 -
几种有趣的不常见排序
几种有趣的不常见排序算法我们常见的排序算法有简单选择,冒泡,插入,两路合并,希尔,堆,快速排序等等,下面介绍几种有趣的不常见的排序算法。如:鸡尾酒排序,鸽巢排序,奇偶排序,梳排序,臭皮匠排序,图书馆排序,bogo排序等等。原创 2013-09-29 10:08:03 · 3209 阅读 · 1 评论 -
过桥问题
过桥问题:问题描述:4个人在晚上过一座小桥,过桥时必须要用到手电筒,只有一枚手电筒,每次最多只可以有两人通过, 4个人的过桥速度分别为1分钟、2分钟、5分钟、10分钟,试问最少需要多长时间4人才可以全部通过小桥?原创 2013-09-27 16:41:39 · 2115 阅读 · 3 评论 -
区间最值与线段树
区间最值问题:有无序序列,求任意子区间段的最大值。最常用的数据结构就是线段树。线段树是一种二叉搜索树,用分治的思想来解决,其中中间结果有点类似于动态规划的中间结果。我们用线段树可以快速地解决区间最值问题。原创 2013-09-26 20:50:26 · 4532 阅读 · 0 评论 -
KMP算法 next函数 代码解析
KMP算法很早就接触了,记得自己看着代码也能理解实现,但是时间已久总是忘了如何编码,也许是自己对于next函数的理解一直停留在记忆层面上。现在把KMP的next函数拿出来,看看能不能分析出一个门道,理解了它的逻辑,方式,才会记得比较熟悉吧。KMP的思想这里不探讨了,直接上next函数的代码来分析。void next(const char *T, int next[]){原创 2013-07-20 11:00:15 · 3475 阅读 · 0 评论 -
acm.njupt--1882
描述 给你连续的N个数字符,在其中插入K个乘号将它分成K+1个部分,找出一种分法,使得这K+1个部分的乘积能够为最大。输入 程序的输入共有两行: 第一行是2个正整数N,K(6≤N≤40,1≤K≤6) 第二行是N个连续的数字符。输出 输出所求得的最大乘积(一个自然数)。样例输入4 21231样例输出62原创 2014-03-05 09:59:37 · 1316 阅读 · 0 评论