acwing 105 七夕祭 中位数 + 前缀和 贪心
七夕节因牛郎织女的传说而被扣上了「情人节」的帽子。
于是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≤1000001≤N,M≤100000,
0≤T≤min(N∗M,100000)0≤T≤min(N∗M,100000),
1≤x≤N1≤x≤N,
1≤y≤M1≤y≤M
输入样例:
2 3 4
1 3
2 1
2 2
2 3
输出样例:
row 1
一开始模拟提交 交了第一个样例就错了 答案是33 我写出37 一脸懵逼 还手推了一遍;然后看了题解,,原来还有这么深得大道理;
首先他说要满足每个行有一样的 每个列有一样的 那就要先记录行列有的总数 hang[0],lie[0] 如果他们mod t 为0那么就可以;
其次思路就是记录每一行每一列的 行列数进行换位置;
这里引入一个问题acwing的104 均分纸牌
按题目的意思就可以从左往右分别先让前者拥有平均数;
这时候可以用前缀和 把每一次前者需要的减掉就好了;
这个题目就相当于一个环形的均分纸牌 ;
如果用纸牌思想的话就会一直循环 所以我们要选择一个 位置 来将交换次数最小话;这里我又要引入个问题 acwing的104货舱选址
这个题目的意思就是选择一个位置将每个地方送到这个位置的长度相加最小;
所以我们这个题目只需要排一下序 选择中间位置 相加就是最小的
下面贴上代码
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long ll;
int asd[100005];
ll clac(int a[],int n){ll ans = 0;for(int i = 1; i <= n; i++){a[i] -= a[0] / n;asd[i] = asd[i - 1] + a[i];}sort(asd + 1,asd + 1 + n);for(int i = 1; i <= n; i++){ans += abs(asd[i] - asd[(n + 1) >> 1]);}return ans;
}
int main(){int n,m,t;cin >> n >> m >> t;int x,y;int heng[100005] = {},lie[100005] = {};for(int i = 1; i <= t; i++){cin >> x >> y;heng[x]++;lie[y]++;}for(int i = 1; i <= n; i++){heng[0] += heng[i];}for(int i = 1; i <= m; i++){lie[0] += lie[i];}if(heng[0] % n == 0 && lie[0] % m == 0) {printf("both %lld\n", clac(heng, n) + clac(lie, m));} else if(heng[0] % n == 0) {printf("row %lld\n", clac(heng, n));} else if(lie[0] % m == 0) {printf("column %lld\n", clac(lie, m));} else puts("impossible");return 0;
}
acwing 105 七夕祭 中位数 + 前缀和 贪心相关推荐
- AcWing 105 七夕祭
题目描述: 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩.TYVJ七夕祭 ...
- AcWing 105. 七夕祭(糖果传递小变种)
题目传送门 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子. 于是 TYVJ 今年举办了一次线下七夕祭. Vani 同学今年成功邀请到了 cl 同学陪他来共度七夕,于是他们决定去 TYVJ 七夕祭游 ...
- 105 七夕祭(环形均分纸牌问题、绝对值不等式)
1. 问题描述: 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是 TYVJ 今年举办了一次线下七夕祭.Vani 同学今年成功邀请到了 cl 同学陪他来共度七夕,于是他们决定去 TYVJ 七夕祭 ...
- 105. 七夕祭【环形均分纸牌问题】
首先你会发现,行交换和列交换是无影响的.故可以分开讨论. 这不就变成了环形均分纸牌的问题了么,和蓝桥杯糖果那题类似. #include<bits/stdc++.h> using names ...
- CH - 0502 七夕祭(思维+中位数优化+前缀和优化)
题目链接:点击查看 题目大意:七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游 ...
- BZOJ3032 七夕祭 均分纸牌问题的变式 (前缀和+中位数)
题目: 背景 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是JoyOI今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去JoyOI七夕祭游玩. 描述 ...
- AcWing 七夕祭
AcWing 七夕祭 Description 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子. 于是TYVJ今年举办了一次线下七夕祭. Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决 ...
- 中位数应用-货仓选址-纸牌均分-糖果传递-七夕祭
1. 货仓选址 描述 在一条数轴上有N家商店,它们的坐标分别为 A[1]~A[N].现在需要在数轴上建立一家货仓,每天清晨,从货仓到每家商店都要运送一车商品.为了提高效率,求把货仓建在何处,可以使得货 ...
- 中位数--《算法竞赛进阶指南》(货仓选址和七夕祭问题详解)
中位数 今天又和大家见面了啦~ 依旧是 <算法竞赛进阶指南>的学习哦~ 中位数(Median)又称中值,统计学中的专有名词,是按顺序排列的一组数据中居于中间位置的数,代表一个样本.种群或概 ...
最新文章
- 【C语言】模拟实现库函数 strcpy(复制字符串内容) 与 strlen(求字符串长度)
- 计算机英语应用研究,计算机英语辅助学习系统的研究与应用-软件工程专业论文.docx...
- “有一个产品经理的女朋友是什么体验?”
- 【Java】深入剖析Java输入输出的那些细节
- geoserver发布瓦片数据_OpenLayers教程十八:多源数据加载之矢量切片
- 深入理解K8S网络原理下
- 996 都升不了职的程序员该如何拯救?
- 解决wordpress后台管理访问速度慢的问题
- VLAN 间 路由——华为(单臂路由)
- 2022中青杯A题-高校数学建模竞赛与课程Sz教育
- 再不奋斗,我们就老了!
- linux下载tkinter模块,Linux升级Python提示Tkinter模块找不到解决
- 【图解】本地IIS局域网内无法访问的问题
- 谷歌html弹出ie页面,如何从谷歌跳转IE,打开指定的网址
- Maven之(九)依赖关系
- 信安学习-day16
- 计算机毕业设计Java服装连锁店后台管理系统(源码+系统+mysql数据库+lw文档)
- iOS 6与iOS 7的增量更新的区别
- Matlab之绘制参考线函数refline和refcurve
- BeeHive原理解析