pku 2772 up the stair 模拟推导 解题报告
2009-12-13 01:05
495 查看
pku 2772 up the stair 解题报告
假设有9个箱子,3个人,10层楼,
初始状态为:1在0,2在5有带箱子,3在3有带箱子.
模拟一下这过程:
第一个人运行:
第二个人运行:
第三个人运行:
那么可以发现总的时间由第二个人来决定的.即(10-5)*2+5 + 10 + 2 * 2 * 10.
我们假设c[i]为每人在初始点回到最底层所需要的时间.即c[i]=(初始位置+2*b(F-初始位置)). 很明显第二个送其中一个箱子所需要的时间为:F+c[i],而另外2个箱子则为2 * 2 * F.问题在于怎么求出这个2?以及i呢?细看一下:t=6/3*2*F。联系数据为(B-1)/N*2*F,而i为(B-1)%N.所以可得公式:time=((B - 1) / N) * 2 * F + (F + c[(B - 1) % N])。
AC代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int cmp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
int main()
{
freopen("upthestairs.in", "r", stdin);
int i, T, N, F, B, b, c[2323];
scanf("%d", &T);
for (; scanf("%d%d%d", &N, &F, &B), T--; )
{
int sum = 0;
//先将B--,用于在于腾出一个计算F+c[B%N]
for (i = 0; i < N; ++i)
{
scanf("%d%d",c + i, &b);
c[i] += 2 * b * (F - c[i]);
}
qsort(c, N, sizeof(c[0]), cmp);
printf("%d/n", ((B - 1) / N) * 2 * F + (F + c[(B - 1) % N]));
}
return 0;
}
假设有9个箱子,3个人,10层楼,
初始状态为:1在0,2在5有带箱子,3在3有带箱子.
模拟一下这过程:
第一个人运行:
第二个人运行:
第三个人运行:
那么可以发现总的时间由第二个人来决定的.即(10-5)*2+5 + 10 + 2 * 2 * 10.
我们假设c[i]为每人在初始点回到最底层所需要的时间.即c[i]=(初始位置+2*b(F-初始位置)). 很明显第二个送其中一个箱子所需要的时间为:F+c[i],而另外2个箱子则为2 * 2 * F.问题在于怎么求出这个2?以及i呢?细看一下:t=6/3*2*F。联系数据为(B-1)/N*2*F,而i为(B-1)%N.所以可得公式:time=((B - 1) / N) * 2 * F + (F + c[(B - 1) % N])。
AC代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int cmp(const void *a, const void *b)
{
return *(int *)a - *(int *)b;
}
int main()
{
freopen("upthestairs.in", "r", stdin);
int i, T, N, F, B, b, c[2323];
scanf("%d", &T);
for (; scanf("%d%d%d", &N, &F, &B), T--; )
{
int sum = 0;
//先将B--,用于在于腾出一个计算F+c[B%N]
for (i = 0; i < N; ++i)
{
scanf("%d%d",c + i, &b);
c[i] += 2 * b * (F - c[i]);
}
qsort(c, N, sizeof(c[0]), cmp);
printf("%d/n", ((B - 1) / N) * 2 * F + (F + c[(B - 1) % N]));
}
return 0;
}
相关文章推荐
- pku 1163 dp TheTriangle 解题报告
- Pku acm 1611 The Suspects数据结构题目解题报告(九)---- 并查集的应用
- pku 2057 The Lost House 树形dp+背包dp 解题报告
- PKU 1679 The Unique MST(解题报告)
- pku 3039 Margaritas on the River Walk 背包dp 解题报告
- PKU 1743 Musical Theme 解题报告
- Pku acm 1274 The Perfect Stall 数据结构题目解题报告(十三)---- 匈牙利算法求二分图的最大匹配
- Pku acm 2388 Who's in the Middle 排序算法解题报告(二)----计数排序
- UVa 1344 Tian Ji -- The Horse Racing 解题报告(贪心)
- pku_1256 Anagram 解题报告
- The sum problem(hdu 2058)解题报告
- hdoj1010(temper of the bone) 解题报告
- ACM pku 1003 解题报告(练习输入输出)
- 1010 temp of the bone 解题报告
- UVa 1153 Keep the Customer Satisfied 解题报告(贪心)
- 解题报告 之 POJ3498 March of the Penguins
- Guessing Game解题报告 (pku 2328)
- pku 3748 位操作 解题报告
- 约瑟夫 (Joseph) -- ACM PKU 1012 解题报告
- 1055. The World's Richest (25)解题报告