随笔分类 -  HDOJ

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

发布一些HDOJ的做题情况以及代码。
hdu 1264
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1264题意:给许多矩形,求面积并。坐标是0到100内的整数。mark:把矩形覆盖的区域赋值为1。。。代码: 1 # include 2 3 4 int g[110][110] ; 5 6 7 int main () 8 { 9 int a, b, c, d, t, i, j, ans ;10 while (~scanf ("%d%d%d%d", &a, &b, &c, &d))11 {12 if (a == -1 && b == -1 阅读全文

posted @ 2013-07-04 08:16 Seraph2012 阅读(359) 评论(0) 推荐(0)

hdu 1727
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1727题意:给一个数字,输出它的英文。。。细节比较多,小心点就不容易出错。代码: 1 # include 2 3 4 char tab[][20] = { 5 "zero", "one", "two", "three", "four", "five", 6 "six", "seven", "eight", "nine 阅读全文

posted @ 2013-07-04 04:23 Seraph2012 阅读(215) 评论(0) 推荐(0)

hdu 1133
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1133题意:电影院卖票。一张票50元。一开始没有零钱。有m+n个人买票,m个人拿50元的钞票,n个人拿100的。问队伍有多少种排列方式可以使得卖票能顺利进行下去。mark:如果要使得卖票的行为进行下去,对于任意前k个人,必须满足这k个人里面拿100的人数不多于拿50的人数。结果会是一个大整数,要用高精度。公式是n!m!(m-n+1)/(m+1)。推导比较难想,和卡特兰数有关,网上有一篇文档详细写明了这个过程:http://daybreakcx.is-programmer.com/posts/17315. 阅读全文

posted @ 2013-06-28 10:48 Seraph2012 阅读(1914) 评论(0) 推荐(0)

hdu 1798
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1798题意:给两个圆的圆心和半径求相交部分的面积。mark:思路是把相交部分分成2边,每边求一个扇形减三角形的面积。注意相离和内含的情况判断。这题wa了n次,都是因为精度问题。一个三角形已知三边,求某角。可以用余弦定理直接求,也可以先用海伦公式算出面积,再用正弦定理求(误!!!)。但是海伦公式算面积后再正弦定理会产生比较大的误差!!!# include <stdio.h># include <math.h>double xa, ya, ra, xb, yb, rb ;double 阅读全文

posted @ 2013-06-21 16:45 Seraph2012 阅读(263) 评论(0) 推荐(0)

hdu 1753
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1753题意:中文。。。高精度正小数加法。mark:高精度加法,如果把整数部分和小数部分分开搞,比较麻烦。定义了一个struct,数组存数字,dec存的是这个数字里末尾的多少位是小数部分的。两个小数相加,先对齐小数位(位数少的在后面补0)然后当整数加法搞!wa了一次。用宏要注意!41行和42行,如果没有加{}的话,前面的if只管一句!代码: 1 # include <stdio.h> 2 # include <string.h> 3 4 5 #define ExPand(a,b) 阅读全文

posted @ 2013-06-20 18:18 Seraph2012 阅读(467) 评论(0) 推荐(0)

hdu 2197
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2197题意:中文。mark:这题一看题感觉应该是简单题,但是想了挺久。一开始看到是这种单输入单输出的,而且n达到10^9那么大,想了一下应该是公式,没啥好的思路,就果断打表,然后丢到oeis.org里,结果发现根本没公式。后来思考了一下,因为每个串所有可能肯定是2^n,设{i1,i2...im}是n的所有因数,可知非本源串的个数是2^n - sum{f[i1],f[i2]...f[im]}。其中f[i]代表长度为i的非本源串个数。这样只要枚举一下递归就可以了。犹豫了很久没写,总觉得复杂度很大。后来写完以 阅读全文

posted @ 2013-05-24 10:13 Seraph2012 阅读(445) 评论(0) 推荐(0)

hdu 1175
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1175题意:中文不多说。mark:3WA,各种脑残错误不多说。最后一个竟然是忘记写return 0。无法直视。说下算法,这题感觉既可以dfs,也可以bfs,但是都不是特好写。好在转弯数限定为2次。那么可以尝试一下比较生猛的写法:先把起点和终点不需转弯直接可达的区域染色(形状大概是2个十字架)。如果这2个区域有重合的地方,自然是YES了。如果没有,扫每一行和每一列,看是否存在2个不同颜色区域之间都没有别的棋子(全0)的情况,如果有,则YES。否则NO。代码: 1 # include <stdio.h 阅读全文

