摘要: 看了算法导论, 发现了一种求最近点对的高效方法, 就是在合并操作时只找每个点(已经按y排好序)以下的6个点 。 这样就可以使复杂度变为O(n*logn*logn) ,但是这题我却没有发现有这个性质,用的是一种比较好的优化。RaidTime Limit:5000MSMemory Limit:65536KTotal Submissions:6865Accepted:2026DescriptionAfter successive failures in the battles against the Union, the Empire retreated to its last stronghold 阅读全文
posted @ 2013-03-30 17:34 chenhuan001 阅读(444) 评论(0) 推荐(0) 编辑
摘要: 比较烦人的一道题目,看着题目都觉得很吓人,不过模拟题终究是模拟题, 耐心点还是可以过的。题意: 给出了一个3*3的方块,每个方块有上下左右四个颜色, 然后每次可以在一行上 左/右循环移一格, 或一列上 上/下循环移一格。 求最少操作次数使的3*3中相同颜色的块形成一个连通块。 因为只有9个方块,所以最多的状态数为9! , 10^6次方的复杂度还是可以接受的。 然后就是一系列比较复杂的变换,搜索。 耐心点还是没有问题的。 写了几个小时 ,1 A 吉哥系列故事——乾坤大挪移Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65535/32768 阅读全文
posted @ 2013-03-30 17:29 chenhuan001 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 题意是一个错误的键盘,输入的一个字母或字符时会变成这个字母或字符在键盘上位置右边的一个。 然后已知输出的字符,求你原本输入的是什么。有一种很土的办法就是一个字符一个字符的装换,但是这样不知道要用多少个if。可以把这这些字符存在一起g[1000] ={"1234567890-=QWERTYUIOP[]\ASDFGHJKL;'ZXCVBNM,./"} ,这样只要找到了一个字符在这个g串中的位置i,然后g[i-1]就是我们要的哪个字符。 这样编程量就少了很多WERTYUTime Limit:1000MSMemory Limit:65536KTotal Submission 阅读全文
posted @ 2013-03-30 17:17 chenhuan001 阅读(303) 评论(0) 推荐(0) 编辑