七夕祭

题目链接

AcWing_105 七夕祭

题目描述

七夕节因牛郎织女的传说而被扣上了「情人节」的帽子。

于是 TYVJTYVJTYVJ 今年举办了一次线下七夕祭。

VaniVaniVani 同学今年成功邀请到了 clclcl 同学陪他来共度七夕,于是他们决定去 TYVJTYVJTYVJ 七夕祭游玩。

TYVJTYVJTYVJ 七夕祭和 111111 区的夏祭的形式很像。

矩形的祭典会场由 NNN 排 MMM 列共计 N×MN×MN×M 个摊点组成。

虽然摊点种类繁多,不过 clclcl 只对其中的一部分摊点感兴趣,比如章鱼烧、苹果糖、棉花糖、射的屋……什么的。

VaniVaniVani 预先联系了七夕祭的负责人 zhqzhqzhq,希望能够通过恰当地布置会场,使得各行中 clclcl 感兴趣的摊点数一样多,并且各列中 cl 感兴趣的摊点数也一样多。

不过 zhqzhqzhq 告诉 VaniVaniVani,摊点已经随意布置完毕了,如果想满足 cl 的要求,唯一的调整方式就是交换两个相邻的摊点。

两个摊点相邻,当且仅当他们处在同一行或者同一列的相邻位置上。

由于 zhqzhqzhq 率领的 TYVJTYVJTYVJ 开发小组成功地扭曲了空间,每一行或每一列的第一个位置和最后一个位置也算作相邻。

现在 VaniVaniVani 想知道他的两个要求最多能满足多少个。

在此前提下,至少需要交换多少次摊点。

输入格式

第一行包含三个整数 NNN 和 MMM 和 TTT,TTT 表示 cl 对多少个摊点感兴趣。

接下来 TTT 行,每行两个整数 x,yx,yx,y,表示 cl 对处在第 xxx 行第 yyy 列的摊点感兴趣。

输出格式

首先输出一个字符串。

如果能满足 VaniVaniVani 的全部两个要求,输出 bothbothboth;

如果通过调整只能使得各行中 cl 感兴趣的摊点数一样多,输出 rowrowrow;

如果只能使各列中 clclcl 感兴趣的摊点数一样多,输出 columncolumncolumn;

如果均不能满足,输出 impossibleimpossibleimpossible。

如果输出的字符串不是 impossibleimpossibleimpossible, 接下来输出最小交换次数,与字符串之间用一个空格隔开。

数据范围

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

输入样例:

2 3 4
1 3
2 1
2 2
2 3

输出样例:

row 1

思路

由于交换同一列相邻两行的摊位只会改变相关行的“感兴趣摊点数”,交换同一行相邻两列的摊位只会改变相关列的“感兴趣摊点数”,所以可以将问题分成“各列相邻两行的交换”和“各行相邻两列的交换”两部分来解。

以“各行相邻两列的交换”为例。

设 aia_iai​ 为每一列的“感兴趣摊点数”,其中 1≤i≤m1 \le i \le m1≤i≤m ,若问题有解,那么交换完成后,每个 ai′a'_iai′​ 一定都是相等的,即 ttt 可以被 mmm 整除。这样问题就变成了“均分纸牌”问题。

最优的结果一定是只与右侧(或左侧)的摊位交换的。

设 xix_ixi​ 为第 iii 列与 第 i−1i-1i−1 列交换的次数(可以为负),aˉ=i∗tm\bar{a}=i*\frac{t}{m}aˉ=i∗mt​,那么我们有:
x1=x1x2=a2+x1−aˉx3=a3+x2−aˉx4=a4+x3−aˉxi=ai+xi−1−aˉx_1=x_1\\ x_2=a_2+x_1-\bar{a}\\ x_3=a_3+x_2-\bar{a}\\ x_4=a_4+x_3-\bar{a}\\ x_i=a_i+x_{i-1}-\bar{a}x1​=x1​x2​=a2​+x1​−aˉx3​=a3​+x2​−aˉx4​=a4​+x3​−aˉxi​=ai​+xi−1​−aˉ