posted @ 2013-05-21 22:36 Seraph2012 阅读(442) 评论(0) 推荐(0)

hdu 2483
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2483题意:给一个n*m的0-1矩阵。在里面找符合条件的方阵。条件有3个:1.方阵的4条边上全为1;2.方阵内(除了4条边的)0和1的个数之差不超过1;3.方阵大小至少为2*2。问能找到几个这样的方针。mark:最朴素的做法是枚举所有的1当做要找的方阵左上角的元素。然后判断四边是否全为1,再统计内部0和1的个数。但是每次判断边上的1和计算内部1的数量复杂度太高,肯定是不行的。我们用一个数组sum[i][j]表示从矩形左上角到(i,j)这个位置里1的个数。在计算区域内1的个数的时候可以利用这个sum[i] 阅读全文

posted @ 2013-05-17 15:30 Seraph2012 阅读(282) 评论(0) 推荐(0)

hdu 2717
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2717题意:在x坐标上,农夫在n,牛在k。农夫每次可以移动到n-1, n+1, n*2的点。求最少到达k的步数。mark:bfs。范围是2*k内。因为如果当前点大于k,执行2*n和n+1的操作都不是最佳选择。代码: 1 # include <stdio.h> 2 # include <string.h> 3 4 5 int vis[200010] ; 6 int q[200010] ; 7 8 9 int bfs (int n, int k)10 {11 int f = 0, r 阅读全文

posted @ 2013-05-15 12:02 Seraph2012 阅读(947) 评论(0) 推荐(0)

hdu 2716
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2716题意:第一行给出一个字母表的排列。用其解密第二行的文本。代码: 1 # include <stdio.h> 2 3 4 5 int main () 6 { 7 char tab[30], str[100] ; 8 9 int i ;10 while (gets (tab))11 {12 gets (str) ;13 for(i = 0 ; str[i] ; i++)14 {15 ... 阅读全文

posted @ 2012-06-10 11:14 Seraph2012 阅读(176) 评论(0) 推荐(0)

hdu 2715
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2715题意:给一个n,问能表示成几种连续数字的和的形式。mark:很简单,当然是枚举连续数字的个数(从1到sqrt(n))。代码: 1 # include <stdio.h> 2 3 4 int main () 5 { 6 int n, d, ans ; 7 while (~scanf ("%d", &n)) 8 { 9 ans = 0 ;10 for (d = 1 ; d*(d+1) <= 2*n ; d++)11 {12 ... 阅读全文

posted @ 2012-06-10 11:09 Seraph2012 阅读(167) 评论(0) 推荐(0)

hdu 2714
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2714题意:给一串ISBN号,根据算法求出缺的(?表示)那一位。算法是各位上的数字按权相加,和必须为11的倍数。没啥好说的,直接穷举。注意不存在输出-1。代码: 1 # include <stdio.h> 2 3 4 int main () 5 { 6 char str[20] ; 7 int sum, i, pos ; 8 while (gets(str)) 9 {10 sum = 0 ;11 for (i = 0 ; str[i] ... 阅读全文

posted @ 2012-06-10 10:52 Seraph2012 阅读(235) 评论(0) 推荐(0)

hdu 2711
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2711题意:有n个牛排成一列,每个牛有序号(1~n),给出每个牛之前有多少个序号小于当前牛的牛数,求序号。第一头牛的未给出。mark:直接从后往前,每次找小于它但是没被选过的序号有多少个,暴力,效率是O(n^2),200+ms。正解应该是树状数组之类的,懒得写了。代码: 1 # include <stdio.h> 2 # include <string.h> 3 4 5 int dp[8010], ans[8010], a[8010] ; 6 int n ; 7 8 int ma 阅读全文

posted @ 2012-06-10 10:41 Seraph2012 阅读(248) 评论(0) 推荐(0)

