LightOJ 1349 - Aladdin and the Optimal Invitation(数学啊)

题目链接:http://lightoj.com/volume_showproblem.php?problem=1349

Finally Aladdin reached home, with the great magical lamp. He was happier than ever. As he was a nice boy, he wanted to share the happiness with all people in the town. So, he wanted to invite all people in town in some place such that they can meet there
easily. As Aladdin became really wealthy, so, number of people was not an issue. Here you are given a similar problem.

Assume that the town can be modeled as an m x n 2D grid. People live in the cells. Aladdin wants to select a cell such that all people can gather here with optimal overall cost. Here, cost for a person is the distance he
has to travel to reach the selected cell. If a person lives in cell (x, y) and he wants to go to cell (p, q), then the cost is |x-p|+|y-q|. So, distance between (5, 2) and (1, 3) is |5-1|+|2-3| which
is 5. And the overall cost is the summation of costs for all people.

So, you are given the information of the town and the people, your task to report a cell which should be selected by Aladdin as the gathering point and the overall cost should be as low as possible.

Input

Input starts with an integer T (≤ 20), denoting the number of test cases.

Each case starts with a blank line. Next line contains three integers: m, n and q (1 ≤ m, n, q ≤ 50000)m and n denote the number of rows and columns of the grid respectively. Each of the
next q lines contains three integers u v w (1 ≤ u ≤ m, 1 ≤ v ≤ n, 1 ≤ w ≤ 10000), meaning that there are w persons who live in cell (u, v). You can assume that there are no people in the cells
which are not listed. You can also assume that each of the q lines contains a distinct cell.

Output

For each case, print the case number and the row and column position of the cell where the people should be invited. There can be multiple solutions, any valid one will do.

Sample Input

Output for Sample Input


2

5 1 1

2 1 10

5 5 4

1 1 1

2 2 1

4 4 1

5 5 1


Case 1: 2 1

Case 2: 3 3

Note

1.      This is a special judge problem; wrong output format may cause ‘Wrong Answer‘.

2.      Dataset is huge, use faster I/O methods.

PS:

求带权中位数!

代码如下:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
struct node
{
    int u, v;
    int w;
} a[50047];
bool cmp_u(node a, node b)
{
    return a.u < b.u;
}
bool cmp_v(node a, node b)
{
    return a.v < b.v;
}
int main()
{
    int t;
    scanf("%d",&t);
    int m, n, q;
    int cas = 0;
    while(t--)
    {
        scanf("%d%d%d",&m,&n,&q);
        int sum = 0;
        for(int i = 0; i < q; i++)
        {
            scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].w);
            sum += a[i].w;
        }
        sort(a,a+q,cmp_u);
        int tt;
        if(sum%2)
        {
            tt = (sum+1)/2;
        }
        else
        {
            tt = sum/2;
        }
        int ansx = 0, ansy = 0;
        int tsum = 0;
        for(int i = 0; i < q; i++)
        {
            tsum += a[i].w;
            if(tsum >= tt)
            {
                ansx = a[i].u;
                break;
            }
        }
        tsum = 0;
        sort(a,a+q,cmp_v);
        for(int i = 0; i < q; i++)
        {
            tsum += a[i].w;
            if(tsum >= tt)
            {
                ansy = a[i].v;
                break;
            }
        }
        printf("Case %d: %d %d\n",++cas,ansx,ansy);
    }
    return 0;
}
时间: 2024-08-05 12:47:59

LightOJ 1349 - Aladdin and the Optimal Invitation(数学啊)的相关文章

lightoj 1349 - Aladdin and the Optimal Invitation 贪心 中位数

1349 - Aladdin and the Optimal Invitation PDF (English) Statistics Forum Time Limit: 4 second(s) Memory Limit: 32 MB Finally Aladdin reached home, with the great magical lamp. He was happier than ever. As he was a nice boy, he wanted to share the hap

BNUOJ 13268 Aladdin and the Optimal Invitation

思路:x轴和y轴的情况是独立的,可以分开考虑,那么只要枚举位置,能维护最小值即可,这只要把公式拆开,预处理出两个前缀和即可,一个是w的前缀和,一个是w * x的前缀和 代码: #include <cstdio> #include <cstring> #include <algorithm> using namespace std; const int N = 50005; typedef long long ll; int t, n, m, q; int x[N], y

LightOJ 1341 - Aladdin and the Flying Carpet (唯一分解定理 + 素数筛选)

http://lightoj.com/volume_showproblem.php?problem=1341 Aladdin and the Flying Carpet Time Limit:3000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice LightOJ 1341 Description It's said that Aladdin had to solve seven

LightOJ 1341 - Aladdin and the Flying Carpet(算术基本定理啊)

题目链接:http://lightoj.com/volume_showproblem.php?problem=1341 It's said that Aladdin had to solve seven mysteries before getting the Magical Lamp which summons a powerful Genie. Here we are concerned about the first mystery. Aladdin was about to enter

Lightoj 1348 Aladdin and the Return Journey (树链剖分)(线段树单点修改区间求和)

Finally the Great Magical Lamp was in Aladdin's hand. Now he wanted to return home. But he didn't want to take any help from the Genie because he thought that it might be another adventure for him. All he remembered was the paths he had taken to reac

LightOJ 1341 - Aladdin and the Flying Carpet 基本因子分解

http://www.lightoj.com/volume_showproblem.php?problem=1341 题意:给你长方形的面积a,边最小为b,问有几种情况. 思路:对a进行素因子分解,再乘法原理算一下,最后减去小于b的因子的情况即可. /** @Date : 2016-12-01-19.04 * @Author : Lweleth ([email protected]) * @Link : https://github.com/ * @Version : */ #include<b

LightOJ 1305 - Area of a Parallelogram(数学啊 )

题目链接:http://lightoj.com/volume_showproblem.php?problem=1305 A parallelogram is a quadrilateral with two pairs of parallel sides. See the picture below: Fig: a parallelogram Now you are given the co ordinates of A, B and C, you have to find the coordi

LightOJ 1341 - Aladdin and the Flying Carpet【合数分解】

题目链接:http://lightoj.com/volume_showproblem.php?problem=1341 题意: 给出整数 a 和 b ,求区间[b, a] 内的 a 的约数对的个数,a 的约数对(比如[2, 3] 与 [3, 2] 为同一对). 解法: 主要利用公式: 一个整数n可以表示为若干素数乘积: n = p1^a1 * p2^a2*-*pm^am; 则 n 的正因数的个数可以表示为: num = (a1+1)*(a2+1)-(am+1); 代码: #include <st

LightOJ 1341 Aladdin and the Flying Carpet(唯一分解定理)

http://lightoj.com/volume_showproblem.php?problem=1341 题意:给你矩形的面积(矩形的边长都是正整数),让你求最小的边大于等于b的矩形的个数. 思路:根据唯一分解定理,把X写成若干素数相乘的形式,则X的正因数的个数为:(1+a1)(1+a2)(1+a3)...(1+an).(ai为指数) 因为这道题目是求矩形,所以知道一个正因数后,另一个正因数也就确定了,所以每组正因数重复计算了两遍,需要除以2. 最后减去小于b的因数. 1 #include<