随笔分类 -  HDOJ

1 2 3 4 5 ··· 24 下一页

发布一些HDOJ的做题情况以及代码。
hdu 2725
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2725题意:给一个字符串表示一条河。'.'表示水,其它字符表示障碍。人在岸上用石子打水漂,每次可以选择一个击中的距离和跳跃间隔。石子多次跳跃后击中障碍物或越过河则结束。每种打水漂的方案按跳跃次数(大者优)、最... 阅读全文

posted @ 2015-02-04 07:13 Seraph2012 阅读(311) 评论(0) 推荐(0)

hdu 1394
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1394题意:给n个数字(0到n-1无重复),可以拿前面任意m个放到末尾。求拿多少个数字放到末尾后数列的逆序数最小。mark:非常经典的一个题目,来自zoj月赛。先用线段树/点树/树状数组/合并排序求出原数列的逆序数,然后递推出所有情况的逆序数取最小。这题真的是非常经典,所以4种方法我都写了一次。代码:线段树(62ms、284k、991B): 1 # include 2 # include 3 4 5 # define m ((l+r)>>1) 6 # define lson l,m,p m) 阅读全文

posted @ 2013-12-04 02:23 Seraph2012 阅读(1001) 评论(0) 推荐(0)

hdu 1754
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1754题意:给n个数字。m次操作,每次操作更新一个数字或者查询区间最大值。mark:典型线段树题。不过a的时候学了一下树状数组求区间最值。感觉对树状数组的理解又深刻了一点。不过这个更新不是O(lgn)而是O(lgn*lgn)的,比线段树慢!代码:线段树: 1 # include 2 # include 3 4 5 #define max(a,b) (a>b?a:b) 6 int n ; 7 int tr[200010 m) return q(a, b, m+1, r, rt*2+1) ;29 .. 阅读全文

posted @ 2013-12-04 01:05 Seraph2012 阅读(366) 评论(0) 推荐(0)

hdu 1166
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1166题意:给n个数字。对这n个数字有3种操作:1. add 2.sub 3.query。分别对应把某数增加或减少一个值和查询某[l,r]区间内所有值的和。mark:最基本的线段树or树状数组的应用。话说树状数组真是简洁啊!代码:线段树 1 # include 2 # include 3 4 5 int n, tr[50010 m) return query (a, b, m+1, r, rt*2+1) ;25 return query(a, m, l, m, rt*2) + query... 阅读全文

posted @ 2013-12-03 18:40 Seraph2012 阅读(170) 评论(0) 推荐(0)

hdu 2723
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2723题意:为了对一个文件进行访问控制,会给每个文件建立一个访问控制列表(ACL),每个列表里有若干个entity(类似于用户组),每个entity有若干个right(权限)。给出一个文件的权限更改日志,日志是ExR形式的短语构成,E是这次操作影响的entity(多个),R是right,x是一个操作符,可以为+、-、=。为+的时候表示把权限加到entity上,为-的时候表示从entity减去相应权限,为=的时候表示把entity设为相应权限。最后输出每个entity对应的权限,没有权限的不输出,2个相邻 阅读全文

posted @ 2013-09-13 11:08 Seraph2012 阅读(473) 评论(0) 推荐(0)

hdu 2721
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2721题意:给出a、b、c、s。s是初值,每次变化有s = (a*s+b)%c。如此直到重复。这些数都写成16比特的,如果某位在所有数都是0则输出0,是1则输出1,如果都有可能输出问号。直接暴搞就可以。。。代码: 1 # include 2 # include 3 4 5 int vis[70000] ; 6 7 8 int main () 9 {10 int a, b, c, s, i, bit ;11 char ch[20] ;12 13 while (~... 阅读全文

posted @ 2013-09-06 05:33 Seraph2012 阅读(264) 评论(0) 推荐(0)

hdu 2719
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2719题意:给一些字符串,把字符串输出。如果有题目里的那7种字符,按%数值的形式输出。代码: 1 # include 2 # include 3 4 5 char str[100] ; 6 char t[] = " !$%()*" ; 7 int p[] = {0x20, 0x21, 0x24, 0x25, 0x28, 0x29, 0x2a} ; 8 9 10 int main ()11 {12 int i, j ;13 while (gets (str))14 {15... 阅读全文

