![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 59
AcDora
这个作者很懒,什么都没留下…
展开
-
CF 271D Good Substrings(trie树)
除了图论以外,随便做一下数据结构,感觉挺不错的 分析题目:每个子串都是,如果能插入到字典树,就答案加1,思想比较简单,但是要注意的是,想问题要清楚,对于这道题,有一个k在限制,所以不必把所有的子串都插入,用字典树的另一个目的在于能够除重,是插入一个子串,就加1,而不是已有的子串也加1。另外,由于是子串,它不必一个一个子串完整的插入,比如说:asdfg这个字符串,as是子串,asd也是子串,这时候原创 2013-02-14 20:06:13 · 982 阅读 · 0 评论 -
UVa 929 Number Maze( Dijsktra + 优先队列)
这道题是Dij的变体,由于最大的数据一共是10e6的规模,矩阵一定不过 然后看一下变数,假设每个点发出四条边(上,下, 左,右,这里就包括了双向的边了),那么数据规模就是4*10e6,结构体这样大规模,数组应该是承受不了的,如果用vector的话,应该是可以的,但是还是很麻烦 所以,我们就可以利用两个二维数组来代替边表,因为对于每个点,只要遍历它的上下左右即可 数据结构解决了,那么就是算法实原创 2013-03-09 16:22:46 · 3039 阅读 · 0 评论 -
LA 3135 Argus ( 优先队列 )
只有一组输入,每行三个数据,第一是指令,第二个是事件编号,第三个是这个事件发生的周期, 以“#”结束;然后输入k 输出前k个发生的事件,如果同时发生,标号小的先输出 代码: #include #include #include using namespace std; struct item{ int qnum, per, time; bool operator <原创 2013-03-09 17:08:42 · 904 阅读 · 0 评论 -
UVa 10954 Add All ( 优先队列 )
这道题开始理解得有偏差,这里再说明一下题目 是给出一组数字,每两个相加之后,把数字删掉,然后把这两个数的和加到这写数字里面 例如: 1 4 6 8 9 这5个数,如果1+8=9,那么数列变成 4 6 9 9,1和8被删掉,9加进来。 而且,每次相加,都要付相应费用,费用就是两个数的和,比如1+8费用就是9 问题是:求将所有的数都加起来,最小费用是多少 那么用贪心的思想,要想费用最小原创 2013-03-09 19:00:21 · 1027 阅读 · 0 评论 -
UVa 11995 I Can Guess the Data Structure(优先队列)
这道题就是典型的有优先队列 以不一样的标准排序,还有经常性了插入和删除 如果是优先队列,就是按照x由大到小排序;队列,按标号由小到大;栈,按标号有大到小。 注意:一定要考虑到当出栈大于入栈的情况,这样是impossible,而只有入栈没有出栈是not sure;入栈大于出栈或者等于出栈都是正常处理的 考虑周全 代码: #include #include using namespac原创 2013-03-09 20:01:15 · 904 阅读 · 0 评论 -
UVa 514 Rails(stack)
又犯了输出错误,从现在起,以后没提交一道题之前,都必须要再审一遍输出 根据先进后出,可以推断,如果有一个这样的图形,r[i] > r[i-1] && r[i] 代码如下: #include #include using namespace std; int n, rail[1010]; int main() { while ( scanf("%d", &n) != EOF原创 2013-03-13 22:00:26 · 1032 阅读 · 0 评论