【BZOJ 3032】 七夕祭
【题目链接】
https://www.lydsy.com/JudgeOnline/problem.php?id=3032
【算法】
交换左右两个相邻格子的摊点,不会改变这一行的摊点个数
交换上下两个相邻格子的摊点,不会改变这一列的摊点个数
因此,题目中所要求的两个问题是独立的,可以分别计算,以第一问 : 每列摊点个数相等,进行讨论 :
我们将每列中的初始摊点个数记为Ai,如果感兴趣的摊点总数不能被M整除,则无解,否则,等价于一个“环形均分纸牌”的问题,
如果不允许“环形传递”,那么最少移动步数为 sigma( | Si | ),Si为Ai - T / M的前缀和
如果允许,仔细思考后会发现,一定有一种最优解的方案,使得环上两个人不进行传递,考虑将环断开 :
假设断开位置为k,那么断开后,每个人的纸牌个数和前缀和分别为 :
Ak+1 Sk+1 - Sk
Ak+2 Sk+2 - Sk
...
Am Sm - Sk
A1 S1 + Sm - Sk
...
Ak Sk + Sm - Sk
因为Sm = 0,所以,前缀和数组与一般情况的差别就是每个位置都减了Sk
所以若断开位置为k,最少交换次数为 : sigma( | Si - Sk| ) , 当Sk取前缀和数组S的中位数时,这个式子的值最小,也就是说,我们将S数组从小到大排序,取中位数Sk就是最优解
那么,这道题就迎刃而解了!
【代码】
#include<bits/stdc++.h>
using namespace std;
#define MAXN 100010 struct pos
{
int x,y;
} a[MAXN]; int i,N,M,T;
long long ans;
long long s[MAXN]; inline void solve1()
{
int i;
memset(s,,sizeof(s));
for (i = ; i <= T; i++) s[a[i].y]++;
for (i = ; i <= M; i++) s[i] -= T / M;
for (i = ; i <= M; i++) s[i] += s[i-];
sort(s+,s+M+);
for (i = ; i <= M; i++) ans += abs(s[i] - s[(M+)>>]);
}
inline void solve2()
{
int i;
memset(s,,sizeof(s));
for (i = ; i <= T; i++) s[a[i].x]++;
for (i = ; i <= N; i++) s[i] -= T / N;
for (i = ; i <= N; i++) s[i] += s[i-];
sort(s+,s+N+);
for (i = ; i <= N; i++) ans += abs(s[i] - s[(N+)>>]);
}
int main()
{ scanf("%d%d%d",&N,&M,&T);
for (i = ; i <= T; i++) scanf("%d%d",&a[i].x,&a[i].y);
if (T % N != && T % M != )
{
printf("impossible");
return ;
}
if (T % M == && T % N != )
{
printf("column ");
solve1();
} else if (T % M != && T % N == )
{
printf("row ");
solve2();
} else
{
printf("both ");
solve1();
solve2();
}
printf("%lld\n",ans); return ; }
【BZOJ 3032】 七夕祭的更多相关文章
- BZOJ3032 七夕祭
https://remmina.github.io/BZPRO/JudgeOnline/3032.html 题目 背景 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ 今年举办了一次线 ...
- [Poetize II]七夕祭
描述 Description TYVJ七夕祭和11区的夏祭的形式很像.矩 形的祭典会场由N排M列共计N×M个摊点组成.虽然摊点种类繁多,不过cl只对其中的一部分摊点感兴趣,比如章鱼烧.苹果糖.棉花糖. ...
- 2018.11.3 Nescafe18 T1 七夕祭
题目 背景 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是 TYVJ 今年举办了一次线下七夕祭.Vani 同学今年成功邀请到了 cl 同学陪他来共度七夕,于是他们决定去 TYVJ七夕祭游玩. ...
- JZOJ 3382. 【NOIP2013模拟】七夕祭
3382. [NOIP2013模拟]七夕祭 Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits Goto Problem ...
- [JZOJ3382] [NOIP2013模拟] 七夕祭 解题报告
Description 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. ...
- bzoj3032 七夕祭题解
题面 TYVJ七夕祭和11区的夏祭的形式很像.矩形的祭典会场由N排M列共计N×M个摊点组成.虽然摊点种类繁多,不过cl只对其中的一部分摊点感兴趣,比如章鱼烧.苹果糖.棉花糖.射的屋--什么的.Vani ...
- AcWing:105. 七夕祭(前缀和 + 中位数 + 分治 + 贪心)
七夕节因牛郎织女的传说而被扣上了「情人节」的帽子. 于是TYVJ今年举办了一次线下七夕祭. Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. TYVJ七夕祭和11 ...
- 【NOIP2013模拟】七夕祭
题目描述七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. TYVJ七夕祭和 ...
- AcWing 105. 七夕祭
七夕节因牛郎织女的传说而被扣上了「情人节」的帽子. 于是TYVJ今年举办了一次线下七夕祭. Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. TYVJ七夕祭和11 ...
随机推荐
- CAD得到多行文本(com接口VB语言)
主要用到函数说明: MxDrawXCustomFunction::Mx_GetMTextContent 得到多行文本的,不包括格式控制符中的字符串值,详细说明如下: 参数 说明 LONG lId 多行 ...
- Spring框架系列(二)--装配和注入Bean
企业日常开发中,几乎都是Spring系的框架,无论是SSM.还是现在大火的SpringBoot+JPA/MyBatis,使用最大的目的就是简化开发 基本模块: 核心容器:Beans.Core.Cont ...
- Java排序算法全
目录 Java排序算法代码 零. 排序基类 一. 选择排序 二. 插入排序 三. 希尔排序 四. 归并排序 1. 自顶向下 2. 自底向上 五. 快速排序 1. 基本版 2. 双路切分版 3. 三路切 ...
- springBoot启动及发布
1.在项目编辑器(IDEA)中启动 运行springBoot项目Application类中main方法,这两个按钮都可以.如下图: 当然还有我们配置的启动按钮,这是最常用的启动方式,不再赘述,如下图: ...
- CF2B The least round way
[题解] 可以发现10的因数除了1和10之外只有2和5了,那么走过的路径上各个数字的2的因数个数之和.5的因数个数之和中较小的一个即是答案.这样的话DP即可.同时需要注意有0的情况,有0的时候有一个答 ...
- Leetcode 135.分糖果
分发糖果 老师想给孩子们分发糖果,有 N 个孩子站成了一条直线,老师会根据每个孩子的表现,预先给他们评分. 你需要按照以下要求,帮助老师给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果. 相邻的孩 ...
- lnmp的安装--nginx
1.nginx的安装 安装所需环境 Nginx 是 C语言 开发,建议在 Linux 上运行,当然,也可以安装 Windows 版本,本篇则使用 CentOS 7 作为安装环境. 一. gcc 安装安 ...
- HDU 1325 拓扑排序
根据题目所给的3个不符合情况的条件,一个个判断图是否符合这3个条件即可 1.不能出现内部环,拓扑排序判断 2.不能有超过1个点的入度为0,因为只有一个树根 3.每个点最多一个入度 这里要注意的一点是这 ...
- [luoguP1134] 阶乘问题(数论)
传送门 我直接用 long long 暴力,居然过了 ——代码 #include <cstdio> int n; long long x, ans = 1; int main() { in ...
- jQuery下拉列表操作(转)
转地址:http://www.cnblogs.com/yaoshiyou/archive/2010/08/24/1806939.html jQuery获取Select选择的Text和Value:语法解 ...