如果把所有式子都用 x1x_1x1​ 来表示,则有:
x1=x1−0x2=x1−(aˉ−a2)x3=x1−(2×aˉ−a2−a3)x4=x1−(3×aˉ−a2−a3−a4)xi=x1−(i×aˉ−∑j=1iai)x_1=x_1-0\\ x_2=x_1-(\bar{a}-a_2)\\ x_3=x_1-(2 \times \bar{a}-a_2-a_3)\\ x_4=x_1-(3 \times \bar{a}-a_2-a_3-a_4)\\ x_i=x_1-(i\times \bar{a}-\sum_{j=1}^i a_i)x1​=x1​−0x2​=x1​−(aˉ−a2​)x3​=x1​−(2×aˉ−a2​−a3​)x4​=x1​−(3×aˉ−a2​−a3​−a4​)xi​=x1​−(i×aˉ−j=1∑i​ai​)

于是问题就变成了,求一个最优的 xkx_kxk​,使得 ∑i=1n∣xk−(i×aˉ−∑j=1iai)∣\sum_{i=1}^n |x_k-(i\times \bar{a}-\sum_{j=1}^i a_i)|∑i=1n​∣xk​−(i×aˉ−∑j=1i​ai​)∣ 最小。这实际上就是“货仓选址”问题,其中 ∣xk−(i×aˉ−∑j=1iai)∣|x_k-(i\times \bar{a}-\sum_{j=1}^i a_i)|∣xk​−(i×aˉ−∑j=1i​ai​)∣ 就相当于“货仓选址”问题中每个货仓的地址。很显然,只有 xkx_kxk​ 为所有 xix_ixi​ 的中位数时,问题的答案才有最小值,详情请见。

由于:xk=∑i=1n∣xk−(i×aˉ−∑j=1iai)∣x_k=\sum_{i=1}^n |x_k-(i\times \bar{a}-\sum_{j=1}^i a_i)|xk​=i=1∑n​∣xk​−(i×aˉ−j=1∑i​ai​)∣
所以答案的式子还可以表示成:∑i=1n∣(i×aˉ−∑j=1kaj)−(i×aˉ−∑j=1iai)∣\sum_{i=1}^n |(i\times \bar{a}-\sum_{j=1}^k a_j)-(i\times \bar{a}-\sum_{j=1}^i a_i)|i=1∑n​∣(i×aˉ−j=1∑k​aj​)−(i×aˉ−j=1∑i​ai​)∣

若设 si=i×aˉ−∑j=1iais_i=i\times \bar{a}-\sum_{j=1}^i a_isi​=i×aˉ−∑j=1i​ai​,那么最后答案的式子就变成了:
∑i=1n∣sk−si∣\sum_{i=1}^n |s_k-s_i|i=1∑n​∣sk​−si​∣

代码

#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<vector>
#include<algorithm>
using namespace std;
long long n,m,t,x,y;
long long row[100001],col[100001];
long long solve(long long a[100001],long long x)
{int f[100001],s[100001],ans,k;for(int i=1;i<=x;i++){f[i]=a[i]-t/x;s[i]=s[i-1]+f[i];}sort(s+1,s+x+1);if(n&1)//求中位数 k=(x+1)/2;elsek=x/2;ans=0;for(int i=1;i<=x;i++)ans+=abs(s[i]-s[k]);return ans;
}
int main()
{scanf("%lld%lld%lld",&n,&m,&t);for(int i=1;i<=t;i++){scanf("%lld%lld",&x,&y);row[x]++,col[y]++;}if(t%n==0&&t%m==0)printf("both %lld",solve(row,n)+solve(col,m));else if(t%m==0)printf("column %lld",solve(col,m));else if(t%n==0)printf("row %lld",solve(row,n));elseprintf("impossible");return 0;
}

