自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

AC_Arthur的专栏

Always challenge miracles!

  • 博客(26)
  • 收藏
  • 关注

原创 10562 - Undraw the Trees(多叉树的深度搜索)

用DFS深度搜索树。#includeusing namespace std;const int maxn = 200+10;int n;char buf[maxn][maxn];void dfs(int r,int c) { printf("%c(",buf[r][c]); if(r+1<n&&buf[r+1][c]=='|'){ int i=c;

2015-02-28 14:28:39 763

原创 10129 - Play on Words(欧拉回路+dfs)

首先说一下欧拉回路的条件。图分为有向图和无向图,这两种图的欧拉回路条件是不一样的。对于无向图,可能有0个或者2个奇点,而且有奇点时一定是从其中一个奇点出发,另一个奇点终止。对于有向图,像本题,是不会形成环的,所以一定是一个点的出度比入度大1,一个点的入度比出度大1;当然最重要的是判断连通性,方法有很多种,给出一种:#includeusing namespace std;co

2015-02-28 09:29:01 775

原创 欧拉回路

最简单的欧拉回路,无向图,vis标记搜索过的点,用DFS搜索连通点,如果所有点都连通,则为连通图,满足第一个条件。G【】【】用来记录所有的点与其他点的连接情况,每个点的集合里,点的奇偶就是边的奇偶。来源:HDOJ   1878#include#include#include#include#includeusing namespace std;int vis[1200];

2015-02-26 20:57:07 789

原创 10305 - Ordering Tasks(拓扑排序)

