acm
文章平均质量分 63
LuckilyYu
程序,算法,游戏,汉化,iPhone。。。
展开
-
Tian Ji Horse Racing(贪心) 的AC程序
了解了这道题是用贪心后,就自己写了个简单的程序,但是没考虑到平局的情况,在网上搜了下后也没有专门的解题报告,所以就先放一下,寸了别人AC的代码,以后再来看#include//BUBBLE SORT,Can be replaced by some other sort functionsvoid sort2(int stu[],int stu_num){ int i,j,te原创 2006-12-03 14:14:00 · 1247 阅读 · 0 评论 -
hd1010 Tempter of the Bone
今天重写了下这题,经典搜索题,同时也是某年的浙江省赛题.先分析下题目吧,是求在某一个时刻能不能达到一个指定的点,很显然可以用bfs,因为题目只要求可不可达,而没要求最短步数.这题的话需要一些剪枝,我剪了很少,900+MS过的,汗...#include iostream>#include string>using namespace std;int dir[4][2] = ...{...{0原创 2008-05-08 11:20:00 · 805 阅读 · 0 评论 -
zju 1671 Walking Ant
依然是经典搜索,+了记忆化,速度快了不少.即在bfs的过程中,只有当当前点的hp>目标点的hp时,才走这一步.#include iostream>#include string>#include queue>using namespace std;int dir[4][2] = ...{...{0,1},...{0,-1},...{1,0},...{-1,0}};int m, n;int原创 2008-05-08 13:46:00 · 736 阅读 · 0 评论 -
hd 1728 逃离迷宫
#include iostream>#include string>#include set>#include algorithm>#include map>#include vector>#include queue>using namespace std;#define MAX 999999int dir[4][2] = ...{...{0,1},...{0,-1},...{1,0},.原创 2008-05-09 20:29:00 · 728 阅读 · 0 评论 -
zju 2840 File Searching
昨天练习赛时,想的太复杂了...555.后来看到有个人的方法是只要匹配*号2边的内容就可以了,然后就是比较的串的长度必须是>=查询语句-1#includeiostream>#include string>using namespace std;int main()...{ int i, j, k, si, qi; string s[101], q; int n, m;原创 2008-05-12 09:11:00 · 982 阅读 · 0 评论 -
zju 2839 Find the Sequences
先算出p^3+q^3的所有的数,然后排序.同时为了加快后面的查询,建立一个hash表.然后从头开始枚举每个数列的前2项,得到a和b,再判断后面的几项.要注意的一点就是数列可能会超过p^3+q^3的最大值.#includeiostream>#include string>#include algorithm>using namespace std;typedef struct ...{原创 2008-05-12 13:06:00 · 971 阅读 · 0 评论 -
zju 2740 Message System
题目的意思就是判断一个图是否是树,一开始我的做法是先判断图是否联通,然后判断是否有环.判断联通用了O(N),然后判断环用了O(N^2),tle了.后来在网上搜了下,想起了判断环可以用并查集,并且并查集也可以判断是否是联通的,而且用最简单的并查集就行了#include#include #include using namespace std;int m, n;int p[10原创 2008-05-13 21:51:00 · 879 阅读 · 0 评论 -
zju 2744 Palindromes
利用回文的特点进行计算,复杂度O(nlogn)#include#include //#include using namespace std;char a[5002];int cal(int u, int even, int len){ int sum = 1; int l=u-1, r; if(even == 0) r=u+1; else原创 2008-05-14 09:10:00 · 827 阅读 · 0 评论 -
hd 1689 Alien’s Necklace[转自剑哥的代码]
// HDU Online Judge// Problem 1689 Alien’s Necklace// Algorithm: Enumerate + BFS// ---- 对每一个顶点,计算经过该顶点的最短环路长,计算方法为 BFS:// ---- 在BFS中,如果遇到访问过的点,如果访问过的点是BFS隐式树中当前点的祖先,// ---- 那么该回路不经过我们枚举的点,我们按照“假设当前回转载 2008-05-12 18:43:00 · 1019 阅读 · 0 评论 -
钱币交换问题
题目:给定 2×n 个方格组成的一行方格。除了两个相邻的空方格外,其余每个方格中都放入 了一枚金币或一枚银币。共有 n-1 枚金币和 n-1 枚银币。任何两个非空方格中的钱币可以移 动到两个相邻的空格中,但不能改变线币的排列顺序。金币变换问题要求用最少移动次数将 所有金币移到所有银币的左边。 解题:1.bfs2.利用位操作保存状态 bfs:定义一原创 2009-10-06 15:52:00 · 2137 阅读 · 1 评论 -
zju 2529 DomiNo Grid
简单提,只有广搜可以过#include iostream>#include string>#include queue>using namespace std;typedef struct ...{ int x, y; char c;}Node;int m, n;char a[501][501];int d[8][3][2] = ...{ ...{...{-1,原创 2008-04-23 12:34:00 · 982 阅读 · 0 评论 -
hd 1981 A Special Text Editor
看似很简单的题目,第一感觉就是直接模拟了,结果TLE...然后套论坛上是look一下后,改进了一下,结果还是TLE,无奈下只好购买代码了,不过理解了就好,呵呵.直接j的顺序是从后往前#include iostream>#include string.h>using namespace std;typedef struct...{ char c; int s, e;}Op;cha原创 2008-04-15 19:04:00 · 989 阅读 · 0 评论 -
hd 1988 Flipping Burned Pancakes
做练习赛时,没来的及看.后来看的时候发现可以用bfs+递归求解,写好后TLE,后来又改成了dfs,一样TLE.后来又问了WY,直接构造就可以了,方法是先排大的,再排小的./**//*方法:直接构造,先排大的,再排小的...*/#include iostream>#include queue>using namespace std;int a[32], n;void change(int t原创 2008-04-15 18:48:00 · 1231 阅读 · 0 评论 -
最长递增子序列(动态规划)
伪代码:input:Num[n] Max[1..n]=1 for i for j if Num[i] Output(Maxam(Max[1..n])) 状态转移方程:max[i]=max{max[j]}+1,j#include main(){ int a[11], s[11], m[11];原创 2006-12-03 15:03:00 · 1471 阅读 · 0 评论 -
阶乘 最后一个不为0的数
这道题要求N!的最后一个非0数字是多少,如果用一般作法,先统计2和5的个数,然 后补乘2,得到的将是TLE。所以还需要再做简化: 为了把0去掉,我们把所有的因数2和5都提出来,放到最后再处理。N!中的N个相乘的 数可以分成两堆:奇数和偶数。偶数相乘可以写成(2^M)*(M!),M=N DIV 2。M!可以 递归处理,因此现在只需讨论奇数相乘。考虑1*3*5*7*9*11*13*15*17* ...转载 2008-02-02 21:54:00 · 4064 阅读 · 2 评论 -
阶乘 n! 末尾 0 的个数
分析:n! 末尾有多少个 0 取决于从 1 到 n 的各个数的因子中 2 和 5 的个数。又因为 2 的个数远远多于 5 的个数,所以只要求出这当中 5 的个数即可。不断地用 n 除以 5,直到结果为 0,将中间的结果都加起来,即可得到因子 5 的个数。例如,100/5 = 20,20/5 = 4,4/5 = 0。因此,1 到 100 中因子 5 的个数为 (20 + 4) = 24 个,转载 2008-02-02 16:40:00 · 863 阅读 · 0 评论 -
hdu/hdoj 1087 Super Jumping! Jumping! Jumping!
/*最长递增子序列的应用hdu 1087-Super Jumping! Jumping! Jumping!written by lky2008-3-4 19:00*/#include#include using namespace std;int main(){ int a[1001]; __int64 sum[1001], Max; int n, i, j; while原创 2008-03-04 19:10:00 · 897 阅读 · 0 评论 -
zju 1027-Human Gene Functions
/*LeeMars的讲解如下: 观察题目给出的一个最优解: AGTGATG -GTTA-G 将其从某一处切开,如果左边部分的分值不是最大,那么将其进行调整,使其分值变大,则整个解分值变大,与已知的最优矛盾。所以左边部分的分值必是最大。同理,右边也是。可见满足最优子结构的性质。考虑使用DP: 设两个DNA序列分别为s1,s2,长度分别为len1,len2,score为分值表。f[i原创 2008-03-18 15:04:00 · 895 阅读 · 0 评论 -
hdoj 1175-连连看
/*hdoj 1175-连连看written by lky501994 2008-03-18 14:53:30 Accepted 1175 781MS 8868K 2269 B C++ lky标准bfs+搜索记忆化,新结点的turn数小于在该方向上的turn数时才入队列*/ #include #include using namespace std;原创 2008-03-18 14:58:00 · 1031 阅读 · 0 评论 -
hdoj 1052-Tian Ji -- The Horse Racing
/*hdoj 1052-Tian Ji -- The Horse Racingwritten by lky32 lky 46MS 0K 931B C++ 2008-03-20 21:36:28 //贪心思想:if( 田忌比输了 )-----每次都拿最差的马和王比-----输的彻底。 // else if( 田忌比赢了 )--原创 2008-03-20 21:52:00 · 1113 阅读 · 0 评论 -
hdoj 1992 Tiling a Grid With Dominoes的题解.
来自剑哥的题解,很详细的,超赞的.原创 2008-04-07 21:21:00 · 1203 阅读 · 0 评论 -
hd 1887 Weird Numbers
负进制的转换,用短除法.负进制r,当余数d#include iostream>#include string>#include stack>#include vector>#include map>using namespace std;void change(int n, int r)...{ int y, s, t; stackint> st; while (n)原创 2008-04-15 14:48:00 · 835 阅读 · 0 评论 -
“顶嵌杯”编程比赛简单题解
无意中看到这个比赛的,刚好也有空,就报了名。参加了初赛和决赛,貌似比想象中的要简单,不过我用c++写的,估计违法比赛规则了~ 初赛:http://acm.pku.edu.cn/JudgeOnline/showcontest?contest_id=1345 1.位操作, 很简单。不过我写了3个等式,最终应该能表示成一个int r, x, y;r = r &~(原创 2010-01-17 20:33:00 · 1221 阅读 · 0 评论