AcWing_105 七夕祭相关推荐

  1. CH - 0502 七夕祭(思维+中位数优化+前缀和优化)

    题目链接:点击查看 题目大意:七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游 ...

  2. 【周末狂欢赛7】【NOIP模拟赛】七夕祭,齿轮(dfs),天才黑客

    文章目录 T1 题目 题解 code T2 题目 题解 code T3 题目 题解 code T1 题目 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Van ...

  3. 【NOIP2013模拟】七夕祭

    题目描述 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. TYVJ七夕祭 ...

  4. AcWing 105. 七夕祭(糖果传递小变种)

    题目传送门 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子. 于是 TYVJ 今年举办了一次线下七夕祭. Vani 同学今年成功邀请到了 cl 同学陪他来共度七夕,于是他们决定去 TYVJ 七夕祭游 ...

  5. 中位数应用-货仓选址-纸牌均分-糖果传递-七夕祭

    1. 货仓选址 描述 在一条数轴上有N家商店,它们的坐标分别为 A[1]~A[N].现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品.为了提高效率,求把货仓建在何处,可以使得货 ...

  6. bzoj3032 七夕祭(蓝书刷题记录)

    引入:经典贪心问题 均分纸牌 有 N 堆纸牌,编号分别为 1,2,-, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动.移牌规则为:在编号为 1 堆上取的纸牌,只 ...

  7. 七夕祭( Poetize系列)

    Description 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. ...

  8. 【NOIP模拟赛】七夕祭(环形均分纸牌)

    七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. TYVJ七夕祭和11区的 ...

  9. 中位数--《算法竞赛进阶指南》(货仓选址和七夕祭问题详解)

    中位数 今天又和大家见面了啦~ 依旧是 <算法竞赛进阶指南>的学习哦~ 中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本.种群或概 ...

最新文章

  1. lpi linux认证权威指南 pdf,LPI Linux认证指南读书笔记
  2. 哪些人交不到真朋友?
  3. 关于PHP程序员解决问题的能力
  4. Go 之父:聊聊我眼中的 Go 语言和环境
  5. 公网对讲机修改对讲机程序_更少的对讲机,对讲机-更多专心,专心
  6. 边缘计算计算机科学与技术,边缘计算现状与展望-ComputerScience-WayneStateUniversity.PDF...
  7. ip别名及其在tcp压力测试时候的作用
  8. 基于JAVA+SpringMVC+Mybatis+MYSQL的医学药品信息管理系统
  9. 新东方java开发待遇_新东方教师薪酬与考核曝光!拿去即用(仅供参考)
  10. python画散点图-Python:matplotlib绘制散点图
  11. 超详细的Python安装和环境搭建教程
  12. SpringBoot 整合 ElasticSearch 实现京东搜索(手把手带你完成一个 “前后端分离项目”)
  13. 如何提升Excel水平?5个Excel常用技巧,学会不加班
  14. gels imagej 图片处理_ImageJ在荧光照片分析中的应用介绍
  15. C语言编程实现数兔子问题
  16. PYNQ开发板使用-使用DMA进行数据搬移(Simple DMA transfer 模式)
  17. sip协议呼叫流程详解
  18. 想买折叠手机的你,了解OLED显示很有必要
  19. CVS命令深入研究 zz
  20. 最近用周立功的IOT3960板子做一个小控制器,现在到了界面美化阶段,各位大侠有没有高招?

热门文章

  1. Java工作岗位汇总,写给迷茫的你!
  2. 20230603-周六随笔
  3. 列车和安全门之间缝隙检测方案
  4. 什么是Oracle?
  5. 13.导数定义及可导与连续的关系
  6. 【flask扩展】使用Flask-Mail发送邮件
  7. 一起来学一点金融及投资常识,防止我们的财富被掠夺
  8. 容联YOYO:国内漫游费取消 国际漫游如何玩?
  9. app混淆加固+防止反编译+360加固
  10. Spark:Stage介绍