BZOJ3023【中位数】

原创 2015年07月10日 19:35:57
/* I will wait for you */
  
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <algorithm>
#include <iostream>
#include <fstream>
#include <vector>
#include <queue>
#include <deque>
#include <set>
#include <map>
#include <string>
#define make make_pair
#define fi first
#define se second
  
using namespace std;
  
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef map<int, int> mii;
  
const int maxn = 100010;
const int maxm = 1010;
const int maxs = 26;
const int inf = 0x3f3f3f3f;
const int P = 1000000007;
const double error = 1e-9;
  
inline ll read()
{
    ll x = 0, f = 1; char ch = getchar();
    while (ch < '0' || ch > '9')
          f = (ch == '-' ? -1 : 1), ch = getchar();
    while (ch >= '0' && ch <= '9')
          x = x * 10 + ch - '0', ch = getchar();
    return x * f;
}
 
ll n, m, ans, T, x[maxn], y[maxn], sx[maxn], sy[maxn];
 
void solve()
{
    if (T % n == 0) {
        for (int i = 1; i <= n; i++)
            sx[i] = sx[i - 1] + x[i];
        sort(sx + 1, sx + n + 1);
        ll _x = sx[(n + 1) / 2];
        for (int i = 1; i <= n; i++)
            ans += abs(_x - sx[i]);
    }
    if (T % m == 0) {
        for (int i = 1; i <= m; i++)
            sy[i] = sy[i - 1] + y[i];
        sort(sy + 1, sy + m + 1);
        ll _y = sy[(m + 1) / 2];
        for (int i = 1; i <= m; i++)
            ans += abs(_y - sy[i]);
    }
}
         
int main()
{
    n = read(), m = read(), T = read();
     
    for (int i = 1; i <= T; i++) {
        int _x = read(), _y = read();
        x[_x] += 1, y[_y] += 1;
    }
     
    for (int i = 1; i <= n; i++)
        x[i] -= T / n;
    for (int i = 1; i <= m; i++)
        y[i] -= T / m;
    solve();
     
    if (T % n == 0 && T % m == 0)
        printf("both ");
    if (T % n == 0 && T % m != 0)
        printf("row ");
    if (T % n != 0 && T % m == 0)
        printf("column ");
    if (T % n != 0 && T % m != 0)
        printf("impossible\n");
    if (T % n == 0 || T % m == 0)
        printf("%lld\n", ans);
     
    return 0;
}


乱搞——BZOJ1303 [CQOI2009]中位数图

http://www.lydsy.com/JudgeOnline/problem.php?id=1303 这个题被用来做成我们的模拟赛题,但是考试的时候我居然没想出正解。。。 被dalao看成纯水...

bzoj 1303 中位数 题解

4.中位数 (median.pas/c/cpp) 【问题描述】 给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。中位数是指把所有元素从小到大排列后,位于中间的数。 【输入】...

BZOJ1303 [CQOI2009]中位数图 【乱搞】

1303: [CQOI2009]中位数图 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 3086  Solved: 1898 [Submit][...

bzoj 1303: [CQOI2009]中位数图

1303: [CQOI2009]中位数图 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 2747  Solved: 1704 [Submit][...

bzoj1303[CQOI2009]中位数图

1303: [CQOI2009]中位数图 Time Limit: 1 Sec  Memory Limit: 162 MB Submit: 1969  Solved: 1264 [Submit][Sta...
  • z8110
  • z8110
  • 2016年03月16日 20:20
  • 414

【BZOJ 1303】 [CQOI2009]中位数图

思路题+模拟~

[线段树 中位数] BZOJ 4071 [Apio2015]巴邻旁之桥

首先如果办公室和家在同一侧,直接将距离加到答案中即可。 如果办公室和家不在同一侧 对于k=1,显然只需要将桥建在所有位置的中位数即可。 对于k=2,可以发现每个人都会选择距离家和办公室中点较近的...

平均数中位数众数

  • 2014年09月12日 10:41
  • 2KB
  • 下载

快速排序(基准是中位数)

简介:  快排相比冒泡等相对较快,是因为其是跳跃式交换(快,要根据数据量等)下面算法介绍:  ①根据数据量,若大于cutoff,则用快排,反之用插入排序  ②先找基准(这里采用中位数),并将基准放在R...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:BZOJ3023【中位数】
举报原因:
原因补充:

(最多只允许输入30个字)