ZOJ
文章平均质量分 79
亚N程
这个作者很懒,什么都没留下…
展开
-
ZOJ:3716 Ribbon Gymnastics
比赛的时候曾经一度想到了这种做法。直接用数学关系推导,但是当时觉得可能不对,所以干脆没有写。。。 没想到了。。。 转载一篇代码: #include #include #include using namespace std; struct Point{ double x; double y; }p[5]; double dist(Point原创 2013-08-19 18:14:54 · 820 阅读 · 0 评论 -
ZOJ:1203 Swordfish
题意:给你n个城市的坐标,要求你输出连通所有城市的最短线路长度。 思路:最小生成树。注意每两个样例之间有换行。 #include #include #include #include #include #define MAXN 105 using namespace std; struct Edge { int a,b; double weight; };原创 2013-10-05 21:01:48 · 868 阅读 · 0 评论 -
ZOJ:2604 Little Brackets
watashi的题解: 用dp[n][k]表示长度为2n深度不超过k的括号序列个数,那么答案就是dp[n][k]-dp[n][k-1]。 边界条件:dp[0][j] = 1 递推公式:dp[i][j] = sum{dp[i-k][j] * dp[k-1][j-1] | 0 dp[i][j] = sum{dp[i-k][j] * dp[k-1][j-1] | 0 i对括号深度不超过j的,原创 2014-02-27 10:58:36 · 1051 阅读 · 0 评论 -
ZOJ:2397 Tian Ji -- The Horse Racing
田忌赛马,其实是非常坑爹的一个题啊,给了5秒时间忽悠人啊。 用贪心来做。要分好多类。 1.如果田忌最快的马比齐王最快的马要快,那么就比。 (田忌最快的马比谁都会赢还不如干掉齐王最快的马,物尽其用,况且他其他的马不一定跑得过齐王最快的马)。 2.如果田忌最快的马比齐王最快的马要慢,那么就用田忌最慢的马跟它比。 (齐王最快的马跟谁比都会赢,所以用田忌最慢的马跟它比,最慢的马是赢钱原创 2013-08-04 12:37:23 · 792 阅读 · 0 评论 -
ZOJ:1164 Software CRC
此题在ZOJ上AC,UVa上一直TLE,不知为何。 其中res这个变量要用longlong,用int会WA,虽然我感觉int足够。 这个题主要是用到了一个进制转化的问题。就像十进制里面每位相差10倍关系,二进制则是两倍关系。懂了这点就好做了。取余的时候二进制可以转化成十进制来算。最后枚举答案看是否能整除就行了。 一开始以为CRC是两块,30000*30000妥超时,后来才发现它是一个数。原创 2014-01-12 11:12:43 · 766 阅读 · 0 评论 -
ZOJ:3286 Very Simple Counting
题意就是让你求位于n之前和n因子个数相同的数字的数目。 用类似于筛素数的方法求得每个数的因子个数。然后用类似于计数排序的思想求得答案。 #include #include #include #include #include #include #include #define MAXN 1000000 #define MOD 1000000007 #def原创 2014-01-13 12:43:19 · 730 阅读 · 0 评论 -
ZOJ:3365 Integer Numbers
比赛的时候没能出来,其实离AC的思路也不太远了,但是没做出来就是没做出来。。 思路:如果元素a[i],a[j]满足a[i] - i = a[j] - j,则a[i]和a[j]要么一同修改要么都不需修改。记录a[i]-i的最大出现次数cnt,cnt就是不需改变的数的最大个数,n-cnt就是需要改变的数的最少个数。 #include #include #include #incl原创 2013-10-26 22:54:10 · 596 阅读 · 0 评论 -
ZOJ:2027 Travelling Fee
求起点到终点的某条路径长度减去其中一条边的最小值。 依次删掉每条边,然后求起点到终点的最短路,最小的那个就是答案。 还有就是map要记得清空,我在这里WA了一次。。 #include #include #include #include #include #include using namespace std; map mp; struct Edge { int from,t原创 2013-10-25 07:16:12 · 648 阅读 · 0 评论 -
ZOJ:2750 Idiomatic Phrases Game
Dijkstra算法求最短路。 之前一直TLE于是用了优先队列用了char[],其实是 shortpath[i]=shortpath[v]+gl[v][i]; 这里在gl[v][i]为无穷大即v和i无边的时候溢出了。所以要特判一下gl[v][i]不是无穷大。 #include #include #include #include #include #define MAXN 1050 usi原创 2013-10-12 17:57:25 · 696 阅读 · 0 评论 -
ZOJ:2110 Tempter of the Bone
简单回溯。 注意一点,标记该位置已访问要在各种不合理及边界终止条件之后,因为函数从这些地方跳出是不会将该位置改回未访问状态的,别的还好说,如果是终止位置,也就是'D'位置,将导致以后无法访问。总之标记访问状态的位置很重要,还有不要忘了结束的时候改成未访问状态。 #include #include #include #include #include using原创 2013-09-19 10:30:01 · 739 阅读 · 0 评论 -
ZOJ:2913 Bus Pass
典型的BFS。 基本思路:从每条线路上的每个地区z出发进行BFS遍历;对每个地区j,如果地区j是最终求得的中心地区,则要保证从它出发能到达每条路上每个地区z,并且选择的星形阈值要尽可能的小,因此统计每个地区z到地区j最短距离中的最大值,这个最大值记录在数组元素step[j]中;最后求得的最小的星形阈值就是每个地区j的step[j]的最小值,中心地区就是取得最小值的地区j。 #includ原创 2013-09-23 16:19:46 · 776 阅读 · 0 评论 -
ZOJ:1586 QS Network
题意:求一个最小生成树。 思路:prim最小生成树。 #include #include #include #include #include #define MAXN 1005 using namespace std; int g[MAXN][MAXN]; int main() { int T; scanf("%d",&T); while(T--) {原创 2013-10-07 22:12:38 · 632 阅读 · 0 评论 -
ZOJ:1649 Rescue
发现自己对BFS理解还是很肤浅。 BFS可以来求最优解,尤其是像步数最少的这种。这个题虽然不是,但是可以特殊处理一下。 在BFS搜索过程中,到达(x,y)时如果所花费的时间比之前走到此处所花费时间要少,就把该点(x,y)放入队列。 注意一下,这个题不能一到达目的点就退出BFS,因为这是无法保证得到的结果是花费的最少时间,而第一次到达仅仅是步数最少。必须等到BFS过程结束即队列为空才可以原创 2013-09-20 20:46:54 · 885 阅读 · 0 评论 -
ZOJ:2412 Farm Irrigation
跟油田那道题很相似,无非是递归方向不一样。 思路很容易想到了,但是因为粗心调试了半天还写错了一个地方,WA了好几次。。。 #include #include #include #include #include using namespace std; struct Farm { bool dir[5]; void init(bool a,bool原创 2013-09-19 22:49:52 · 788 阅读 · 0 评论 -
ZOJ:3721 Final Exam Arrangement
问你有交集(覆盖)的区间一共有多少组并输出。 还是区间问题。 写码能力太弱,思路很容易想到了但是写却写了半天。中间还超时了好几次,所以最后我连int数组都没开。 最后还是AC了,不容易。。 #include #include #include #include #include #include using namespace std; s原创 2013-08-19 17:29:26 · 658 阅读 · 0 评论 -
ZOJ:3633 Alice's present(离线处理)
题意:给一串数字,每次区间查询,输出从右往左第一个重复的数字,如果没有重复数字则输出"OK"。 思路:据说此题暴力也能过,但应该不是正解。我的思路是用离线处理,先把所有查询读入,并保存为区间,根据区间右端点存进相应的vector数组中(区间右端点作为数组索引)。这样从右往左遍历所有的数字,并用一个queue(队列)来保存所有经过的查询区间。这样,一旦经过某个结点就将以该位置为右端点的查询区间存入原创 2015-03-31 21:52:28 · 479 阅读 · 0 评论