[bzoj3032][TYVJ P1924]七夕祭(环形均分纸牌,货仓选址)

题意

七夕节因牛郎织女的传说而被扣上了「情人节」的帽子。
于是TYVJ今年举办了一次线下七夕祭。
Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩。
TYVJ七夕祭和11区的夏祭的形式很像。
矩形的祭典会场由N排M列共计N×M个摊点组成。
虽然摊点种类繁多,不过cl只对其中的一部分摊点感兴趣,比如章鱼烧、苹果糖、棉花糖、射的屋……什么的。
Vani预先联系了七夕祭的负责人zhq,希望能够通过恰当地布置会场,使得各行中cl感兴趣的摊点数一样多,并且各列中cl感兴趣的摊点数也一样多。
不过zhq告诉Vani,摊点已经随意布置完毕了,如果想满足cl的要求,唯一的调整方式就是交换两个相邻的摊点。
两个摊点相邻,当且仅当他们处在同一行或者同一列的相邻位置上。
由于zhq率领的TYVJ开发小组成功地扭曲了空间,每一行或每一列的第一个位置和最后一个位置也算作相邻。
现在Vani想知道他的两个要求最多能满足多少个。
在此前提下,至少需要交换多少次摊点。

输入格式

第一行包含三个整数N和M和T,T表示cl对多少个摊点感兴趣。
接下来T行,每行两个整数x, y,表示cl对处在第x行第y列的摊点感兴趣。

输出格式

首先输出一个字符串。
如果能满足Vani的全部两个要求,输出both;
如果通过调整只能使得各行中cl感兴趣的摊点数一样多,输出row;
如果只能使各列中cl感兴趣的摊点数一样多,输出column;
如果均不能满足,输出impossible。
如果输出的字符串不是impossible, 接下来输出最小交换次数,与字符串之间用一个空格隔开。

数据范围

\(1≤N,M≤100000,\)
\(0≤T≤min(N?M,100000),\)
\(1≤x≤N,\)
\(1≤y≤M\)

#include<bits/stdc++.h>
#define ll long long
using namespace std;

ll x[100010],y[100010];
ll sum[100010];
ll n,m,t;
int main(){
    cin >> n >> m >> t;
    for(int i = 1; i <= t; ++i){
        int xx,yy;
        scanf("%d%d",&xx,&yy);
        x[xx]++; y[yy]++;
    }
    ll ans1 = 0,ans2 = 0;
    int flag1 = 1,flag2 = 1;
    ll ave = 0;
    if(t % n == 0){
        ave = t / n;
        for(int i = 1; i <= n; ++i)
            sum[i] = sum[i - 1] + x[i] - ave;
        sort(sum + 1,sum + n + 1);
        ll mid = (n + 1) >> 1;
        for(int i = 1; i <= n; ++i)
            ans1 += abs(sum[i] - sum[mid]);
    }
    else flag1 = 0;
    if(t % m == 0){
        ave = t / m;
        for(int i = 1; i <= m; ++i)
            sum[i] = sum[i - 1] + y[i] - ave;
        sort(sum + 1,sum + m + 1);
        ll mid = (m + 1) >> 1;
        for(int i = 1; i <= m; ++i)
            ans2 += abs(sum[i] - sum[mid]);
    }
    else flag2 = 0;
    if(flag1 && flag2) cout << "both ";
    else if(flag1) cout << "row ";
    else if(flag2) cout << "column ";
    else cout << "impossible" << endl;
    if(flag1 || flag2) cout << ans1 + ans2 << endl;
    return 0;
} 

原文地址:https://www.cnblogs.com/FoxC/p/11417492.html

时间: 2024-07-31 06:05:42

[bzoj3032][TYVJ P1924]七夕祭(环形均分纸牌,货仓选址)的相关文章

货仓选址模型与环形均分纸牌

目录 货仓选址模型 环形均分纸牌 货仓选址模型 可以如此描述:轴上有k个点,从轴上选择一点,使得此点到其他点的距离之和最小. 固定解:取k个点坐标的中位数 原因:取一点,异色于原先k个点,设此点正方向有p个与此点异色的点,负方向则有q个. 若将点向正方向移动,则距离之和减少p,增加q,反之减少q,增加p:当p.q不等时, 此点所在地必定不是最优解,按照更优方案改动此点的位置,直到p=q,最优解形成. 环形均分纸牌 经典均分纸牌的公式:\(sum(a[1],a[m])\). 环形均分纸牌的公式:\

