LeeBlog

导航

2011年5月13日 #

HDU 2094 产生冠军

摘要: 这个题开始一看是并查集,后来改了很久,怎么改也改不过,只得翻大牛的代码,原来大牛们都是这样写的,左边的为胜利者,有边的为失败者,如果左边的胜利者只有一个没在右边出现过,那么这个就是产生的冠军,否则产生不了、#include<stdio.h>#include<string.h>int set[1005],n,f,c,num[1005];char ch[1005][20];int search( char str[] ){ for( int i = 1; i < c; ++i ) if( !strcmp( str,ch[i] ) ) return i; strcpy( 阅读全文

posted @ 2011-05-13 11:40 LeeBlog 阅读(690) 评论(0) 推荐(0) 编辑

HDU 2036 改革春风吹满地

摘要: 一个多边形公式s = ( x1*y2-x2*y1 ) + ( x2*y3 - x3*y2 )……( xn-1*yn - xn*yn-1 ) + ( xn*y0 - x0*yn );一个公式就OK了#include<stdio.h>int n;double x[105],y[105],sum ;int main( ){ while( scanf( "%d",&n ),n ) { sum = 0; for( int i = 0 ; i < n; ++i ) { scanf( "%lf%lf",&x[i],&y[i] 阅读全文

posted @ 2011-05-13 10:04 LeeBlog 阅读(250) 评论(0) 推荐(0) 编辑

HDU 2955 Robberies

摘要: 这题开始我拿了,不知怎么下手,但幸好这题是在背包这里,提示了我,肯定能用背包解,但显然概率不能作为一维数组的下标,所以只能找价值来当一维数组下标,而要不失败,即全部成功,求全部成功的概率就行了。其实仔细想想0-1背包的二维中两个下标是对称的。还有0要初始化为1,因为如果神马都不抢成功率为1#include<stdio.h>#include<string.h>double dp[10005],W,w[10005];int n,v[10005],ma;double max( double a,double b ){ return a > b ? a : b;}void 阅读全文

posted @ 2011-05-13 09:08 LeeBlog 阅读(189) 评论(0) 推荐(0) 编辑

HDU 1008 Elevator

摘要: #include<stdio.h>int main( ){ int n,sum,a,b; while( scanf( "%d",&n ),n ) { sum = 0; a = 0; for( int i = 0; i < n; ++i ) { scanf( "%d",&b ); sum += 5; if( b > a ) sum += ( b - a ) * 6; if( b < a ) sum += ( a - b ) * 4; a = b; } printf( "%d\n",sum ) 阅读全文

posted @ 2011-05-13 00:36 LeeBlog 阅读(231) 评论(0) 推荐(0) 编辑