![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UVa
文章平均质量分 69
Echo_咪
to feel rather than think.
展开
-
10720 - Graph Construction
题意: 给你一个度数序列,让你判定该序列能否表示一个图 思路: Havel_Hakimi定理 参考: http://blog.csdn.net/shuangde800/article/details/7857246 代码: #include using namespace std; int n; int arr[10000]; int cmp(c原创 2016-08-21 15:08:03 · 477 阅读 · 0 评论 -
10131越大越聪明
(原题详见UVa10131) 本文主要包含以下内容: 1.数学模型的建立 2.递推伪代码 3.具体实现代码 4.总结 关键字:动态规划 DAG 1.数学模型的建立 本题用基于DAG的动态规划的思想很好解决。而且属于起点终点不固定的DAG.(具体可以参考《算法竞赛入门》中动态规划一章,矩形嵌套问题) 把每只大象视作一个个点,点i,j连通的条件是w[i]s[原创 2016-08-11 19:53:21 · 642 阅读 · 1 评论 -
116单向TSP
(原题详见UVa116) 本文主要包含以下内容: 1.数学模型的建立 2.递推伪代码的推导 3.代码实现 4.总结 关键字:动态规划 1.数学模型的建立 这是一道典型的动态规划题目。 定义d[i][j]表示在矩阵i,j处是最小和。那么d[i][j]可能由三种状态转移而来d[i-1][j-1] d[i][j-1] d[i+1][j-1] 状态转移方程原创 2016-08-11 20:20:27 · 326 阅读 · 0 评论 -
10003木棍切割问题
原题详见UVa10003 本文主要包含一下内容: 1.数学模型的建立 2.递推伪代码的推导 3.程序实现 4.总结 关键字: 动态规划 集合 1.数学模型的建立 很多人解不出这道题从根本上是没有读懂题意。我们现在来从头分析一下。 已知:木棍的长度给定为L,切割点数给定为n,而且每个切割点的位置也是固定的。每次切割的花费等于被切割的木棍的长度。 要求:最少原创 2016-08-11 20:51:34 · 3378 阅读 · 1 评论 -
10361 - Automatic Poetry
本文包含以下内容: 一.思路 二.程序 三.总结 一.思路 本题考查的关键是对字符串的读取和输出的问题。 要注意以下几点: 1.如果是用scanf读取一个数字n,其后要用一个getchar读取残存在缓冲区的换行符。 如果是用cin读取则不必。因为cin会丢弃使其输入停止的\n,而scanf不会 2.接下来是如何读取s1 s2 s3 s4 s5的问题原创 2016-08-13 06:45:26 · 393 阅读 · 0 评论 -
10010where is waldorf
本文包含以下内容: 一.思路 二.代码 三.总结 一.思路 字符串搜索问题。因为原题中说了 “A word matches a straight, uninterrupted line of letters in the grid.” (一个单词匹配网格中的一条直的、不间断的线) 因为有这句话,使搜索策略变得非常简单: 从上至下,从左至右历遍grid,如果发现一个字符与w原创 2016-08-13 09:50:00 · 215 阅读 · 0 评论 -
537 - Artificial Intelligence?
一.思路 二.代码 三.总结 一.思路 本题关键是字符串读入提取的问题, 一开始我觉得用getchar一个一个读然后判断的话,如果读到等号等号前面的字符没有办法得到了 用gets一次性读入一行字符的话还是要一个一个判断 于是想着用scanf,每次读入一个单词判断一下这个单词里有没有等号 但是实际上用scanf读反而会是程度读起来更复杂。因为用scanf读入后还是要一原创 2016-08-13 15:24:14 · 315 阅读 · 0 评论 -
409 - Excuses, Excuses!
本文包含以下内容: 一、思路 二、代码实现 三、总结 一、思路 本题主要考察字符串的输入输出、匹配 对于K,E,scanf读取,getchar接收\n keywords和excuses都需要被存起来,因为keywords要用于查找匹配,excuse最后输出 中要用到,可以考虑char型的二维数组进行存储 一个keyword一行,中间无空格无特殊符号,因此可以用scanf或者原创 2016-08-13 20:24:44 · 268 阅读 · 0 评论 -
112 - Tree Summing
Background LISP was one of the earliest high-level programming languages and, with FORTRAN, is one of the oldest languages currently being used. Lists, which are the fundamental data structures in LI原创 2016-08-16 09:27:45 · 297 阅读 · 0 评论 -
10562 - Undraw the Trees
参考博客: http://blog.csdn.net/goomaple/article/details/7818170 自己的代码实现: #include using namespace std; char Tree[210][210]; void DFS(int r, int c) { cout << Tree[r][c]; //输出前导左括号 cout << "(原创 2016-08-17 08:00:58 · 189 阅读 · 0 评论 -
572 - Oil Deposits
一道基础的图的历遍的题。 思路是由一个v[][]标记当前位置是否被visit过,g[][]存储当前是否为pocket 每次DFS历遍一块deposit 主程序扫描g[][],没发现一块没有被visit过的pocket,就调用DFS以它为起点历遍它 代码如下: #include using namespace std; char g[110][110]; int vis[原创 2016-08-17 11:01:53 · 201 阅读 · 0 评论 -
784 - Maze Exploration
思路:从*所在的位置出发,dfs历遍所有与它联通的点并将其变为# dfs实现关键思路在于两点: 1.哪些点是与当前点联通的 2.dfs返回条件 代码如下: #include using namespace std; char maze[35][90]; int visit[35][90]; int r;//the row of maze void DFS(int ro原创 2016-08-17 13:29:36 · 210 阅读 · 0 评论 -
657 - The die is cast
这题就是递归套用递归 先递归搜索骰子,如果在骰子里面发现了点,在对该点递归,同时更新点数。 代码如下: #include #include using namespace std; char pic[60][200]; int visit[60][200]; int cnt[100]; int col, row; //对骰子上的点递归 void dfs_dot(int x, i原创 2016-08-17 14:38:56 · 186 阅读 · 0 评论 -
133 - The Dole Queued
原题大意: 编号1-N的N个人由1开始逆时针站成一个环。 从第一个人开始逆时针数K个人;再从第N个人开始顺时针数M个人,第K、M出队。 如果KM是同一个人,只出队一次。 从K逆时针下一个人、N顺时针下一个人开始,重复上述步骤。 直到队列为空。 思路: 关键字:数据结构 两种实现方式:双向链表 环形数组原创 2016-08-18 07:00:04 · 208 阅读 · 0 评论 -
101 - The Blocks Problem
题目大意: 给你n个数字0~n-1 初始,数字i在位置i上 有如下四种操作: move a onto b:把a、b上面的所有数字移动回原来的位置,再把a移动到b上 move a over b: 把a上的数字移动回数字原来的位置,再把a移动到含有b的堆的上方 pile a onto b: 把b上的数字移动回原来的位置,把含有a的堆移动到b上(a原本上面的数字顺序不变) p原创 2016-08-19 06:39:38 · 206 阅读 · 0 评论 -
10066双塔
双塔问题实际上就是在两个字符串中寻找最大公共子字符串。 借由双塔问题来具体理解分析一下最大公共子字符串问题。 本文包含以下内容 1.数学模型的建立 2.递推伪代码 3.具体程序 1.数学模型的建立 我们可以想象有两根指针i、j,分别指向数组a,数组b的起始位置。 如果当前两根指针指向的字符是相同的,我们可以把两根指针同时向后移动一位,同时公共子字符串的数目增加1.原创 2016-08-11 19:19:04 · 312 阅读 · 0 评论