acm
lycommand
这个作者很懒,什么都没留下…
展开
-
蚂蚁爬杆问题
告诉你有一个长为L(L 输入的第一行为数组个数, 每组数组第一行为三个正整数,L,T,n,分别表示长度,时间,蚂蚁个数。 L 表示向左,R表示向右 输出格式为n行,输出每个蚂蚁的位置和朝向,如果T秒内已经掉下,输出fell off。 样例输入: 1 10 1 4 1 R 5 R 3 L 10原创 2015-04-26 12:32:09 · 779 阅读 · 0 评论 -
频繁出现的数值
题目大意:给一个非降序排列的整数数组a,你的任务是对于一系列询问(i, j),回答ai,ai+1...aj中次数出现最多的值所出现的次数。分析:由于数列是非降序的,所以所有相等的数都会聚集在一起。这样我们就可以把整个数组进行编码。如-1,1,1,2,2,2,4就可以编码成(-1,1),(1,2),(2,3),(4,1)表示(a,b)数组中的a连续出现了b次。用到以下的数据结构转载 2016-01-12 20:43:03 · 390 阅读 · 0 评论 -
LA4329乒乓比赛_树状数组
题目大意:一条大街上住着n个乒乓球爱好者,经常组织比赛切磋技术。每个人都有一个能力值a[i]。每场比赛需要三个人:两名选手,一名裁判。他们有个奇怪的约定,裁判必须住在两名选手之间,而裁判的能力值也必须在两名选手之间。问一共能组织多少种比赛。分析:考虑第i个人,假设a1到ai-1中有ci个比ai小,那么就有(i-1)-ci个比ai大;同理,如果ai+1到an中有di个比ai小,那么就有(n-i)-d转载 2016-01-11 21:05:45 · 581 阅读 · 0 评论 -
LA3027合作网络
有N个结点一次 I u v 操作表示把结点u的父结点设为v,距离为|u-v|%1000.输入保证执行指令前u没有父结点一次E u 操作表示询问u到根结点的距离O操作表示结束解题思路:因为题目只查询结点到根结点的距离,所以每棵树除了根结点不能换之外,其他结点的位置可以任意改变,,这恰好符合并查集的特点,但是需要记录附加信息。如果记录每个结点到根的距转载 2016-01-10 14:55:24 · 408 阅读 · 0 评论 -
UVA11100_旅行
给定n个正整数,把他们划分成尽量少的的严格递增序列(前一个数字必须小于后一个数字)比如6个数,1 1 2 2 2 3,要划分成3个序列{1,2},{1,2},{2,3}输入格式: 输入包含多组数据,每组数据的第一行为整数n,n输出格式: 对于每组数据,输出序列个数的最小值K和这K个序列,如果有多种划分方式,任何一组解均可。分析:第一,首先确定一共有几组,我们可转载 2016-01-10 14:17:08 · 1024 阅读 · 2 评论 -
UVA11997 K个最小和_优先队列&&K路合并
有K个整数数组,包含K个元素。在每个数组中取一个元素加起来,可以得到k^k个和。求这些和中最小的K个值分析:这题有简化版本的,即2个整数数组A,B,包含K个元素,在每个数组中取一个元素加起来,可以得到k^2个和,求这些和中最小的K个值。我们需要把这k^2个和组织成如下k个有序表.表1:A1+B1表2: A2+B1表k:Ak+B1我们可以用二元组(s,转载 2016-01-06 21:04:40 · 362 阅读 · 0 评论 -
LA3664_并查集
有一些简单化合物,每种化合物有两种不同的元素组成,如果在这些化合物中存在k个化合物恰好含有k中不同的元素,则是危险的。把每种元素看成节点,节点与节点之间的边为化合物,则在该无向图中若存在环,则有上述情况发生。每次输入一对元素,输入完毕以-1表示,整体输入完毕以EOF表示 样例输入1 23 43 53 12 3原创 2016-01-06 16:37:24 · 318 阅读 · 0 评论 -
K路归并
K路归并问题可以这样定义如果存在k个已经排好序的数组,每个数组有数目不等的元素,要求出这些数组整体里最小的k个元素代码如下,比较粗制滥造,希望提出批评#include#include #include #include using namespace std;//有k个已经排好序的数组 要求找出m个最小的元素 k为3 m为6int minPos;#define原创 2016-01-05 14:39:22 · 819 阅读 · 0 评论 -
字典树的操作
#include #include #include using namespace std;#define MAX 26typedef struct _Trie{ int num; struct _Trie *next[MAX];}Trie,*PTrie;PTrie root;void InsertTrie(string str){ int len=str.leng转载 2016-01-02 20:09:13 · 279 阅读 · 0 评论 -
线段树的几种函数
#include using namespace std;const int N=100005;typedef struct _Node{ int left; int right; int max; int sum;}Node;//这种线段树主要记录两种信息 当前最大值与其子树和int a[N]={0,1,5,4,1,6};Node nodeArray[N*4];转载 2016-01-02 13:27:14 · 353 阅读 · 0 评论 -
未排序数组中累加和为给定值的最长子数组
注意数组元素可正可负,给定值设为k,求其和为K的最长子数组长度解法1: 最笨的方法,穷举所有子数组,每次穷举到特定子数组时候,把子数组元素都加起来,设立length,然后维持该length,时间复杂度O(N^3)解法2: 使用前缀和数组,比如数组a[10],设置help数组,help[i]代表a[0]+a[1]+```+a[i],这样,在穷举到某个特定数组时候,转载 2016-01-17 15:36:54 · 1344 阅读 · 0 评论 -
快速排序与归并排序
这两天面试,面试官要我手写快排代码,我写的时候出了点纰漏,深感惭愧,以前对于这种基本排序太轻视了,总以为不会考,特此练习一遍。#include #include using namespace std;void Swap(int *a,int *b){ int temp; temp=*a; *a=*b; *b=temp;}int PartitionSort(int原创 2015-10-15 15:15:34 · 410 阅读 · 0 评论 -
零钱组合的几种解法
存在这样一个数组, int arr[100]={5,10,25,1}; 里面是各种零钱的金额,我们还假设每一种零钱都有无数种,请问这些金钱组成一个特定面额数值的组合数。比如 要组成1元,则情况为 5 10 25 1 0 0 0 10 0 1 0 0 1 0 0 5原创 2015-09-18 22:05:31 · 2072 阅读 · 1 评论 -
最少找零问题与完全背包模型的一点思考
最少找零问题描述如下,有n张硬币,价值存储在一个数组中,每种硬币个数都是无限的,再给定一个要找的零钱数,然后试用最少的数目的硬币来找我们要求的数目。比如 5,2,3,要找出20元钱,我们人工的判断几个可能,很快就可以找出最优,也就是4张5元,也就是4. 如果这个题目要求用程序解决,我们可以遵循如下思路 首先如果全部用5元,则其最多4张,如果全部用2元,则最原创 2015-10-01 16:18:19 · 861 阅读 · 0 评论 -
二叉树的序列化与还原
遇到一个二叉树序列化的问题,就是用字符串或者数组来表示二叉树,或者使用字符串或者数组来还原二叉树,以下是源程序#include #include #include using namespace std;typedef struct _BiTree { char data; struct _BiTree *left; struct _BiT原创 2015-09-13 20:31:06 · 666 阅读 · 0 评论 -
一道比较经典的迷宫问题
现在有一个城市销售经理,需要从公司出发,去拜访市内的商家,已知他的位置以及商家的位置,但是由于城市道路交通的原因,他只能在左右中选择一个方向,在上下中选择一个方向,现在问他有多少种方案到达商家地址。给定一个地图map及它的长宽n和m,其中1代表经理位置,2代表商家位置,-1代表不能经过的地区,0代表可以经过的地区,请返回方案数,保证一定存在合法路径。保证矩阵的长宽都小于等于10。测原创 2015-09-25 18:53:37 · 1096 阅读 · 0 评论 -
白话粒子群算法
简介 上次在自话遗传算法中提到后期会写两篇关于粒子群算法和蚁群算法的博文,所以这次给大家带来的是我对粒子群的一些理解,并附带一个相当简单的实例去描述这个算法,我会尽力通俗易懂的把整个算法描述一遍,其实粒子群算法的思想也挺简单的,希望我不要反而写复杂了,下面同样引用百度百科的摘要结束简介部分。 粒子群优化算法(PSO)是一种进化计算技术(evolutionary comp转载 2016-02-27 16:48:21 · 1190 阅读 · 0 评论