码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #311 (Div. 2)

时间:2015-09-03 20:27:47      阅读:239      评论:0      收藏:0      [点我收藏+]

标签:

 

水 A - Ilya and Diplomas

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;

int a[4];

int main(void)  {
    int n;  cin >> n;
    int mn1, mx1, mn2, mx2, mn3, mx3;
    cin >> mn1 >> mx1;
    cin >> mn2 >> mx2;
    cin >> mn3 >> mx3;
    a[3] = mn3; a[2] = mn2;
    int res = n - a[2] - a[3];
    if (res <= mx1) a[1] = res;
    else    {
        a[1] = mx1; res -= a[1];
        if (a[2] + res <= mx2)  a[2] += res;
        else    {
            a[2] = mx2; a[3] += (res - (a[2] - mn2));
        }
    }

    cout << a[1] << " " << a[2] << " " << a[3] << endl;

    return 0;
}

 

贪心 || 二分 B - Pasha and Tea

题意:有n个girl和n个boy喝茶,茶杯的容量不等,boy喝的是girl的两倍且boy喝的一样多,girl喝的一样多,问主人最多能倒出多少水

分析:第一反应是用二分搜索girl喝的茶容量,可惜写搓了,mid应该和茶量最小的girl以及boy去比较。看过的代码竟然99%都是贪心,晕~

 

代码(二分):

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>
using namespace std;

const int N = 1e5 + 10;
const int INF = 0x3f3f3f3f;
const double EPS = 1e-9;
int a[N*2];

int main(void)  {
    int n;  int w;   scanf ("%d%d", &n, &w);
    n *= 2;
    for (int i=1; i<=n; ++i)  {
        scanf ("%d", &a[i]);
    }
    sort (a+1, a+1+n);
    double l = 0.0, r = w;
    double mid = 0.0, ans = 0.0;
    for (int i=1; i<=100; ++i)   {
        mid = (l + r) / 2.0;
        if (mid >= 0 && mid <= a[1] && mid * 2 <= a[n/2+1] && mid * 1.5 * n <= w)    {
            l = mid;
            ans = mid * 1.5 * n;
        }
        else    r = mid;
    }
    printf ("%.6f\n", ans);

    return 0;
}

 

代码(贪心):

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>
using namespace std;

const int N = 1e5 + 10;
int a[N*2];

int main(void)  {
    int n, w;   scanf ("%d%d", &n, &w);
    n *= 2;
    for (int i=1; i<=n; ++i)    scanf ("%d", &a[i]);
    sort (a+1, a+1+n);
    double ans = min (a[1] * 1.0, a[n/2+1] / 2.0);
    ans = min (ans * 3 * n / 2.0, w * 1.0);
    printf ("%.6f\n", ans);

    return 0;
}

 

未完待续~

 

Codeforces Round #311 (Div. 2)

标签:

原文地址:http://www.cnblogs.com/Running-Time/p/4780632.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!