- 博客(16)
- 收藏
- 关注
原创 UVA 1262 Password + DFS
题意:给两个6行5列的字母矩阵,找到密码:密码中的每个字母都在两个矩阵中的对应列出现。在这样的密码中找到字典序第k大的密码。我的思路:先找出两个矩阵相同列中相同的元素,并将它们排序,在验证一定有解后递归打印字典序第k大的密码就行了。具体实现见代码:#include<bits/stdc++.h>using namespace std;int T,k;char grap1[6]...
2019-01-29 13:45:50 179
原创 UVA 10791 Minimum Sum LCM +构造
这道题看似简单,其实很坑,如果没注意到n==1时的特殊情况以及n=INT_MAX时的溢出问题的话,就会想我一样WA个不停。。。分析:注意到当a*b=c时,当a=b时a+b最小,所以对于n,我们可以从sqrt(n)开始逆序枚举到1,便可以得到答案。PS:这次所有函数都没好好想名字 QAQ具体实现见代码:#include&lt;bits/stdc++.h&gt;#define LL long...
2019-01-28 00:30:01 143
原创 UVA 10375 Choose and Divide +计算组合数
今天做了几个数论的题,感觉比DP容易一点,但同样也有点坑。题意:计算C(a,b)/C(n,m)&lt;=INT_MAX;分析:令c=a-b,k=m-n; 列式得ans=(a!m!k!)/(n!b!c!)。用上面一行与下面一行相消后就可以直接计算了。具体实现见代码:#include&lt;bits/stdc++.h&gt;#define LL long longusing namespa...
2019-01-28 00:09:07 147
原创 UVa 1218 Perfect Service + DP
题目链接自己写的状态转移方程总是少了点什么,所以折腾了一个多小时也写不出。。。。。所以还是按紫书上思路写的。dp(u,0):u是服务器,u的子节点可以是服务器也可以不是。有:dp(u,0)=sum{min(dp(v,0),dp(v,1))}+1;dp(u,1):u不是服务器,但u的父节点是服务器,所以u的子节点都不是服务器,有: dp(u,1)=sum{dp(v,2)};dp(u,2)...
2019-01-25 23:50:10 105
原创 UVA1220 Hail-Bula的晚会 DP
PS:很久没写博客了,更几篇。按紫书上思路写的,按自己思路写错好几次啊啊啊。dp(u,0)代表选u,dp(u,1) 代表不选u,函数返回值pair的first代表能选到的最多的人,second 代表解是否唯一,当second为1时唯一,second为0时不唯一。感觉我这份代码重复计算有点多,可以用数组来保存状态以减少重复计算。具体实现及思路见代码注释。#include&lt;bits/s...
2019-01-25 20:36:56 181
原创 UVA-1025 A Spy in the Metro + dp
这题是按紫书上思路做的,算是我做的的第一个dp类的题了,看题看得很迷糊,还好书上有具体的翻译。感觉dp有点让人难受啊。#include&amp;amp;amp;lt;bits/stdc++.h&amp;amp;amp;gt;using namespace std;const int INF=1e5;int n,T;int t[250];bool has_train[250][250][2];int dp[250][250];in...
2018-12-18 21:44:39 180
原创 HDU-1973 Prime path 素数表+BFS
题目链接题意就是给一个四位素数,让找一个最短路径让它变成目标素数。要注意路径中的所有数都必须是四位素数,且一次只能改动一位数字。考虑到一个素数最多只有四种后继状态,所以可以先将1000到10000之间的素数选出来,然后BFS一遍就行了。具体实现见代码及注释。#include&lt;cstring&gt;#include&lt;queue&gt;#include&lt;cstdio&gt..
2018-12-12 10:22:04 218
原创 HDU-1495 非常可乐+BFS
要注意题目的意思,由样例 4 1 3 答案是3 ,可以推测,题目是要求将可乐分为两等份放在两个容器中。由于当S为奇数时一定无解,所以只有当S为偶数时进行处理。可以使用二维数组进行判重,因为可乐总数是确定的,知道两个容器中的可乐量就能知道第三个容器中的可乐量。实现在三个容器中倒可乐的方式有点复杂,还好不久之前看紫书时刚好记下来一个方法。要注意理解。AC代码如下:#include&amp;amp;lt;cst...
2018-12-09 16:59:09 154
原创 HDU-2612 Find a way +BFS
本来想用双向BFS过的,但发现我写的双向BFS只能求出时长最小的状态,而不是M与Y花费的总时间,所以就导致样例过了而得到WA,自己还以为没错的奇怪状态。另外要注意的是在此题中,家和KFC是可以通行的。所以思路就是分别以M和Y为起点,一共BFS两次,然后统计两人到能到达的KFC的总时间,取最小值就行了,其实还可以优化。AC代码+附赠的两个样例:#include&amp;amp;lt;cstdio&amp;amp;gt;#...
2018-12-09 16:34:12 129
原创 UVA-11212 Editing a Book IDA*算法
IDA*算法,也算是最近学习的一道坎了,概念容易懂,但应用起来就让我有点头大了。写的不怎么好。这道题的粘贴与复制部分没想清楚,看了一下其他人的博客才知道自己错在哪里的。用紫书上的策略三剪枝的话,时间效率变高了一半,但还是很慢,应该是循环用多了的原因,还可以优化。#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;using namespace std;int n,maxn,a[10]...
2018-12-06 23:31:35 121
原创 UVA-1592 Datebase 数据库+字符串处理
字符串处理相关的题,直接暴力判重会TL,要进行一些优化。将每个不同的字符串用map编号,然后每次取两列进行扫描。后续处理中字符串的对比都由map赋予的编号进行。感觉写个hash会快很多。#include&lt;cstdio&gt;#include&lt;algorithm&gt;#include&lt;iostream&gt;#include&lt;string&
2018-11-29 18:59:27 121
原创 UVA-1600 Patrol Robot + BFS
这个题还是用BFS就行,刚开始时用两个二维数据判断机器人连续跨过的障碍数以及机器人访问过的格子就WA了,要注意到用三维数组标记机器人连续跨过的障碍数,就不会有问题。AC代码如下:#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;struct Node{ int x,y,k,d; Node(int x,int y,int k,i...
2018-11-29 13:49:04 191
原创 UVA-208 Firetruck +DFS BFS
这个题,就是用回溯解,但是要先优化一下,用bfs从终点历遍到点1,并把这个路径上的边标记,在后面的dfs中只选择被标记过的边走,并且当点1的路径中没有一条被标记时,就不用dfs了。这样优化一下就不会TL了。还有一点就是一定要看清题目格式要求,不然就会很难受了。蠢到爆炸的我输出语句的一个点没写上去,还吃了两发WA,难受。代码如下:#include&amp;amp;lt;bits/stdc++.h&amp;amp;gt;us...
2018-11-27 09:31:57 166
原创 UVA-806 Spatial Structures + 递归
UVA-806 Spatial Structures 空间结构题目链接题目要求将给定的点阵图转为路径,将给定的路径转化为点阵,所以分两步解题。分别进行递归就能求解。具体细节见代码注释。另外需要特别注意输出格式,三次presontation error的教训。而且以后要注意边界数据的测试。AC代码如下:#include&lt;bits/stdc++.h&gt;using namespac...
2018-11-12 16:16:10 232
原创 UVA—11134 Fabled Rooks + 贪心
UVA-11134 Fabled Rooks 传说中的车刚开始时想直接用回溯法过,试了两种回溯方法都超时了。后来用贪心法写了一遍,老是wrong answer,卡了差不多两小时发现自己输出中的IMPOSSIBLE写成IMPOSSBILE了,改了之后就AC了。难受。总的来说还是要注意细节。对于题目来说注意到行列无关所以可以分别对行和列进行处理,先将各个区间其按区间左端点的大小排序,然后历遍各...
2018-11-12 14:38:05 227
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人