posted @ 2013-09-06 03:06 Seraph2012 阅读(227) 评论(0) 推荐(0)

hdu 1527
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1527题意:中文。mark:经典博弈,传说中的Wythoff’s Game。论文在此:http://scimath.unl.edu/MIM/files/MATExamFiles/Cotton_MATpaper_Final_EDITED.pdf值得一提的是论文里提到的神奇的贝蒂定理(Beatty Theorem):若a和b都是无理数且1/a + 1/b == 1,则{[a],[2a],[3a]...}和{[b],[2b],[3b]...}这两个集合没有相同元素且他们的并组成正整数集。([x]表示对x下取整 阅读全文

posted @ 2013-09-06 02:56 Seraph2012 阅读(257) 评论(0) 推荐(0)

hdu 1260
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1260题意:有个人卖票。从8:00:00am开始卖。后面有n个人,每个人卖票需要ki的时间,但是相邻两个人可以合起来买,需要di的时间。问卖票人最早回家的时间。mark:一个水dp加一个时间的转换。本来可以1A的但是3wa。第一次错是因为小时数忘记处理成不大于12的数字,第二次错是因为把m%=60写成了h%=60,第三次是忘记删除调试语句。都是脑残错误。。。代码: 1 # include 2 3 4 int s[2010], d[2010], dp[2010] ; 5 6 7 int min(... 阅读全文

posted @ 2013-09-04 01:38 Seraph2012 阅读(452) 评论(0) 推荐(0)

hdu 2603
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2603题意:从高度为3米距离天花板0.5米处抛掷一物体,倾角为a,质量为m,初速度为v。若碰到天花板则以反射定律反射出去。问物体能抛多远。mark:推公式解的物理数学题。只要还记得S = vt + 0.5gt^2的自由落体公式,根据其求出总飞行时间,剩下的都很好解决。注意解方程的时候考虑若有2个解,取哪一个。代码: 1 # include 2 # include 3 4 5 double pi = acos(-1.0), g = 9.87 ; 6 7 8 int main () 9 {10 ... 阅读全文

posted @ 2013-09-04 01:05 Seraph2012 阅读(232) 评论(0) 推荐(0)

hdu 2602
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2602题意:骨头收集者在收集骨头。有容量为V的袋子,n个骨头,给出每个骨头的体积和价值。问最大能收集的价值。01背包。代码: 1 # include 2 # include 3 4 5 int dp[1010] ; 6 int max(int a, int b){return a>b?a:b;} 7 int val[1010], vol[1010] ; 8 9 10 void work()11 {12 int n, v, i, j, ans = 0 ;13 scanf ("%d... 阅读全文

posted @ 2013-09-04 00:39 Seraph2012 阅读(754) 评论(0) 推荐(0)

hdu 2600
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2600题意:给一个区间p和q表示年份。给n个战争的起始年份、终止年份和战争名字(其实无用)。问[p,q]区间内最大没有战争的年份是多少。mark:600w*2的区间*100个战争如果直接开bool数组实在是很勉强。可以把战争先按起始年份再按终止年份排序,for一遍,维护一个last变量表示已经检查过的战争里最大的结束年份。具体看代码。代码: 1 # include 2 # include 3 4 5 int a[110][2] ; 6 int max(int a, int b){return a... 阅读全文

posted @ 2013-09-04 00:02 Seraph2012 阅读(324) 评论(0) 推荐(0)

hdu 1840
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1840题意:给一个方程ax^2+bx+c==0的三个系数a、b、c。判定方程解的个数。mark:除了利用判别式,还需要注意考虑非二次的情况。代码: 1 # include 2 3 4 void work() 5 { 6 int a, b, c, delta ; 7 scanf ("%d%d%d", &a, &b, &c) ; 8 if (a==0) 9 if (b == 0)10 if (c == 0) puts ("INF") ;1... 阅读全文

posted @ 2013-09-03 23:38 Seraph2012 阅读(212) 评论(0) 推荐(0)

