随笔分类 -  zoj

zoj 3644 Kitty's Game
摘要:尼玛。。 一个 long long 调了 两天 。。解题:我们 可以沿着某一条从1到n的路线走下去,看能否找到合适的答案。。剪枝就是:1: 走过的不在走 记忆话搜索。。2: 如果某一点不是k的约数或者大于k或者和前面相等,不在往下走。。注意:因为k的约数的范围可能特别大,数组放不下,所以用map哈希。。用vector建立邻接表。。View Code #include<iostream>#include<string.h>#include<stdio.h>#include<algorithm>#include<map>#include& 阅读全文
posted @ 2012-10-04 10:56 一把刷子 阅读(248) 评论(0) 推荐(0) 编辑
zoj 3643 Keep Deleting
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4811首先肯定是KMP。然后刚开始想的是每删一次,做一次kmp,但是那样肯定会超时,所以就想一种可以利用了之前kmp信息的数据结构,看了一下别人的报告,知道了是栈这一种数据结构。然后每一次取出栈的最顶端就可以了。关于kmp,在说几句。我自己的设置的next数组的信息是当,当前位匹配失效是 ,他应该跳到哪一位去继续匹配。这里的当前位匹配失效指的是 s1当前位的下一位和s2的第i位不等。View Code #include<iostream>#include<s 阅读全文
posted @ 2012-09-22 10:49 一把刷子 阅读(245) 评论(0) 推荐(0) 编辑
zoj 2972 Hurdles of 110m
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2972一开始以为是那种类似加血的题目,但是这个题和加血的有个区别就是,是每一段有一个速度值,表示成加血的那样的状态有点复杂。所以,表示成简单一点的dp[i][j]表示到达第i段还剩j的force。所以显然根据题目所说的:有状态转移方程:dp[i][j]=min(dp[i-1][j]+t2,dp[i][j]);if(j>=f1)dp[i][j-f1]=min(dp[i-1][j]+t1,dp[i][j-f1]);int temp=j+f2;if(temp>m)t 阅读全文
posted @ 2012-09-18 23:26 一把刷子 阅读(208) 评论(0) 推荐(0) 编辑
zoj 3633 Alice's present
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3633两种解法:自己的解法是,因为当时考虑到开visit数组10的31方太大了,所以首先将给定的数离散化,然后对于在范围内的每一个数和他所在的数组中的下标连边。询问的时候,遍历查询范围,对于每一个数,如果这个数所连的边中下标有在这个数之前且在查询范围内的那么输出这个数就可以了。**********开始的时候ok搞成了小写,wa到吐血。。。。#include<iostream>#include<string.h>#include<algorit 阅读全文
posted @ 2012-08-27 01:11 一把刷子 阅读(363) 评论(2) 推荐(0) 编辑
ZOJ 3015 Collision Ball Game
摘要:http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=11975#problem/B一道数学题,根据反射定律求a关于斜边的对称点a‘的坐标(x,y)。根据点到直线的距离可以列出方程 h-a=y-kx-h。根据向量垂直可以列出x+ky-ka=0;解得x=2(a-h)/(1/k+k) y=(ka-x)/k其中k为转化后的斜率,要注意斜率是负的。圆周率 pi=acos(-1.0)#include<iostream>#include<stdio.h>#include<string.h>#include&l 阅读全文
posted @ 2012-08-24 01:54 一把刷子 阅读(245) 评论(0) 推荐(0) 编辑
zoj 3022 Watashi and Kimi
摘要:http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=11975#problem/I一道概率题。还是递推题。用dp[pre][i][j]表示当前有i道正确的题,j道不正确的题。用dp[now][i][j]表示下一个状态有i道正确的题,j道不正确的题。如果当前是w同学,那么他有两种选择。改错一道题,或者不做任何改变。要是改错的话,他只能从对的里面选一道。如果要是不动的话那么他将会从错的题里面选择,而且选择的错的题不能是之前改过的。所以状态如下if(i>0) dp[now][i-1][j+1]+=dp[pr... 阅读全文
posted @ 2012-08-24 01:04 一把刷子 阅读(316) 评论(0) 推荐(0) 编辑
zoj 3017 Extreme Gameplay
摘要:http://acm.hust.edu.cn:8080/judge/contest/view.action?cid=11975#problem/D用f【i】【j】表示i号城堡到j号城堡所需要的魔法值。首先要用floyd算出任意两个城市之间到达所需要的最小魔法值。然后用t【i】【j】表示i号城堡从j-1号房间到达j号房间所需要的时间。用dp【k】【i】【j】表示当前魔法值为k到达i号城堡j号房间所需要的最短时间。如果已经知道了dp【k】【i】【j】那么我们就可以推出dp【k】【i】【j+1】,也可以推出dp【temp】【l】【j+1】(其中l是另一个城堡,temp是当期魔法值减去i号城堡到j号城 阅读全文
posted @ 2012-08-23 22:46 一把刷子 阅读(325) 评论(0) 推荐(0) 编辑