经典的拓扑排序。注意m可以为0。另外紫书上的代码有错误。。。它的toposort()和dfs()里的u和v都是从0开始的,显然不对。。应该是for(int u=1;u#include#include#include#includeusing namespace std;const int maxn = 100+9;int c[maxn],topo[maxn],t,n,m,G[m

2015-02-26 16:41:17 820

原创 POJ-3984迷宫问题

作为BFS初学的练习。#include#include#include#include#include#includeusing namespace std;int s[20][20],d[20][20];int dx[5] = {1,0,-1,0},dy[5] = {0,1,0,-1};struct pairs{ int r,c; pairs(int r=0

2015-02-26 14:43:03 718

原创 816 - Abbott's Revenge(BFS)

第一道BFS题,对BFS有了个初步的了解。初学数据结构,只做紫书上的题还不够,打算等下去别的OJ上自主完成一些简单的BFS题来强化一下。#includeusing namespace std;const char* dirs = "NESW";const char* turns = "FLR";int r0,c0,dir,r1,c1,r2,c2,has_edge[19][19][10]

2015-02-25 20:41:56 681

原创 1103 - Ancient Messages.

一转眼寒假已经块结束了,我也进行到数据结构了,初学图,可能是由于很多人说数据结构多么多么难,导致自己有点畏难,而且毕竟要赶题数,有点急功近利,树那里的有些例题还没有完全搞懂就提交了。  其实现在我才明白,我要做的不是老看着题数,而是感受编程的乐趣,其实我还是很喜欢这个的,这就够了,也是我会继续做下去的唯一动力。和一群志同道合的人做自己最喜欢的事情,还有什么比这个更快乐的吗?   废话不多说

2015-02-25 15:16:45 785

原创 814 - The Letter Carrier's Rounds

#include#include#include#include#includeusing namespace std;void parse_address(const string& s, string &user,string &mta) { int k = s.find('@'); user = s.substr(0,k); mta=s.substr(k+

2015-02-21 22:02:12 963

原创 12412 - A Typical Homework (a.k.a Shi Xiong Bang Bang Mang)

解题思路:我用了一个映射来进行学生学号是否存在的判断。。悲催的是一开始将 p.erase(sid[i])和sid[i].clear()的顺序搞反了。。然后就悲剧了一下午~~还需要注意浮点误差~~#include#include#include#includeusing namespace std;const double eps=1e-5;map p;string sid[6

2015-02-17 21:26:03 679

原创 508 - Morse Mismatches

解题思路: 给定每个字母的编码、一个字典、一段编码。 要求解析编码,给出单词。注意:1.无论字典中有没有完全准确的单词,都是输出字典中第一个正确匹配的词。2.注意您的输入。。题中专门说了,每行输出的前面或后面都可能有空行。。我在这上面栽了一下午。。3.无精确匹配时无论删、增,只要距离给定编码差距最小就好,但是前提是长串包含短串。#include#include#include#include

2015-02-16 15:16:11 670

原创 509 - RAID!

#include#include#include#include#includeusing namespace std;int n,k,m,maxnn=1;char buf[10];string a[20],b[20];map p;void mapp(){ p["0000"]="0"; p["0001"]="1";p["0010"]="2";p["0011"]="3"; p["0100"]="4"

2015-02-15 20:00:22 798

原创 122 - Trees on the level

学到很多,虽然还不能完全领悟,不过以后在做题中再慢慢消化吧~#include#include#include#include#includeusing namespace std;const int maxn = 300;bool failed;char s[maxn];struct Node {    bool have_value;    int

2015-02-12 18:17:46 652

原创 10976 - Fractions Again?!

注意:利用公式求出的x可能不是整数,要判断一下。#include#includeusing namespace std;int a[10000];int b[10000];int main(){    int k;    while(scanf("%d",&k)!=EOF){            int maxn=0;            memset(

2015-02-12 13:49:55 579

原创 11059 - Maximum Product

注意一个数字的情况也算。  uva上有测试数据,可以参考。#include#include#include#includeusing namespace std;int a[50];int main(){    int N,kase=1;    while(scanf("%d",&N)!=EOF){        for(int i=1;i       

2015-02-12 11:59:02 635

原创 725 - Division

暴力。。注意清空数组a#include#includeusing namespace std;int a[20];int main(){    int N,L=0;    while(scanf("%d",&N)!=EOF&&N){        int maxn=0;        if(L) printf("\n"); L=1;        for(i

2015-02-12 09:07:52 568

原创 210 - Concurrency Simulator

用wait_q表示等待队列,prevent_q表示阻止队列,用映射p来给出变量值,用队列q[100]来记录所有语句(语句的执行也符合先进先出)要注意:1.即使时间到了,也会执行完正在执行的程序。2.阻止队列可能为空,这个时候如果向外取元素就会运行出错。3.执行end,lock,unlock时要注意有可能存在特殊情况。#include#include#include#in

2015-02-10 17:32:55 580

原创 12504 - Updating a Dictionary

按题目说的来,也没合并情况,看起来有点瘦长。。大家凑合看吧~~一开始忘了加入空集的情况,后来又加的。。。#include#include#include#includeusing namespace std;int main(){    int T;    scanf("%d",&T);    while(T--){    string buf,s1[1

2015-02-09 18:35:03 544

原创 230 - Borrowers

这道题有一个需要注意的地方:题中所说的放回书时该书前面的书到底是什么。答案是:现在有的那本排在他前面的书。该题uva上有测试数据(瓢虫),可以参考~~#include#include#include#include#include#include#include#include#includeusing namespace std;map p;

2015-02-09 13:32:09 562

原创 1593 - Alignment of Code

这道题最坑的就是每行的最后不能有空格,而且一旦有了空格就是WA。。。受刘汝佳的启发,研究了一下stringstream,感觉很好用,可以将空格忽略掉然后一部分一部分的传给别的字符串。#include#include#include#include#includeusing namespace std;int a[200];string s[1100],s0[11

2015-02-08 21:49:12 686

原创 10391 - Compound Words

我是对每个单词建立了一个映射,搜索一遍,对每个单词进行拆分,对拆分成的两个单词用p.count()看看是否在映射中。如果在,输出这个单词;#include#include#include#include#includeusing namespace std;string s[120000];string s1,s2;map p;int main(){ 

2015-02-08 14:31:15 496

原创 10763 - Foreign Exchange

只用了这么几行就AC了,我也是醉了~~,这个方法纯属突发奇想,也不知道有没有漏洞,反正是过了uva的测试数据了。方法就是将每行的第一个数存进a[],第二个数存进b[]  ,将他们排序后比较,一旦有不一样的就输出NO!#include#include#include#includeusing namespace std;mapq;mapp;int a[50

2015-02-08 09:15:15 532

原创 12100 - Printer Queue

很简单的题。。。只要想到用list,一切轻松搞定,第一次用list,感觉针对某些题,还是很好用的~~~#include#include#include#include#include#includeusing namespace std;listq;int main(){   int T;   scanf("%d",&T);   whil

2015-02-07 14:25:01 497

原创 1592 - Database

初学C++。。。代码不是那么优美,速度也不是那么快~~~擦着uva的限制时间过的,仅供参考~~我是将每个字符串映射成一个整数保存在数组里,然后再将二元整数组映射成一个(A串.B串)的形式,我看网上大神都用的结构体,肯定比我这个方法好~~注意映射的时候,没次扫描完一排二元组之后要清空映射。不然会发生这样的情况:这一排二元组和上一排二元组中的某个重复#include#inc

2015-02-07 09:13:58 572

原创 220 - Othello

写了382行我也是醉了。。。。不过很多部分只是粘贴而已,基本思路就是按照题目说的做需要注意的是:1.两组数据间一个空行2.printf("Black -%3d White -%3d\n",B,W);要这么写;3.在L命令下要这样输出空格  : if(AC)                        printf(" ");

2015-02-04 09:54:58 706

原创 815 - Flooded!

一般WA都是因为思维不够严密。一开始漏掉了m*n==1的情况和水量非常多的情况(四周是无限高的墙)#include#include#includeint  cmp(const void *a,const void *b){    return *(int *)a-*(int *)b;}int a[2000];int main(){    int i,j,m,

2015-02-03 11:39:28 594

原创 1589 - Xiangqi

这题WA了好几次。。第一次写了300行,发现写的太乱,很难查出错误,于是毅然决定重写,按照下棋的思维来模拟结果。所以思路真的很重要,先想好再写也许比直接写更好。下面说说我的思路:需要注意这么几个问题:1.如果红方是用帅来将军,那么红方必输。下面的bisheng这个变量就是解决这个问题的。2.黑方的将可能吃掉红方的棋子。所以我觉得最简单的办法是模拟黑方将的可能移动的情况,然后

2015-02-02 19:42:58 648

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除