hdu 2701
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2701题意:你有一双可以瞬移的鞋子,任务是要捕捉一直可以瞬移的萤火虫。给出自己每次瞬移的最远距离和起始坐标,再依次给出这只萤火虫出现的坐标。每次虫子出现,你都向它的坐标瞬移。一旦你和虫的距离不超过1,则认为捕捉到。问虫子在哪个坐标被捕捉到(或不能被捕捉到)。mark:阅读题。阅读了好久,题目又臭又长,只要明白了题意很容易1A。。。代码: 1 # include 2 # include 3 4 5 int r, x, y ; 6 7 8 double dist(double ax, doubl... 阅读全文

posted @ 2013-09-03 21:31 Seraph2012 阅读(432) 评论(0) 推荐(0)

hdu 1587
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1587题意:有n种花每种数量无限多,价格是p[i],有m元钱最多能买多少支。mark:这题竟然不给数据范围。不过好像数据范围不大,m不超过10000,n不超过1000。一开始以为是完全背包后来发现根本就是个贪心。。。代码: 1 # include 2 # include 3 4 5 int a[1000] ; 6 int cmp(const void *a, const void *b) 7 { 8 return *(int*)a - *(int*)b ; 9 }10 11 12 int... 阅读全文

posted @ 2013-09-03 02:34 Seraph2012 阅读(287) 评论(0) 推荐(0)

hdu 1678
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1678题意:买3样东西,最便宜的那样可以被当做折扣而不用付钱。问n样东西最多能获得多少折扣?mark:贪心,排序后从大到小3样3样地买。代码: 1 # include 2 # include 3 4 5 int a[20010] ; 6 7 8 int cmp(const void *a, const void *b) 9 {10 return *(int*)b - *(int*)a ;11 }12 13 14 15 void work()16 {17 int n, sum ... 阅读全文

posted @ 2013-09-03 01:30 Seraph2012 阅读(295) 评论(0) 推荐(0)

hdu 2110
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2110题意:中文。mark:母函数。但是判有无解的时候要注意,假如答案是10000种,对10000取模后就是0,此时不能判断为无解。可以加一个数组solution表示是否有解。代码: 1 # include 2 # include 3 4 5 int n, sum, MOD = 10000 ; 6 int p[110], m[110], dp[10010], sol[10010] ; 7 8 9 int work()10 {11 int i, j, k ;12 if (sum... 阅读全文

posted @ 2013-08-30 18:06 Seraph2012 阅读(279) 评论(0) 推荐(0)

hdu 2303
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2303题意:输入2个数字k和l,第一个是大数(10^100),第二个数是一个上限(10^6)。问k是否有小于l的质因数,如果有,最小的是多少。mark:时限卡的比较严,先把100w以内的素数打表,然后挨个检测素数,每次用大数对这个素数取模。若模为0则为素因子。代码: 1 # include 2 3 4 int cnt ; 5 char k[110] ; 6 int prime[1000010], isprime[1000010] ; 7 8 9 void init()10 {11 in... 阅读全文

posted @ 2013-08-27 23:59 Seraph2012 阅读(289) 评论(0) 推荐(0)

hdu 2183
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2183题意:中文。。。mark:一开始有点晕,没看出规律。后来发现规律就是个水题。从sample里的1开始看,向右下。。。代码: 1 # include 2 # include 3 4 5 int dp[22][22] ; 6 7 8 void work(int n) 9 {10 int i, j, x, y ;11 memset (dp, 0, sizeof(dp)) ;12 x = n/2 + 1, y = n/2 ;13 for (i = 1 ; i <... 阅读全文

posted @ 2013-08-27 22:25 Seraph2012 阅读(279) 评论(0) 推荐(0)

hdu 1114
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1114题意:小盆友通过往猪猪存钱罐里放钱的方式攒钱做事。存钱罐除非砸坏,否则无法把钱取出。为了知道是否攒了足够的钱,对存钱罐称重。然后告诉每种钱币的重量和价值,问存钱罐里最少可能有多少钱。mark:算是一个比较裸的完全背包问题。只不过是选最小。代码: 1 # include 2 # include 3 4 5 int n, m, INF = 0x3f3f3f3f ; 6 int p[510], w[510] ; 7 int dp[10010] ; 8 9 10 int min(int a, i... 阅读全文

posted @ 2013-08-25 00:43 Seraph2012 阅读(953) 评论(0) 推荐(0)

1 2 3 4 5 ··· 24 下一页