上一页 1 2 3 4 5 6 7 8 9 ··· 11 下一页
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1785代码如下:#include"stdio.h"#include"math.h"#include"stdlib.h"struct nod{ double x,y; double num;}a[105]; int cmp(const void *a,const void *b){ nod *aa=(nod*)a,*bb=(nod*)b; return aa->num>bb->num?1:-1;}int main( ){ int n, 阅读全文
posted @ 2012-07-06 13:15 朝圣の路 阅读(213) 评论(0) 推荐(0) 编辑
摘要: 编辑器加载中...#include"stdio.h"#include"string.h"#define maxn 200005char s1[maxn],s2[maxn];int wa[maxn],wb[maxn],wv[maxn],ws[maxn];int rank[maxn],height[maxn];int sa[maxn];int cmp(int *r,int a,int b,int l){return r[a]==r[b]&&r[a+l]==r[b+l];}void da(char *r,int *sa,int n,int m) 阅读全文
posted @ 2012-06-05 00:04 朝圣の路 阅读(399) 评论(1) 推荐(0) 编辑
摘要: 连人家的博客我都直接给抄来了,感觉真的很可耻!!题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1143开始也是想递推的,但是发现递推的过程中有重复计算,所以便下结论此题不是递推,然后就不会做了。后来看了人家大牛的解法,发现确实是递推,而且避免重复计算的过程的公式为f[n]=f(2)*f[n-2]+2*(f[n-4]+f[n-2]+...+f[0])(其中f[0]约定为1)。公式是这样解释的:我们从右往左定顺序,首先是划分为n-2,和2两部分,则为f[n-2]*f[2],然后划分为n-4和4两部分,但是4的部分不能分解为2,2(否则重复计算了)。我 阅读全文
posted @ 2012-06-02 16:33 朝圣の路 阅读(604) 评论(0) 推荐(0) 编辑
摘要: hdu-2147:kiki's gameP点:就是P个石子的时候,对方拿可以赢(自己输的)N点:就是N个石子的时候,自己拿可以赢现在关于P,N的求解有三个规则(1):最终态都是P(2):按照游戏规则,到达当前态的前态都是N的话,当前态是P(3):按照游戏规则,到达当前态的前态至少有一个P的话,当前态是N题意:在一个m*n的棋盘内,从(1,m)点出发,每次可以进行的移动是:左移一,下移一,左下移一。然后kiki每次先走,判断kiki时候会赢(对方无路可走的时候)。我们可以把PN状态的点描绘出来::#include"stdio.h"int main( ){ int n, 阅读全文
posted @ 2012-05-29 22:05 朝圣の路 阅读(1574) 评论(0) 推荐(0) 编辑
摘要: 思路:直接暴力就好了,不过wa了一次,当时没注意到都是正整数解;代码如下:#include"stdio.h"int main( ){ int i,j,k,sum,flag; while(~scanf("%d",&sum)) { flag=0; for(i=1;i*i<=sum;i++) { for(j=1;j*j<=sum;j++) { if(j*j+i*i>sum) break; for(k=... 阅读全文
posted @ 2012-05-28 23:11 朝圣の路 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 说起来真惭愧,这题刚开始看没什么思路,然后也没怎么仔细想就直接看别人思路了。思路是这样的:在n个人中找m个人,然后就变成了插板问题。代码如下:#include"stdio.h"__int64 cal(__int64 m,__int64 n){ __int64 s=1,i; for(i=1;i<=m;i++) s=s*(n-i+1)/i; return s;}int main( ){ __int64 n,sum,i; while(~scanf("%I64d",&n)) { sum=0; for(i=2;i<=n;i++... 阅读全文
posted @ 2012-05-28 17:07 朝圣の路 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 注意v和d都是double类型;代码如下:#include"stdio.h"int main( ){ int i,sum,time,b; double v,d,a; while(~scanf("%lf%lf",&v,&d)) { a=v/d; b=a; if(a-(int)a>0.0001) b++; sum=time=0; for(i=1;;i++) { if(sum+i>=b) break; ... 阅读全文
posted @ 2012-05-28 15:18 朝圣の路 阅读(221) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2483需要对矩阵进行预处理来降低复杂度。代码如下:#include"stdio.h"#include"string.h"int a[305][305],vis1[305][305],vis2[305][305];int sum[305][305];int main( ){ int i,j,r,c,t,count,k,s; scanf("%d",&t); while(t--) { count=0; scanf("%d%d", 阅读全文
posted @ 2012-05-28 14:38 朝圣の路 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 此题的思路和代码都是别人的,我觉得写得比较清晰,就直接复制过来吧。代码如下:#include <stdio.h>#include <string.h>#define N 128#define inf 0x7fffffffstruct node{ int val; //权值int left, right, parent;}p[1000];int f[N]; //存放每个字母权值int len[N]; //统计编码的长度void hufuman(int n){ int i, min1, min2, pos1, pos2, flag; for(i =0; i <... 阅读全文
posted @ 2012-05-27 17:37 朝圣の路 阅读(166) 评论(0) 推荐(0) 编辑
摘要: Interview ArrangementAccepted : 58Submit : 349Time Limit : 5000 MSMemory Limit : 65536 KB作为一名即将毕业大学生,小明即将参加一系列的面试,每场面试都有一个开始时间Si和一个结束时间Ti。小明可以选择参加面试或者放弃面试,但是迟到和早退是不允许的。每场面试对小明心都有不同的价值Vi。请你帮小明安排一些互不冲突的面试,使得最后参加面试的总价值最大。Input有多组测试数据。每组数据的第一行是一个整数1 ≤ N ≤ 100000。接下来N行,每行有三个整数0 ≤ Si< Ti≤ 1000000000, - 阅读全文
posted @ 2012-05-22 15:34 朝圣の路 阅读(347) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 11 下一页