- 博客(19)
- 收藏
- 关注
原创 学霸的迷宫
思路:广搜,记录路径,反向输出#include #include #include #include using namespace std;int mp[505][505];char path[505][505];int vis[505][505];struct node{ int step,x,y;}; int n,m,ans;queue s;
2017-02-28 16:18:42 470
原创 2n皇后问题
思路:在白皇后处理好了之后,再处理黑皇后。。满满的搜索#include #include #include #include using namespace std;int mp[105][105];int black[105];int white[105];int vis[105][105];int ans;int n;bool judge(int x,
2017-02-27 21:00:48 277
原创 1093. Count PAT's (25)
思路:从后向前,记录T的个数,当遇到A字母时候,可以组成t个 "at"记录为pid ,当遇到P字母时候,可以利用之前pid个"at"组成pid个"pat#include #include #include #include #include #include using namespace std;typedef long long ll;const int mo
2017-02-25 16:37:50 201
原创 1119. Pre- and Post-order Traversals (30)
思路: 对于前序来说 根--左-- 右。 后序 左--右--根。 所以可以用后序分割前序,从而确立树。至于一直说只有拥有了中序才可以唯一确定树是因为 中序可以判断左右子树的关系。但是如果没有的话,如果只有左子树或者只有右子树是无法判断。因此用这个方法来确定是否唯一自己写的时候递归写乱了,参考的http://blog.csdn.net/liuchuo/article/details/52
2017-02-25 12:44:04 224
原创 D. Cloud of Hashtags
题意:保证是一组非递减的字符串。只可以删除连续的后缀思路:从后往前减少字符。暴力就好了。挺水的。做完C去看动漫了#include #include #include #include #include const int maxn=1e6+5;using namespace std;string str[maxn];int n ;int a[maxn
2017-02-24 21:57:12 301
原创 C - Alyona and Spreadsheet
题意:给出一个矩阵,询问是否有一列从l->r行的顺序是非递减的。思路:处理没一列,对于当前数字可以扩展到该列的哪一位,直到不满足非递减的条件,之后用一个矩阵存起来。注意:之后还需要处理当前行最大的扩展行。没写这步,竟然TLE100真是.#include #include #include #include #include #include #inclu
2017-02-24 21:21:41 386
原创 蓝桥历届试题-地宫取宝DP
自己做的时候从二维->三维->四维,才把变量所需要的值全部搞定,还要注意一下宝物值有0,所以初始应为-1;思路:对于每一个位置来说,只能对他的下面和右面产生影响, 因此可以将每种变量关系逐步更新到下面和右面,具体看代码 #include #include #include #include #include #include #include using namespac
2017-02-24 13:51:52 319
原创 国王的烦恼
即便之前知道这题是并查集,而且自己还觉得并查集学的不错,还是没做出来。还以为是带权的,搞了半天。确实很有趣思路:对于此题,只需要从天数大到小判断,并连接图中节点,判断是否在某条边时,连接了两个不同的连通分支,并且在一天最多答案+1。第一次做到排序+并查集。一直以为并查集对于顺序毫无关系#include #include #include #include #incl
2017-02-23 20:30:03 436
原创 1268 和为K的组合
#include #include #include #include #include #include #include using namespace std;const int maxn=1000000+5;typedef long long ll;int vis[maxn];int a[maxn];int n,k;int flag=0;int dfs(int
2017-02-13 21:15:29 294
原创 1267 4个数和为0
之前做过两个数 三个数和为K的情况,两个数字可以用指针的方法,而三个数字就需要用二分了。此题也是一样。将4个数字和位K的情况,归为两个数字和K的情况,做法为: 将数字两两相加存入数组,并且记录下是由第几个数字和第几个数字相加而来。这样就标称了两个数字的的情况。其他博客里写了种指针的情况,其实就是按照两个数字和为K的情况下指针的做法。自然会比二分快一些#include #i
2017-02-13 18:10:29 423
原创 1163 . 最高的奖励
第一次知道并查集可以这么用思路:对于5W个数据 可以类似线段树一样,将其点作为解决途径,虽然数据范围大,但是数据量并不大。在并查集时只需要将 任务在某一时刻被解决作为入手途径。对于第一次到达的点 Fx==x-1 逐步更新到0即可#include #include #include #include #include #include #include using
2017-02-12 17:04:51 313
原创 1163 最高的奖励 优先队列
思路:按时间顺序排序,因为是递增+1的,所以在优先队列中就是元素个数,对于时间超过个数的可以直接做完,否则从队列中选取一个价值最小的将之替换#include #include #include #include #include #include #include using namespace std;const int maxn=50000+5;typedef
2017-02-12 14:26:06 200
原创 1127 最短的包含字符串
思路:初始第一遍确定顺序,之后从前向后一次缩减范围。#include #include #include #include using namespace std;typedef long long ll;typedef double db;const int maxn = 100005;char a[maxn];int table[105];int main
2017-02-06 20:55:39 283
原创 51nod-1098 最小方差
思路:把方差展开,前缀记录。因为方差在数字接近时取最小。排序即可注意:交了好多次才过,初始的数字一定要大1e9都小,注意double 的精确度。#include #include #include #include using namespace std;typedef long long ll;typedef double db;const int maxn =
2017-02-06 18:57:58 316
原创 758C - Unfair Poll
题意:老师按顺序点名,询问提问次数最多,最少的和x,y位置的学生被提问的次数思路:每次以m(2n-2)为一轮,开始二分枚举。之后剩下的暴力枚举#include #include #include #include using namespace std;typedef unsigned long long ll;ll mp[105][105];int main
2017-02-06 04:18:36 248
原创 762C - Two strings
题意:给出a.b两个字符串,要求删除b中某段连续的子串使得得到的b串是a中的子串。询问满足条件的最长的a的子串思路:在网上看了好半天各位的博客,才知道二分竟然能这么用。真是厉害了!将b的删除问题转化:b的前缀 + 删除部分长度+ b的后缀部分预处理:b的前缀串在a中需要的长度b的后缀串在a中需要的长度二分:删除部分的长度(因为二分只能处理线性有序问题),此题无论
2017-02-06 03:49:58 227
原创 Timofey and a tree
题意:给出一棵树,N-1条边 每个边的颜色C[i]。询问是否有一个节点作为根,他所有子树的颜色都相同。比赛结束好久了,才补题。心酸。思路:当时没写出来。也是想的是并查集分类,但是搞了90分钟没出。记录下各位博客学的两种比较好的方法方法一:对于两端颜色相同的边不予以判定,而对于颜色不同的边,必定是一个端点作为根进行整合。那么只需要记录下有多少个颜色不同的特殊边,并且对于每种特
2017-02-04 23:34:06 275
原创 B - Timofey and cubes
题意:对于给定n的序列。开始交换,每次交换从两端交换思路:对于位置在奇数位的会交换,而偶数位的不会 #include #include #include #include using namespace std;const int inf=0x3f3f3f3f;int a[1000005];int main(){ int n; cin>>n;
2017-02-03 12:08:13 264
原创 A - Taymyr is calling you
题意:给出a,b,问区间1~L上有多少个ab的公倍数 #include #include #include #include using namespace std;const int inf=0x3f3f3f3f;int a[10005];int main(){ int n,m,z; cin>>n>>m>>z; for(int i=n;i<=z;i
2017-02-03 12:07:01 344
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人