
acm
文章平均质量分 63
wchoice
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
poj 1847
大致题意:现在有一铁路网络,有n个交叉点,和一些开关。通过开关可以改变路线方向,使其能驶向其他交叉点。开关的初始状态已知,即(初始直接某两点直接相连)。问从出发点到目的地最少要动多少开关才能到达。 最短路问题,开关初始状态边权为0,其他为1,这个条件转化比较有意思,深感智商不够用了。。 #include using namespace std; #define max 0x3f3f3f3原创 2013-07-20 17:16:27 · 611 阅读 · 0 评论 -
uva 657
dfs的水题,只不过有个细节,点数也是一堆连在一起的只算一个点,也就是说在dfs里要再套个dfs。 #include #include using namespace std; struct node{ int n; node *next; node(int a,node *p){n=a;next=p;} }; char g[60][60]; int vis[60]原创 2013-10-28 22:32:35 · 480 阅读 · 0 评论 -
uva 10562
题目不是很难,不过格式还是挺新奇的,半个月没写题了,结果wa了3发始终找不到原因,最后发现没换行,实在是。。。。 #include #include using namespace std; char str[220][220]; int sta[220]; int main() { int n; cin>>n; getchar(); while(n--){原创 2013-10-12 22:09:46 · 468 阅读 · 0 评论 -
uva 327
这题就是让算一个表达式的值,要处理变量的自加自减,刚在数据结构课上听了怎么把中序表达弄成后序表达,就趁此试了试,所以过程麻烦了点。 #include #include #include #define hp '!' #define hm '@' #define tp '#' #define tm '$' using namespace std; char orgn_str[200]; ch原创 2013-09-20 14:03:14 · 486 阅读 · 0 评论 -
uva 548
这道题是,给出一个二叉树的中根遍历和后根遍历,让你找这个树上从根到叶子和最小的一条路径,即对这个树进行先根遍历(dfs)。 很容易想到的一个思路就是先重建,再遍历,我看网上的代码基本也是这么写的。不过我注意到后根遍历倒过来看,就是一个先遍历右子树的先根遍历。可以这么想,在后根遍历中,最后一个元素就是整个树的根,前面分别是左子树和右子树的后根遍历;而在子树的后根遍历中,这个子树的根又在最后,从后往原创 2013-09-04 19:16:37 · 666 阅读 · 0 评论 -
uva 112
大概是把一个二叉树通过括号标记存到一个线性表里,然后算根到叶子的和。给出的带括号的形式其实就是这个树的dfs的栈,左括号入,右括号出,因此不需要重建树,直接怼就行。然后我用一个数组记录访问次数以此判断是否为叶子。在网上看到有大神的代码巧妙利用cin流的各种函数来处理输入,不明觉厉。 #include #include #include using namespace std; int sta[原创 2013-09-02 22:49:18 · 520 阅读 · 0 评论 -
uva 297
一个四叉树的题,建树遍历都没啥难度,就是遍历的时候要处理一个矩阵比较麻烦,原创 2013-09-06 09:20:17 · 484 阅读 · 0 评论 -
uva 540
本来想开个二维数组,担心数据坑人越界,就用指针写了,开了个指针数组来存放每个队的末尾元素的指针。 #include #include #include using namespace std; struct node{ node *next; int n; }; int belong[1000005]; node *team[1005]; node *hea原创 2013-08-29 16:36:07 · 530 阅读 · 0 评论 -
uva 11234
这道题是要将一个用栈储存的逆波兰表达式,转化为用队列表示。逆波兰的栈表示就是一个二叉树的后序遍历,我把逆波兰的二叉树画出来后,跟示例一比发现要输出的就是这个树的层次遍历的逆序。照这么写果然过了,但是不明白为什么,上网也没搜到好的结果。 #include #include using namespace std; #define max 10010 struct node{ node *原创 2013-08-27 16:44:28 · 561 阅读 · 0 评论 -
uva 442
题目没什么说的,直接栈模拟,由于题目说明给出的字符串是合理的,也就不用检查合法性,遇到右括号就出两个进一个新矩阵。 看到别人的代码可以先扫一遍判断是否可以连乘,这样可以节省时间,看来线代又没学好。 另外c++下struct可以带构造函数,用起来比较方便。 #include #include using namespace std; struct mtrx{ int r,c;原创 2013-08-26 17:21:51 · 480 阅读 · 0 评论 -
uva 10152
题目没啥说的。 string类的整行输入,用getline(cin,buff,char c), 第三个参数为分割符,默认为\n,可忽略此参数。c不存入string,下次读时从c的下一个字符开始。 #include #include #include #include using namespace std; int main() { map t; int k,原创 2013-08-26 11:04:07 · 469 阅读 · 0 评论 -
uva 101
大水题,由于各种变量重名及瞎引用竟然搞了一下午,智毕硬。。。另外这题看到网上各种上百行的代码,颇为不解。。。 #include using namespace std; int c[30][30]; int pos[30],top[30]; void rtn(int n){ int p=pos[n],&t=top[p],m; while( (m=c[p][t])!=原创 2013-08-24 16:29:48 · 470 阅读 · 0 评论 -
uva 127
水题一道,不过是第一次用数组实现链表,形式上貌似更简洁,代码量也少,不过有些细节第一次写所以还没习惯,比如用指针时是p->left,用数组的话是left[i],想着很明白,但是不经意间就会写成i-1。 #include #include #include using namespace std; char crd[53][53][5]; int top[53]; int l[53]原创 2013-08-23 17:46:34 · 651 阅读 · 0 评论 -
poj 2240
题目的意思是给出几个国家,并给出每个国家之间的汇率,求这几个国家构成的图中所形成的环中,一个国家的钱转一圈回来之后还可增加,即自身汇率大于1。 用floyd的思路来写,注意一是数组为double型,二是自环初始为1,其他开路的话初始为0。 第一次用map类,将一对string和int关联起来,而且可以用[]运算符操作,很方便。 #include #include #include #原创 2013-07-20 19:57:13 · 521 阅读 · 0 评论 -
poj 3159
差分约束系统,A认为B同学的糖不能比他的多C,即a->b有一条权为C的路,flymouse在发糖的时候要满足所有同学的要求,现在问,flymouse如何给每个同学发糖,最后能使自己的糖的数量比snoopy多的最多,即设d[0]=0,问d[n]。 这道题spfa用栈而不用队列,至于为什么我也不甚清楚……另外一个细节是一开始用cin输入超时,换了scanf 就过了。。。 #include #in原创 2013-07-21 17:28:46 · 732 阅读 · 0 评论 -
uva 10305
拓扑排序的水题。 #include #include #define max 10000+10 using namespace std; int in[max]; int edge[max]; int root[max]; int next[max]; int que[max]; int main(){ int n,m; while(cin>>n>>m){ if原创 2013-11-29 19:25:23 · 425 阅读 · 0 评论