搜索
Tz_rain
需要做的事情
解题 总结 巩固
解题三个步骤
量化 分析 实现
需要改变的三个问题
性格 心态 思考方式
不要再后悔
展开
-
SRM 549 OrderOfTheHats
题意孩子们有N(1<=N<=20)个音标要去学,按照一般的教学法则,每次学一个音标的时候,要先把比这个音标更基础的音标学会。但由于这个教学法则会出现循环需要的情况导致孩子们无法学完,请你帮助他们用最少的次数改变这个教学法则。给定一个vectorspellchart,spellchart[i][j]表示如果为’Y’则音标i必须在j前学习完,否则为’N’。你可以将’Y’改成’N’或者’N’改成’Y’,但原创 2017-01-22 10:39:26 · 314 阅读 · 0 评论 -
SRM 548 KingdomAndPassword
题意:有一个老密码,新密码是老密码的一种排列(可能不变),新密码每位有一个限制数字,即该位不能使用该数字问:新密码是多少(以abs(old-new)为第一关键字,new为第二关键字升序排列后输出第一个排列)若无解输出-1 int A[M],B[M],n,C[M];bool ok; bool mark[2][1<<20]; ll ans1=-1,ans2=-1; void f原创 2017-01-21 22:32:33 · 335 阅读 · 0 评论 -
SRM 611 DIV2 1000 ElephantDrinkingEasy
有一个N*N的田地,其中有一些田地中有积水。现在在田地周围有一些大象,它们可以向前伸长鼻子来喝到田地中的积水。大象的鼻子足够长,但是不能交叉,且一块田地中只能有一头大象在喝水。如下图,a是合法的,b,c均不合法。现在问最多能有多少头大象喝到水。N<=5因为N很小可以4*N的枚举每一个边缘的格子复杂度为4*N*2^(4*N)然而可以只枚举上下的两排而计算出另外的两排复杂度为4*N*2^(2*N)cla原创 2017-01-31 11:29:21 · 290 阅读 · 0 评论 -
SRM 688 ParenthesesDiv2Hard
给出一段仅由左右括号组成的字符串,和若干个区间(L,R) (各个区间不重叠),问要使每个区间内的序列都合法,最少需要进行多少次交换(每次交换可以互换任意两个位置上的字符)。思路<1>对于每一个的区间一定要满足的是: (( 个数始终大于))于是每次cnt[1]>cnt[0]时就使cnt[1]–,cnt[0]++,res++ 表示把表示把)变成变成(的个数的个数 res为A; <2>最终造成 ((原创 2017-02-02 15:18:39 · 193 阅读 · 0 评论 -
SRM549 Div1 600
/* 对于每一个帽子有3个状态(1 没有开 2 开了有硬币 3 开了没有硬币) 由于题目有限制条件,如果我们每次转移的时候都判断一下太麻烦了 又因为帽子的摆放和硬币的是唯一的所以可以再最后判断 */#include<bits/stdc++.h> using namespace std;const int M=15,INF=1555,N=1694323;int dp[原创 2017-04-13 20:00:36 · 258 阅读 · 0 评论 -
记忆宫殿
思路我们此时需要判断出那些点的地位是等价的。即如果AA发生BB一定发生。通过寻找规律可以发现 对于这样的A,BA,B两点是等价的。#include<bits/stdc++.h>using namespace std;const int M=1e3+5;bool to[M][M],son[M],same[M][M],vis[M];vector<int>G[M];int n,m,k,x,原创 2017-07-12 21:12:12 · 465 阅读 · 0 评论 -
马里奥派对
思路由于障碍物都在一个很小的区间内我们可以分开处理。 由于路径是可逆的,我们可以算每个点到原点的距离先处理区间的边框后再处理边框外的点(可以用公式计算的复杂度)/* 先用BFS计算出原地到边框的最距离 之后把图像分成了上下左右和四个角 上下左右的点直接走到边上即可 四个角点区域,先到达顶点,再走向原点即可。 因为四个边框外没有障碍物故到任何点都是一样的原创 2017-07-04 21:52:24 · 298 阅读 · 0 评论 -
专题:关于搜索优化——A*和双向广搜
..原创 2017-07-07 15:44:16 · 1459 阅读 · 0 评论