uva
bllsll
巴拉拉,起飞。
展开
-
章八 (erf)最大连续和+求a^n
时间复杂度为n^2的,就是枚举起点和终点。 复杂度为nlogn的,用二分 复杂度为n的,比较巧妙。我们先用s[i]=s[i-1]+a[i],将前n个数的和求出来,然后我们要求的是s[j]-s[i]的一个最大值,也就是说,s[j]确定了的话,我们只需要去让s[i]最小就行了。 还可以用dp来做,复杂度也为n http://blog.csdn.net/hcbbt/article/details原创 2017-04-18 12:29:52 · 227 阅读 · 0 评论 -
紫书章六例题二 Rails
对栈的使用 stack sta; sta.push(); sta.top(); sta.pop();#include <iostream>#include <cstring>#include <cstdio>#include <cstring>#include <algorithm>#include <stack>using namespace std;int t[1005];原创 2017-04-12 23:36:27 · 393 阅读 · 0 评论 -
紫书章六例题一(双端口队列)
题目比较难懂,然后之后的就还好。双端口队列 deque q; q.push_back(); q.push_front(); q.pop_front(); q.pop_back(); q.front();#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <que原创 2017-04-12 23:33:43 · 479 阅读 · 0 评论 -
紫书章五例题八 命令 UVA 400 (排序+结构体)
题意:将一些字符串按照字典从左到右,从上到下输出,假设最长的字符串长度为M,则最后一列为M个字符,其它列为M+2个字符。 这个题我用了一个结构体。然后就出现了一个存字符串的数组,为什么呢,因为如果声明一个二维数组的话,那么排序就不好用了。如果用set存的话,之后查找的话,就比较麻烦。#include <iostream>#include <cstring>#include <algorithm原创 2017-04-04 09:12:56 · 559 阅读 · 0 评论 -
紫书章四习题一 xiangqi uva 1589(模拟)
题意:黑棋只有一个将,红棋还有帅,马,车,炮,中的几个,然后问,现在的局面是不是将死。什么是将死呢?就是下一步黑棋的将无论走到哪里,都是死路一条。(那如果是帅无论走到哪都是死路的话,那是不是….帅死?) 然后想法是将红棋的攻击范围都标记出来,如果之后将可以走的地方都在红棋的攻击范围中的话,就代表将死,否则代表没有将死。 (自己有时候还是太粗心。。。想干脆换个人设算了(摊手)。。)#include原创 2017-04-03 19:55:49 · 414 阅读 · 0 评论 -
紫书章五 大理石在哪 UVA 10474(stl排序查找)
这个题的要求是先排序,后查找。然后书上是用了 sort 和 lower_bound函数都在algorithm头文件里 sort函数是一个模板函数,可以对任意对象进行排序,不一定是内置类型。还可以改变其排序规则。 lower_bound():查找大于或者等于x的第一个位置。 upper_bound(): 查找大于x的第一个位置 比如数组为 a[5]=1,2,3,3,3 然后查找0,1,3原创 2017-04-02 13:38:42 · 623 阅读 · 0 评论 -
紫书章五例二 木块问题 UVA 101(vector)
这一道题主要是vector的应用。我们经常用的有 vector a a.push_back() 尾查 a.pop_back() 尾删 a.size() a的长度 还可以直接赋值 题意为: move a onto b 将木块a上的木块还原,b上的木块还原,a放到b上 move a over b 将木块a上的木块还原,将a放在b所在堆的最上面原创 2017-04-02 15:32:55 · 381 阅读 · 0 评论 -
紫书章五例题五 集合栈计算机 UVA 12096(stack)
这个题的特点进行集合运算,stack中放的是集合。 然后我们用vector将集合存起来,将对应的下标来代表集合。用map来实现对应关系。其中使用set来存一个集合,因为集合中不能有重复的元素。#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#include <cmath>#include原创 2017-04-03 12:19:45 · 697 阅读 · 0 评论 -
紫书章五例题六 团队队列 uva 540(queue)
开始竟然第一反应是优先级队列,,估计是因为题目中说 要将相同队的放在一起,所以就想在队列中直接排好。然后重载了<,还是不行。然后看了一下子紫书,用了队列,每个队有一个队列,然后这些队的顺序又有一个队列#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <queue>#inclu原创 2017-04-03 15:42:58 · 552 阅读 · 0 评论 -
紫书章五例题七 丑数 UVa 136(多种方法,在这里介绍优先级队列)
priority_queue pq; 其实优先级队列为vector,然后vector里的排序是从小到大,然后pq出队的操作对应的是vector的尾删,所以我们看到的pq的出队的数据是从大到小,大数据优先级大。 因为这里的出队元素并不是最先进队的,所以出队方式由queue 的front()变为了top() 如果要改变其排列顺序的话,和sort函数一样,要对其< 进行重载 然后priority_原创 2017-04-03 16:52:41 · 336 阅读 · 0 评论 -
章七例六 Bandwidth UVA - 140(暴力+剪枝)
题意:就是给了你一个定义,问所有情况中值最小的那种情况;需要暴力,但是如果此时出现了值比之前出现的最小值要大的话,则可以直接对下一个情况进行判断了,这个就叫做剪枝~ 还有一个坑点,就是sizeof。。#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <vector>#include原创 2017-03-26 23:15:54 · 292 阅读 · 0 评论 -
紫书章5例三 Andy's First Dictionary, UVA 10815(set)
然后主要学习的是set的用法。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <set>#include <time.h>#include <ctype.h>#include <sstream>using namespace std;set<string> dict原创 2017-03-15 15:48:37 · 283 阅读 · 0 评论 -
紫书章四习题 2 Squares UVA - 201 (找有几个正方形)
因为基础还不是很扎实的原因,看到题目后思路基本上就出来了。但是在码题的时候还有有点问题 1.用二维数组去存图,下标应该是点的位置。 2.这个题用不了并查集。 3.大正方形的扫描。不一定里面有小正方形。#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#include <cmath>usin原创 2017-04-01 19:03:18 · 316 阅读 · 0 评论 -
紫书章六例题三 Matrix Chain Multiplication(stack)
好气啊,太粗心了,多了一个零也看不出来。扫到字母就进栈,否则就出栈计算。#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <queue>#include <vector>#include <set>#include <map>#incl原创 2017-04-12 23:41:11 · 181 阅读 · 0 评论 -
紫书章五例题9 数据库 UVA 1592 (map+vector)
题意:判断是否有两行有相同的两列。 然后刚拿到这道题的时候想放到哪里呢? 然后这里是放到map里面,然后每一个相同的部分会对应一个常数,但是在不同列可能也有相同的部分呀?所以我们定义了一个map M[maxn],对每一列进行对应。然后我们vector 存的是对应的部分所对应的数字。我们最后进行扫描的对列进行枚举,然后从上往下判断。因为v里面存的就是行号嘛。 但是其中会总是WA,因为还有这样原创 2017-04-04 15:52:00 · 279 阅读 · 0 评论 -
紫书章六例题15 给任务排序 UVA 10305(拓扑排序)
题意:给你n个任务,但是这n个任务并不是独立的,意思就是有些任务必须在其他任务完成后才能开始做。法1:将之看为一个有向图,入度为0的入队,出队后,将以出队的这点为起点的边入度减一,然后再将没入队过的且入度为0的点入队。这个方法还可以看有没有有向环,即最后所有点没有全部被遍历到。#include <iostream>#include <cstdio>#include <cstring>#incl原创 2017-04-17 17:08:18 · 484 阅读 · 0 评论 -
紫书章六例题13 古代象形文字 UVA 1103(3次dfs,好题)
题意:给你一个图使用16进制表示的,然后让你转换为二进制,然后看给你这个图中有多少个个象形文字。我们可以根据它给的6个象形文字来看,每个象形文字的中间的白色的洞是不相同的。所以我们只需要来判断中间的洞有几个就可以区别是那个象形文字了。那么问题来了,怎么扫呢?先将dfs外围的区域置-1,然后dfs扫描其中的连通块,然后在连通快中看有几个0块就好。0块也是用dfs来扫的。 还有一个就是最后要求字典序原创 2017-04-17 15:02:54 · 545 阅读 · 0 评论 -
紫书章六例题10 下落的树叶 UVA 699 (根据前序遍历建树)
这个题卡了蛮久。然后改过来后,发现题目意思和自己想的出了一点问题。本以为是一行是一颗树,然后题目中并没有说。所以可能好几行是一棵树。所以用了边读边建树。因为前面的那道题是有明显的标识,如果W1=0 ,建左子树,如果W2=0,建右子树。而且到了叶子节点后不用考虑其他的。但是这道题,之前的不能判断之后是不是叶子,所以。#include <iostream>#include <cstdio>#incl原创 2017-04-15 18:36:35 · 481 阅读 · 0 评论 -
排序
1,冒泡排序:重复扫,然后将顺序相反的换回来。 时间复杂度为n^2,空间复杂度为n。int temp=right;for(int i=left;i<right;i++) for(int j=left;j<temp;j++) if(a[j]>a[j+1]) swap(a[j],a[j+1]);2.快速排序:将其中一个元素作为基准,将无序子集分为两个区间,左半区的元素不大于基原创 2017-04-19 00:51:33 · 209 阅读 · 0 评论 -
紫书章六例题九 天平 UVA 839(更新二叉树的节点上的值)
题意:输入一个树状天平,看是否都符合力矩相等。递归输入每个节点(天平)。第一种是用指针来建树,然后逐步向上更新判断#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>using namespace std;struct node{ int v,w1,d1原创 2017-04-15 15:23:32 · 322 阅读 · 0 评论 -
紫书章六例题八 UVA 548 (中序后序建树,前序遍历求值)
#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>#include <sstream>using namespace std;int in_order[10005],pre_order[10005];struct node{ int data; node *l,*r;原创 2017-04-15 12:12:41 · 316 阅读 · 0 评论 -
紫书章六例题七 树的层次遍历 UVA 122(链表)
开始看错了题目以为是一颗满二叉树,然后就很开心地开了一个数组。。最后RE。因为 题目中说的节点数是256,不一定是满的,如果全是左孩子,这个时候数组就大的不得了啦。然后可以用链表的方法 用数组模拟链表#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#incl原创 2017-04-15 11:05:23 · 297 阅读 · 0 评论 -
紫书章五例题11 邮件传输代理的交互
感觉学到了 string 的用法,string s http://blog.csdn.net/howardemily/article/details/68065196. int k=s.find().然后map原创 2017-04-05 23:25:52 · 326 阅读 · 0 评论 -
紫书章六例题六 小球下落 (UVA 679) (直接模拟超时,找规律)
这个题直接模拟是超时的,因为最大深度为20,然后球的个数最大为 6*10^5,然后时间复杂度已经是10^6,如果有10^5组数据,然后就超时啦啦。所以就来找规律~#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>using namespace std;int ma原创 2017-04-14 19:32:06 · 266 阅读 · 0 评论 -
紫书章六例题五 移动盒子 UVA 12657 (数组模拟双向链表)
题意:给定N个盒子,分别标号为1~N;有下面4种操作: “1 X Y” 表示将X移到Y的左边; “2 X Y” 表示将Y移到Y的右边; “3 X Y” 表示交换X与Y的位置; “4” 表示将1~N所有的盒子反序。 要你求经过M次操作之后,所有奇数位置的盒子标号之和。注意这里x,y指的是值。 然后肯定是不能直接用数组模拟了,因为n,m的大小会达到100000. 然后,1.可以编写一原创 2017-04-14 18:15:42 · 329 阅读 · 0 评论 -
紫书章六例题四 悲剧文本 UVA 11988 (用数组模拟单向链表/递归)
题意:输入一串文本,遇到[]就将里面的内容就放到最前面 然后 有两种做法,第一种,用链表来做(用数组模拟)#include <iostream>#include <algorithm>#include <cmath>#include <cstring>#include <cstdio>#include <queue>using namespace std;const int maxn=原创 2017-04-13 21:43:08 · 379 阅读 · 0 评论 -
紫书章六例题16 单词 UVA 10129(欧拉道路)
题目大意:给你一些英文单词,判断所有单词能不能连成一串,类似成语接龙的意思。但是如果有多个重复的单词时,也必须满足这样的条件才能算YES。否则都是不可能的情况。关于欧拉回路和欧拉路径 定义: 欧拉回路:每条边恰好只走一次,并能回到出发点的路径 欧拉路径:经过每一条边一次,但是不要求回到起始点 ①首先看欧拉回路存在性的判定: 一、无向图 每个顶点的度数都是偶数,则存在欧拉回路。 二、有向原创 2017-04-18 09:20:18 · 306 阅读 · 0 评论 -
紫书章五例题12 城市正视图 (离散化)UVA 221
这篇博客讲的蛮好 http://www.cnblogs.com/farewell-farewell/p/5330429.html 题意:给定了许多建筑的俯视图,每个建筑用左下角的下标,长度,宽度,高度。求正视图可以看到哪些建筑 分析:将所有建筑存下来,然后再按x从小到大,若x相同,就按照y从小到大。然后按照这个顺序扫一遍?怎么扫? 然后这里用的是离散化,因为枚举坐标范围太大了,然后我原创 2017-04-05 08:20:50 · 415 阅读 · 0 评论 -
紫书章四 习题4 Cube painting UVA - 253 (思维水)
其实只要能想到三对相同就好了#include <iostream>#include <cstring>#include <algorithm>#include <cstdio>using namespace std;char s[20];struct node{ char q,p;};node s1[5],s2[5];int vis[5];int main(){原创 2017-04-01 19:39:51 · 354 阅读 · 0 评论 -
紫书章五习题九 Bug Hunt UVA 1596
题意:一共有两种bug需要你找(自己不要想太多) 一共有两种操作 1.数组的声明,这个是没有bug的。注意只是声明,没有初始化 2.赋值操作 a[10]=2或a[10]=a[2]。这里bug会出现在用了没有初始化的值,超过数组的大小,用了没有声明的变量 还学到了 temp.find_first_of(‘[‘)//返回第一个[的下标 temp.find_last_of(‘]’)//返回原创 2017-04-10 22:04:16 · 351 阅读 · 0 评论 -
紫书章五习题八 图书管理系统
题意:先输入若干图书的标题和作者,然后按照先按作者名字的字典序排,然后按照书的字典序来排。然后会有三种操作borrow 表示借书 return表示还书,shelve表示让你输出怎么放书(还是按照原来的顺序)Sample Input"The Canterbury Tales" by Chaucer, G."Algorithms" by Sedgewick, R."The C Programmin原创 2017-04-10 18:31:19 · 335 阅读 · 0 评论 -
章三习题3——UVA 1225
开始还以为要将它们存进字符串,然后一个一个字符的判断。。。 不用#include <iostream>#include <cstdio>#include <cstring>using namespace std;#define maxn 10000005int vis[15];int main(){ int T; scanf("%d",&T); int n;原创 2017-02-27 00:31:42 · 215 阅读 · 0 评论 -
章三习题1——UVA 1585
#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int maxn = 1e2 + 5;char s[maxn];int main(){ int t; cin>>t; while(t--) { scanf("%s", s); int l原创 2017-02-27 00:25:51 · 238 阅读 · 0 评论 -
章三例题6——UVA 1584
就是一个环,从中间断开,求断开后的最小字典树的一个串 然后我的方法比较蠢,就是将每个串都比一比。。#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;char M[105][105];char s[105];int main(){ int n原创 2017-02-27 00:17:25 · 252 阅读 · 0 评论 -
章三例题5——UVA 1583 Degit Generator
题意就是如果x加上x的各个数字的和得到y,则说x是y的生成元,然后告诉y,求x的最小生成元。 然后因为n比较小,然后只用输入一组,直接枚举是可以过的。据说可以打表,现在还没有接触到 http://blog.csdn.net/a27038/article/details/55048971代码#include <iostream>#include <cstdio>#include <cstr原创 2017-02-27 00:12:04 · 253 阅读 · 0 评论 -
章三例题4——UVA 340 Master -Mind Hints
Master-Mind Hints MasterMind is a game for two players. One of them, Designer, selects a secret code. The other, Breaker, tries to break it. A code is no more than a row of colored dots. At the beginn原创 2017-02-27 00:05:41 · 298 阅读 · 0 评论 -
章三例题3——UVA 401 Palindromes
Palindromes A regular palindrome is a string of numbers or letters that is the same forward as backward. For example, the string “ABCDEDCBA” is a palindrome because it is the same when the string is r原创 2017-02-26 23:51:31 · 184 阅读 · 0 评论 -
章三例题2——UVA 10082
WERTYUA common typing error is to place the hands on the keyboard one row to the right of the correct position. So “Q” is typed as “W” and “J” is typed as “K” and so on. You are to decode a message typ原创 2017-02-26 23:38:35 · 277 阅读 · 0 评论 -
章三例题1 UVA 272
TEX Quotes TeX is a typesetting language developed by Donald Knuth. It takes source text together with a few typesetting instructions and produces, one hopes, a beautiful document. Beautiful documents原创 2017-02-26 23:25:59 · 286 阅读 · 0 评论 -
HDU 5867 打表
然后这个题意也蛮简单,就是给你一个不大于1000的数,然后问它的英文表示有多少个字符。如342 (three hundred and forty-two) contains 23 letters and 115 (one hundred and fifteen) contains 20 letters然后第一反应是打表,都记录下来 其中也是有细节的,所以会WA#include <iostream>原创 2017-03-03 01:32:21 · 400 阅读 · 0 评论