06 2013 档案

摘要:题意: 安排计划,有4种约束方式,给出你这些时间的n个约束.. 如果计划是可行的,求出每一件事发生的最早时间..否则输出“impossible”.. ①. FAF a b a要在b完成后完成.. ②. FAS a b a要在b开始前完成.. ③. SAS a b a要在b开始前开始.. ④. SAF a b a要在b结束前开始..思路: 简述 差分约束系统.. 差分约束系统就是给出一个不等式组..每个不等式形如 xj-xi <= bk bk是一些已知的常量.. 求出所有未知量xi.. ***---要注意是小于等于---*** 其实差分约束系统就像是最短路中的松弛条... 阅读全文
posted @ 2013-06-06 21:31 Griselda. 阅读(582) 评论(0) 推荐(0) 编辑
摘要:题意: 给出一个n*m的矩阵, 0 表示不可走 1 表示可走 2 表示起点 3 表示终点 4 表示可走且走到这一步可以满血 某人一开始有6滴血,走一步少一滴..到0就死了.. 可以走到4的位置满血再走.. 求出最少走几步可以从起点到终点.. 思路: 广搜,用一个cnt表示现在走了几步,一个cur表示现在的血量.. 普通的广搜过程中如果已经走过就不可以再走了..但是第三个样例可以看出走过还可以再走.. 因为普通广搜走过不能再走只是代表这个状态已经访问过了..不需要再次访问,防止死循环.. 但是现在再次访问的时候因为血量已经不一样了.所以可以再走.. 剩下就是正常... 阅读全文
posted @ 2013-06-06 21:05 Griselda. 阅读(178) 评论(0) 推荐(0) 编辑
摘要:题意: 给出多个串,如果没有一个串是别的串的前缀,则这些串是符合要求的,输出“Set * is immediately decodable”; 否则输出 "Set * is not immediately decodable"; 输入中多个串以9表示输入结束思路: 裸的字典树,先根据多个串建树,然后遍历每一个串看是否在字典树中.. Tips: 要注意找的时候应该判断是否为叶子结点,而不是仅仅判断是否在字典树中,因为建树的时候肯定存在该串.. Code: 1 #include <stdio.h> 2 #include <cstring> 3 #incl 阅读全文
posted @ 2013-06-06 20:38 Griselda. 阅读(221) 评论(0) 推荐(0) 编辑
摘要:题意: 给出一串已加密的报文,报文的原内容是由这串密码和某一个大写字母异或而来的。 已知这串报文仅由大写字母组成,请输出原报文思路: 水题,枚举A~Z 如果加密报文的每一个大写字母和当前枚举的字母异或后在合法范围内,即都是大写字母,则该字母就是keyword..Tips: ---***这里是重点***-- ①. 规律,a^b = c --> a^c = b & b^c = a ②. 两个整型异或的结果不是整型,需要强制转换..Code: 1 #include <stdio.h> 2 #include <cstring> 3 4 int main() 5 { 阅读全文
posted @ 2013-06-06 20:29 Griselda. 阅读(322) 评论(0) 推荐(0) 编辑
摘要:题意: dos命令的cd操作有两个可执行方法 cd .. 回到上一级目录 cd 当前目录名/b/c/d 当前目录名到某一个子目录下 给出你目录的关系,然后给出a b问最少经过几步可以从a走到b..思路: 求出a和b的最近公共祖先,然后分4种情况讨论 ①. a和b有一个公共祖先c,则用 c时间戳-a的时间戳+1(1步可以直接从c到b) ②. a是b的祖先,则只用1步就可以到达b点 ③. b是a的祖先,则用a的时间戳-b的时间戳 ④. a和b是同一个点,则答案是0Tips: 求绝对值的函数还是得自己写.. 用algorithm的就wa了.. 因为algorithm... 阅读全文
posted @ 2013-06-05 17:03 Griselda. 阅读(874) 评论(0) 推荐(0) 编辑
摘要:题意: 有3个操作 D a 毁坏某一个点a R 修复上一次破坏的点 Q a 问a点附近连续的点有几个思路: 区间合并类的线段树 结构体表示 { l:节点的左界限 r:节点的右界限 ll:左起连续的点数 rr:右起连续的点数 mm:整个范围内连续最长的点数 }Tips: 主要是更新那一块要考虑父节点可能是由左右节点边界合并的 询问那一块要考虑是否可以和兄弟节点合并Code: 1 #include <stdio.h> 2 #include <cst... 阅读全文
posted @ 2013-06-05 16:32 Griselda. 阅读(164) 评论(0) 推荐(0) 编辑
摘要:题意: 知道一个人买票花的时间和和前面那个人一起买票花的时间,问最少花多少时间可以把票卖完.. 输入: 给出T,表示有T组样例 给出n,表示有n个人买票.. 给出n个数表示这个人单独买票会花的时间.. 给出n-1个数,表示这个人和前面那个人一起买票会花的时间.. 思路: 状态转移方程是:dp[i] = min(dp[i-1]+单独买花的时间, dp[i-2]+和前面那个人一起买花的时间) 初始状态是dp[1] = 第一个人单独买话的时间 Tips: nothing..??!Code: 1 #include <stdio.h> 2 #include ... 阅读全文
posted @ 2013-06-05 14:39 Griselda. 阅读(1184) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示