CODEVS 2485 七夕祭 - 贪心+中位数【环形均分纸牌问题】

CODEVS 2485 七夕祭 Sol: 当行的平均值不为整数时,不能均分,列同理. 对行和列分别做一次环形均分纸牌问题. AC CODE: #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N = 100000 + 100; int read(){ int x=0,f=1;char ch=' '; while(ch>'9'||ch<'0

:七夕祭 (货仓选址+均分纸牌)

问题 : 七夕祭 时间限制: 1 Sec  内存限制: 128 MB 题目描述 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. TYVJ七夕祭和11区的夏祭的形式很像.矩形的祭典会场由N排M列共计N×M个摊点组成.虽然摊点种类繁多,不过cl只对其中的一部分摊点感兴趣,比如章鱼烧.苹果糖.棉花糖.射的屋--什么的.Vani预先联系了七夕祭的负责人zhq,希望能够通过恰当地

Lydsy3032 七夕祭(货仓选址+均分纸牌结合)

环形均分纸牌 #include<cstdio> #include<cmath> #include<algorithm> using namespace std; typedef long long ll; const int maxn=100000+10; ll heng[maxn],shu[maxn]; ll sum[maxn]; ll getans(ll a[maxn],int n){ ll k=a[0]/n; for (int i=1;i<=n;i++){

中位数性质(环形均分纸牌)

水了一个环形均分纸牌的问题: 叫七夕祭:原题链接 这个题就是一个裸的环形均分纸牌问题 用到的性质每个数到中位数距离之和是最短的. code: #include <iostream> #include <cstring> #include <string> #include <algorithm> using namespace std; const int N = 1e5+10; typedef long long ll; //中位数性质:每个点到中位数距离

P2512 [HAOI2008]糖果传递 - 贪心+中位数【环形均分纸牌问题】

P2512 [HAOI2008]糖果传递 Sol: 环形均分纸牌问题 考虑最基本的均分纸牌问题,相当于将环从1与n之间断开. 令\(res_i\)表示第\(i\)个人达到平均值所用步数,ave$表示糖果的平均数. 则 \(res_1=a_1-ave\) \(res_2=a_2-ave+res_1=a_1+a_2+2*ave\) \(res_3=a_3-ave+res_2=a_1+a_2+a_3-3*ave\) \(\dots\) \(res_i=a_i-ave+res_{i-1}=\sum_{j

环形均分纸牌的可链化处理证明

题目概括: 有N堆纸牌纸牌成环形.每次能够将一堆纸牌向相邻的另一堆转移一张,求最少转移多少次能够使每堆纸牌的数量一样多? 显然: 对于每一个连接处是单向传递的. 反证法: 若不成立,则传递示图定如下所示: 一. 此时,我们可以找出传递的值最小的一处的传递值 ,然后将每处都减小此值.显然是等效且更优的. 所以不可能存在这种情况. 二. 对于这种情况,我们可以发现都是有A传递至B,那么我们可以取消D的 其中一端的传递,由另一端完成,显然是可以做到的. 其他的情况都以此类推. 原文地址:https:/

bzoj3032 七夕祭题解

题面 TYVJ七夕祭和11区的夏祭的形式很像.矩形的祭典会场由N排M列共计N×M个摊点组成.虽然摊点种类繁多,不过cl只对其中的一部分摊点感兴趣,比如章鱼烧.苹果糖.棉花糖.射的屋--什么的.Vani预先联系了七夕祭的负责人zhq,希望能够通过恰当地布置会场,使得各行中cl感兴趣的摊点数一样多,并且各列中cl感兴趣的摊点数也一样多. 不过zhq告诉Vani,摊点已经随意布置完毕了,如果想满足cl的要求,唯一的调整方式就是交换两个相邻的摊点.两个摊点相邻,当且仅当他们处在同一行或者同一列的相邻位置

[Poetize II]七夕祭

描述 Description TYVJ七夕祭和11区的夏祭的形式很像.矩 形的祭典会场由N排M列共计N×M个摊点组成.虽然摊点种类繁多,不过cl只对其中的一部分摊点感兴趣,比如章鱼烧.苹果糖.棉花糖.射的屋……什么的. Vani预先联系了七夕祭的负责人zhq,希望能够通过恰当地布置会场,使得各行中cl感兴趣的摊点数一样多,并且各列中cl感兴趣的摊点数也一样多.    不 过zhq告诉Vani,摊点已经随意布置完毕了,如果想满足cl的要求,唯一的调整方式就是交换两个相邻的摊点.两个摊点相邻,当且仅