李景旺的博客

www.jingwangl.com

11853:Paintball

Paintball 这个题可以看作是图上有很多圆形禁区,如果直接考虑是否可以从左边走到右边似乎有些无从下手,其实可以这样考虑,把整个方形区域看作水面,把禁区看作小岛,如果可以从上边沿着这些小岛走到下边的话,就说明方形区域被禁区整个隔断了,那么就不能从左边走到右边,这样一来DFS即可。(思路来自紫...

2018-08-29 00:32:03

阅读数:37

评论数:0

673:Parentheses Balance

Parentheses Balance 之前脑子可能坏掉了。。。简单的栈的应用,要注意的一个地方是一定要用 fgets ,因为如果是空串的话 scanf 会直接读下一行。 #include<bits/stdc++.h> using namespac...

2018-08-21 16:21:32

阅读数:16

评论数:0

10410:Tree Reconstruction

Tree Reconstruction #include<bits/stdc++.h> using namespace std; const int maxn = 1000 + 5; int n,x,root; int pos[maxn]; vect...

2018-08-20 23:12:59

阅读数:29

评论数:0

806:Spatial Structures

Spatial Structures #include<bits/stdc++.h> using namespace std; const int maxn = 64 + 5; int n,len; int seq[maxn*maxn]; char ...

2018-08-11 23:25:48

阅读数:37

评论数:0

1600:Patrol Robot

Patrol Robot 这个题还是DFS,不过每个状态除了记录位置之外,还要记录剩余穿越次数,这样一来就变成了三维DFS。对于值为1的点如果剩余穿越次数大于0且该状态未遍历过的话也可以访问。像这种四个方向的话用常量数组比较方便,没必要搞个二重循环,容易出bug。 #include&...

2018-08-10 00:56:31

阅读数:18

评论数:0

439:Knight Moves

Knight Moves BFS即可,字符串数组 size 定义成了 2 导致输入一直错误,应该是无法存入'\0' 引起的,待会儿再深究。 #include<bits/stdc++.h> using namespace std; const int...

2018-08-09 23:10:24

阅读数:13

评论数:0

712:S-Trees

S-Trees #include<bits/stdc++.h> using namespace std; const int maxn = 7; int n,m,t,cnt = 0; char s[2]; int a[maxn]; char b[ma...

2018-08-09 22:11:05

阅读数:20

评论数:0

536:Tree Recovery

Tree Recovery #include<bits/stdc++.h> using namespace std; const int maxn = 30; struct node{ char c; struct node* l =...

2018-08-08 23:52:49

阅读数:21

评论数:0

12171:Sculpture

Sculpture 思路:将三维空间网格化,每个长方体占据的所有单元标记为1。求面积的话,DFS所有的单元,依次检查是上下左右前后六个方向上相邻单元是否为1,若否则是表面,面积加+1。求体积的话,从外面某个单元开始DFS,求出外面值为0的单元的个数,那么总单元个数 - 外部值为0的单元个数 = ...

2018-08-07 23:54:36

阅读数:22

评论数:0

10562:Undraw the Trees

Undraw the Trees 这题没啥说的,利用DFS进行先序遍历即可,注意 node 可以不是字母,然后 puts() 默认换行的,太久没用都忘了。。 #include<bits/stdc++.h> using namespace std; ...

2018-08-06 23:37:25

阅读数:15

评论数:0

10305:Ordering Tasks

Ordering Tasks 这题比较简单,就是拓扑排序,而且肯定是有向无环图,直接DFS即可。 注意数据读取,只要 n 和 m 有一个不为0即可。。。 不考虑是否存在环: #include<bits/stdc++.h> using names...

2018-08-05 00:29:29

阅读数:18

评论数:0

1103:Ancient Messages

Ancient Messages数一数就能发现,题目表中的6个符号从左到右依次有1,3,5,4,0,2个洞,各不相同。这样,只需要数一数输入的符号有几个“白洞”,就能准确地知道它是哪个符号了。至于具体实现,我的思路是:先确定一个符号,找到该符号的空洞个数然后将该符号“擦除”,继续确定下一个符号。具...

2018-06-02 23:52:41

阅读数:48

评论数:0

572:Oil Deposits

Oil Deposits#include<bits/stdc++.h> using namespace std; const int maxn = 100 + 5; int m,n,cnt; char graph[maxn][maxn]; void df...

2018-06-01 12:58:50

阅读数:28

评论数:0

297:Quadtrees

Quadtrees建树递归,合并也递归。在合并的时候要注意只有两个没有子节点的节点之间才可以合并,可能会遇到三种情况:1. 两个都是最小单元(相对本身),直接合并;2. 其中一个有子节点,依次其将其子节点与另一个节点合并;3. 两个都有子节点,依次将其子节点按顺序进行合并(两者此时子节点面积必定相...

2018-05-31 23:22:02

阅读数:37

评论数:0

669:The Falling Leaves

The Falling Leaves这道题还是递归,仿照上道题的思路挺容易的,不过看了看书上的代码个人觉得我的代码更简洁,思路更清晰些哈哈。我的思路:开个负下标数组,记录每个位置的权重之和,用 p 记录当前节点位置,那么其左节点位置为 p - 1,右节点位置为 p + 1,依次递归增加相应位置的权...

2018-05-31 13:25:43

阅读数:18

评论数:0

839:Not so Mobile

Not so Mobile 我的思路:可以将天平看做一棵二叉树,二叉树的每个节点要记录其父节点。然后其实就是一个建树的过程,遇到 0 节点就向下延伸,每当一个节点的左右子树确定(其重量也随之确定),就计算其是否平衡,然后一直向上追溯,直到该节点尚未平衡,继续建树,直至整棵树建好,是否平衡也随之确定...

2018-05-31 00:29:22

阅读数:20

评论数:0

548:Tree

Tree首先根据中序遍历和后序遍历递归地构造二叉树(后续遍历的最后一个节点为二叉树的根节点),然后前序遍历。输入有点坑,你说你直接告诉多少个节点多好。。。我想的是先用fets读取整个串,然后用atoi转化为数字,本地运行没问题可是一提交就报错,暂时还没找到原因,大概是因为回车符的问题,参考了别人的...

2018-05-29 23:22:48

阅读数:24

评论数:0

122:Trees on the level

Trees on the level哈哈 这次是一次AC,好开心啊version 1(指针链表版):#include<bits/stdc++.h> using namespace std; const int maxn = 256 + 5; struct...

2018-05-28 23:40:48

阅读数:20

评论数:0

679:Dropping Balls

Dropping Balls直接模拟似乎很简单,但是会超时。。。每个小球都会落在根结点上,因此前两个小球必然是一个在左子树,一个在右子树。一般地,只需看小球编号的奇偶性,就能知道它是最终在哪棵子树中。对于那些落入根结点左子树的小球来说,只需知道该小球是第几个落在根的左子树里的,就可以知道它下一步往...

2018-05-28 18:34:13

阅读数:18

评论数:0

12657:Boxes in a Line

Boxes in a Line考虑到反转单向链表时间开销太大,所以先用的是双向链表,这样只需要记录反转操作的次数即可,若最后次数为偶数,则从左往右加;若为奇数,则从右往左加。没想到还是超时了。。。version 1(超时):#include<bits/stdc++.h&...

2018-05-23 17:34:44

阅读数:13

评论数:0

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