hdu 2710
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2710题意:输入n个数,找到最大素因子最大的那个输出。mark:此题实在是坑,1算素数不说,题目是尼玛多组输入的。。。而且我更2,5WA,刚被坑了一个同样的地方,又被坑。。。代码: 1 # include <stdio.h> 2 3 4 int dp[20010] = {0,1} ; 5 6 7 int IsPrime(int x) 8 { 9 int i ;10 for (i = 2 ; i*i <= x ; i++)11 if (x %i == 0) retu... 阅读全文

posted @ 2012-06-10 10:17 Seraph2012 阅读(203) 评论(0) 推荐(0)

hdu 2709
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2709题意:一个整数n,表示为若干个2的幂的数字和,问有多少种(mod 1e9)。mark:递推题,考虑1的个数不同,剩下的都是2的幂,可以除以2转移成更小的状态。得递推方程为dp[i] = dp[i-2] + dp[i/2]。注意初始值。代码: 1 # include <stdio.h> 2 3 4 int tab[1000010] = {1, 1, 2} ; 5 6 7 int main () 8 { 9 int i ;10 for (i = 3 ; i <= 1000000... 阅读全文

posted @ 2012-06-10 10:00 Seraph2012 阅读(208) 评论(0) 推荐(0)

hdu 2708
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=2708题意:给4行,统计大写字母的频率,然后按图示输出。mark:此题很坑,主要表现在:1.每行行末的空格不可以输出!2.输入是多组!!!wa了n次。一开始找max_row的时候初始化各种改错。。。代码: 1 # include <stdio.h> 2 # include <string.h> 3 4 5 int tab[300] ; 6 char str[100] ; 7 int max_tab[300] ; 8 9 10 int main ()11 {12 int i, j 阅读全文

posted @ 2012-06-10 09:49 Seraph2012 阅读(318) 评论(0) 推荐(0)

hdu 1022
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1022题意:火车调度问题,栈的基本应用。。。2wa。。。变量忘记初始化。。。太2了。代码: 1 # include <stdio.h> 2 3 4 int n, ans[25] ; 5 char s1[15], s2[15] ; 6 char s[15] ; 7 8 9 int gao()10 {11 int i, p = 0, q = 0, top = 0 ;12 for (i = 0 ; i < 2*n ; i++)13 {14 if (top != ... 阅读全文

posted @ 2012-06-10 09:06 Seraph2012 阅读(218) 评论(0) 推荐(0)

hdu 1209
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1209题意:给5个时间(小时:分钟),将之排序。排序规则是按指针锁夹锐角小到大,若夹角相等则按时间早到晚。最后输出中间的那个时间。mark:题目很简单,角度也很好算:时针每小时走30度,每分钟走0.5度。分针每分钟走6度。做差后取绝对值,再和180比一下,如果大于180,用360减。为了避免浮点数排序的麻烦,可乘以2倍后排序。3WA。。。排序的时候if语句后面手贱多写了一个;查了半天才查出来。。。 1 # include <stdio.h> 2 # include <stdlib.h& 阅读全文

posted @ 2012-06-10 08:37 Seraph2012 阅读(550) 评论(0) 推荐(0)

hdu 1709
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1709题意:给n个砝码的重量,问从1到重量总和中不能称出的重量的个数和分别都是谁。mark:注意新砝码可以加在左盘也可以加在右盘。代码: 1 # include <stdio.h> 2 # include <string.h> 3 4 5 int dp[10010] ; 6 int buff[10010] ; 7 int n ; 8 9 10 int abs(int a){return a<0?-a:a;}11 12 int main ()13 {14 int i, j, 阅读全文

posted @ 2012-05-23 14:39 Seraph2012 阅读(351) 评论(0) 推荐(0)

hdu 1060
摘要:地址:http://acm.hdu.edu.cn/showproblem.php?pid=1060题意:n的n次方最左边的数字是多少。mark:还是取对数那招,log10(n^n)的小数部分决定了最左边的数字。代码: 1 # include <stdio.h> 2 # include <math.h> 3 4 5 int calc(long long n) 6 { 7 double ans = n * log10(n) ; 8 ans -= (long long)ans ; 9 return (int)pow(10,ans) ;10 }11 12 13 int ma.. 阅读全文

posted @ 2012-05-23 06:19 Seraph2012 阅读(131) 评论(0) 推荐(0)

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