摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2201题目描述现在有一架飞机要起飞,乘客们正准备按机票号码(1,2,3...,N)一次排队登机。突然来了一只大猩猩(金刚)。他也有机票,但是他插队第一个登上了飞机,然后随意的选择了一个座位坐下了。根据社会的和谐程度,其他的乘客有两种反应:1.乘客们都义愤填膺,“既然金刚同志都不守规矩,为什么我要遵守?”他们也随意的找位置坐下,并且坚决不让座位给其他乘客。2.乘客们虽然感到愤怒,但是还是以“和谐”为重,如果自己的位置没有被占领,就赶紧坐下,如果自己的位置已经被别人(或者金刚同志)占了,就随机的选择另一个位置坐下 阅读全文
posted @ 2013-08-22 23:38 执着追求的IT小小鸟 阅读(250) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2100直接模拟#include#includeint main(){ char a[220],b[220]; int i,j,ans[440],lena,lenb; while(scanf("%s %s",a,b)!=EOF) { lena=strlen(a)-1; lenb=strlen(b)-1; for(i=0;i=0) ans[i]+=a[lena--]-'A'; if(lenb>=0) ... 阅读全文
posted @ 2013-08-22 21:55 执着追求的IT小小鸟 阅读(165) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=2151简单dp,动态转移方程:dp[N][T]=dp[N-1][T-1]+dp[N-1][T+1],注意判断边界是否存在#include#includeint main(){ int N,P,M,T,i,j; int dp[110][110]; while(scanf("%d%d%d%d",&N,&P,&M,&T)!=EOF) { memset(dp,0,sizeof(dp)); dp[0][P]=1; for(i=1;i0) ... 阅读全文
posted @ 2013-08-22 21:20 执着追求的IT小小鸟 阅读(149) 评论(0) 推荐(0) 编辑
摘要: 手搓//快速排序void quick_sort(int s[], int l, int r){ if (l = x) // 从右向左找第一个小于x的数 j--; if(i x > pb->x) return 1; else if (pa->x x) return -1; else return 0;}int cmpy(const void *a, const void *b){ int *pa = (int *) a; int *pb = (in... 阅读全文
posted @ 2013-08-22 20:17 执着追求的IT小小鸟 阅读(212) 评论(0) 推荐(0) 编辑
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=1007这题需要注意的有两点:一:题目本身,做的思路是分治,像快速排序那样,把所有的点分成差不多的两段,然后再分……直至只剩2个或三个,那样就可以直接算了。算法流程:1:进入递归过程:如果是该段点数不大于三,那么就可以直接算了,否则用分治法递归解决2:将大于四的这堆点分成两部分,得到最小的距离d。但这个距离还不能确定是最小的min,因为有可能一点p在左边,一点q在右边,而他们的距离有可能比d还小,是真正的min3:将这堆实现按x排好序的点分成两部分,左边标志L,右边标志R,两个值不同。遍历左边的,找到所有距离中 阅读全文
posted @ 2013-08-22 20:11 执着追求的IT小小鸟 阅读(217) 评论(0) 推荐(0) 编辑