要仔细看题,不然PE和各种莫名其妙的WA就来了!今天开始继续写博客!
http://acm.hdu.edu.cn/showproblem.php?pid=3625
/*Accepted 3625 0MS 248K 818B C++ Yu */
#include<cstdio>
#include<cstring>
#define LL __int64
LL dp[21][21];
LL sum;
double ans[21][21], p[21][21];
void init()
{
memset( dp, 0, sizeof dp);
memset( ans, 0, sizeof ans);
memset( p, 0, sizeof p);
dp[1][1] = 1;
sum = 1;
}
void cal()
{
for( int i = 2; i <= 20; i ++)
{
dp[i][i] = 1;
sum *= i; //N!
for( int j = 1; j < i; j ++)
{
dp[i][j] = (i - 1) * dp[i - 1][j] + dp[i - 1][j - 1];
ans[i][j] = ( 1.0 * ((i - 1) * dp[i - 1][j])) / sum;
}
}
for( int i = 2; i <= 20; i ++)
{
for( int j = 1; j < i; j ++)
{
p[i][j] = ans[i][j];
p[i][j] += p[i][j - 1];
}
}
}
int main()
{
int T;
int n, k;
init();
cal();
scanf( "%d", &T);
while( T --)
{
scanf( "%d%d", &n, &k);
printf( "%.4lf\n", p[n][k]);
}
return 0;
}
http://acm.hdu.edu.cn/showproblem.php?pid=3626
/*Accepted 3626 0MS 244K 970 B C++ */
#include<cstdio>
#include<cstring>
#include<cstdlib>
const int MAXN = 1005;
typedef struct cood
{
int x, y;
}C;
C c[MAXN], s[MAXN];
int n;
int cmp( const void *_p, const void *_q)
{
C *p = (C *)_p;
C *q = (C *)_q;
if( p->x == q->x)
return p->y - q->y;
return p->x - q->x;
}
void input()
{
for( int i = 0; i < n; i ++) {
scanf( "%d%d", &c[i].x, &c[i].y);
s[i].x = c[i].x, s[i].y = c[i].y;
}
qsort( s, n, sizeof s[0], cmp);
}
void output()
{
bool flag = false;
for( int i = 0; i < n; i ++){
flag = false;
for( int j = 0; j < n; j ++)
{
if( c[i].x < s[j].x && c[i].y < s[j].y )
{
printf( "%d %d\n", s[j].x, s[j].y);
flag = true;
break;
}
}
if( !flag) printf( "-1 -1\n");
}
}
int main()
{
int cas = 0;
while( scanf( "%d", &n) == 1)
{
if( 0 == n) break;
if( cas ++) printf( "\n");
printf( "Case %d:\n", cas);
input();
output();
}
return 0;
}
http://acm.hdu.edu.cn/showproblem.php?pid=3631
/*Accepted 3631 234MS 592K 1393 B C++ */
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN = 305;
const int inf = 0x3f3f3f3f;
int map[MAXN][MAXN];
bool vis[MAXN];
int n, m, q;
void init()
{
memset( vis, false, sizeof vis);
for( int i = 0; i < n; i ++){
for( int j = 0; j < n; j ++)
{
map[i][j] = inf;
}
map[i][i] = 0;
}
}
void floyd( int k)
{
for( int i = 0; i < n; i ++)
for( int j = 0; j < n; j ++)
{
map[i][j] = min( map[i][j], map[i][k] + map[k][j]);
}
}
void input()
{
int a, b, c;
while( m --)
{
scanf( "%d%d%d", &a, &b, &c);
map[a][b] = min( c, map[a][b]);
}
}
void operation()
{
int op, x, y;
while( q --)
{
scanf( "%d", &op);
if( 0 == op) {
scanf( "%d", &x);
if(!vis[x]){
vis[x] = true;
floyd(x);
}
else {
printf( "ERROR! At point %d\n", x);
}
}
if( 1 == op) {
scanf( "%d%d", &x, &y);
if( !vis[x] || !vis[y]){
printf( "ERROR! At path %d to %d\n", x, y);
}
else {
if( map[x][y] != inf)
printf( "%d\n", map[x][y]);
else
printf( "No such path\n");
}
}
}
}
int main()
{
int cas = 0;
while( scanf("%d%d%d", &n, &m, &q) != EOF)
{
if( 0 == n && 0 == m && 0 == q) break;
if( cas ++) printf( "\n");
printf( "Case %d:\n", cas);
init();
input();
operation();
}
return 0;
}
原文链接: https://www.cnblogs.com/Yu2012/archive/2012/07/14/2591894.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/55194
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!