• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
HaibaraAi
博客园    首页    新随笔    联系   管理    订阅  订阅

SJTU SCPC Monthly Oct.2013 Problem B. mincut

尼玛中学知识都望的差不多了连复合函数都不记得了!

【题目描述】

最大流最小割定理是一个非常美妙的定理,不过我们暂时抛开它的定义。

我们的战士正在和敌人交战! 是时候启动“min cut”行动了!

如我们所知,我们的战士拥有一个士气值,它随着时间的变化,其精确值为a * (t - b) * (t - c) + d * (t - e) + f。当发动min cut的时候,所有的战士的士气值会变成瞬间变成1000000007。所以,指挥官想知道,我们应该在什么时候发动min cut,能使得士气值之和提升得最多。注意,你只需要关心这一瞬间值的提升。

另外,因为某些特殊原因,发动的时刻不应该超过1200。

【输入格式】

输入入的第一行包含一个整数T,表示数据的组数。 接下来每组数据的第一行包括一个正整数n,表示战士的个数。之后的n行每行包括六个整数a, b, c,d,e,f,表示题目中描述的系数。

【输出格式】

输出T行,每行包括一个实数,四舍五入到4位小数,表示我们应该发动行动的时间。如果有多个提升最高的时刻,请输出最早的一个。

【样例输入】

2

1

0 0 0 0 0 1

2

2 0 2 0 0 2

1 0 1 0 0 2

【样例输出】

0.0000

0.8333

【数据范围】

n不超过200。

a, b, c,d,e,f均为整数(其中a是非负整数),并且绝对值值不超过100。

 1 #pragma comment(linker, "/STACK:1024000000,1024000000")
 2 #include <map>
 3 #include <queue>
 4 #include <vector>
 5 #include <string>
 6 #include <cstdio>
 7 #include <cstring>
 8 #include <iostream>
 9 #include <algorithm>
10 using namespace std;
11 #define maxn 105
12 #define mod 1000000007
13 #define ll long long
14 #define INF 0x7fffffff
15 ll f[maxn][maxn];
16 int n, m;
17 int main(){
18     int cas = 1;
19     int t;
20     scanf("%d", &t);
21     while (t--){
22         scanf("%d", &n);
23         int a, b, c, d, e, f;
24         double time = 0;
25         double mi = INF;
26         double x=0.0, y=0.0, z=0.0;
27         for (int i = 0; i < n; i++){
28             scanf("%d%d%d%d%d%d", &a, &b, &c, &d, &e, &f);
29             x += a;
30             y += d - a*b - a*c;
31             z += a*b*c - d*e + f;
32         }
33         time = -y / x / 2.0;
34         if (time >= 0 && time <= 1200&&x)
35                 mi = x*time*time+y*time+z;
36         double xx = z;
37         if (mi >= xx){ mi = xx; time = 0; }
38         xx=x * 1200 * 1200 - y * 1200 + z;
39             if (mi > xx){ mi = xx; time = 1200; }
40         printf("%.4lf\n", time);
41     }
42     return 0;
43 }
View Code
posted @ 2013-10-22 13:59  HaibaraAi  阅读(155)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3