BZOJ3032 七夕祭
https://remmina.github.io/BZPRO/JudgeOnline/3032.html
题目
背景
七夕节因牛郎织女的传说而被扣上了「情人节」的帽子。于是TYVJ 今年举办了一次线下七夕祭。Vani 同学今年成功邀请到了cl 同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩。
题目描述
TYVJ 七夕祭和11 区的夏祭的形式很像。矩形的祭典会场由N 排M 列共计N×M 个摊点组成。虽然摊点种类繁多,不过cl 只对其中的一部分摊点感兴趣,比如章鱼烧、苹果糖、棉花糖、射的屋……什么的。Vani 预先联系了七夕祭的负责人zhq,希望能够通过恰当地布置会场,使得各行中cl 感兴趣的摊点数一样多,并且各列中cl 感兴趣的摊点数也一样多。不过zhq 告诉Vani,摊点已经布置完毕了,唯一的调整方式就是交换两个相邻的摊点。两个摊点相邻,当且仅当他们处在同一行或者同一列的相邻位置上。由于zhq 率领的TYVJ 开发小组成功地扭曲了空间,每一行或每一列的第一个位置和最后一个位置也算作相邻。现在Vani 想知道他的两个要求最多能满足多少个。在此前提下,至少需要交换多少次摊点。
输入格式
第一行包含三个整数N 和M 和T。T 表示cl 对多少个摊点感兴趣。
接下来T 行,每行两个整数x, y,表示cl 对处在第x 行第y 列的摊点感兴趣。
输出格式
首先输出一个字符串。如果能满足Vani 的全部两个要求,输出both;如果通过调整只能使得各行中cl 感兴趣的摊点数一样多,输出row;如果只能使各列中cl 感兴趣的摊点数一样多,输出column;如果均不能满足,输出impossible。
如果输出的字符串不是impossible, 接下来输出最小交换次数,与字符串之间用一个空格隔开。
样例输入1
2 3 4
1 3
2 1
2 2
2 3
样例输出1
row 1
样例输入2
3 3 3
1 3
2 2
2 3
样例输出2
both 2
数据范围与约定
对于100% 的数据,1≤N, M≤100000,0≤T≤min(NM, 100000),1≤x≤N,1≤y≤M。
题解
答案是分别统计每行和每列感兴趣的摊位数,然后执行两次均分纸牌(也如“酒交易”),还需要证明只需要考虑数量,不需要关心位置
首先考虑列
| 1 | 1 | 1 |
| 1 | 1 | |
| 1 |
必要性:如果能均分,那么关心的摊位的数量一定为列数的倍数
充分性:
知道和为列数的倍数了,因此我们只需要搬动一些摊位,并且不考虑先后顺序的情况下一定能均分= =
如果做不到,说明这个位置仅经过左右移动放不下需要的摊位。但如果这样,说明这几行都是满的(否则摊位的数量不是列数的倍数),符合题目的要求,所以一定能做到。
因此和为列数的倍数等价于能经过左右搬动式每列摊位数相等。
同理可证行的情况
由于移动不改变关心的摊位数量,所以两次移动是独立的。
由于是环形,需要考虑每处打开的链的情况,容易推出公式= =
AC代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<set>
#include<iomanip> #define REP(r,x,y) for(register int r=(x); r<(y); r++)
#define REPE(r,x,y) for(register int r=(x); r<=(y); r++)
#ifdef sahdsg
#define DBG(...) printf(__VA_ARGS__)
#else
#define DBG(...) (void)0
#endif using namespace std;
typedef long long LL;
typedef pair<LL, LL> pll;
typedef pair<int, int> pii; char ch; int f;
template <class T>
inline void read(T &x) {
x=0; f=1; do ch=getchar(); while(!isdigit(ch) && ch!='-');
if(ch=='-') ch=getchar(),f=-1; while(isdigit(ch)) {x=x*10+ch-'0';
ch=getchar();} x*=f;
}
int n,m,t;
#define MAXN 100007
LL h[MAXN], l[MAXN];
int main() {
read(n); read(m); read(t);
memset(h,0,sizeof h), memset(l, 0, sizeof l);
REP(i,0,t) {
int a,b; read(a); read(b);
h[a-1]++, l[b-1]++;
}
bool ish=!(t%n), isl=!(t%m); if(ish&&isl) printf("both"); else if(ish) printf("row"); else if(isl) printf("column"); else {puts("impossible"); return 0;}
LL ans=0;
if(ish) {
h[0]-=t/n;
REP(i,1,n) {
h[i]=h[i]-t/n+h[i-1];
}
sort(h,h+n);
REP(i,0,n/2) {
ans+=abs(h[n-i-1]-h[i]);
}
}
if(isl) {
l[0]-=t/m;
REP(i,1,m) {
l[i]=l[i]-t/m+l[i-1];
}
sort(l,l+m);
REP(i,0,m/2) {
ans+=abs(l[m-i-1]-l[i]);
}
}
printf(" %lld\n", ans);
return 0;
}
BZOJ3032 七夕祭的更多相关文章
- bzoj3032 七夕祭题解
题面 TYVJ七夕祭和11区的夏祭的形式很像.矩形的祭典会场由N排M列共计N×M个摊点组成.虽然摊点种类繁多,不过cl只对其中的一部分摊点感兴趣,比如章鱼烧.苹果糖.棉花糖.射的屋--什么的.Vani ...
- BZOJ3032 七夕祭[中位数]
发现是一个类似于“纸牌均分”的问题.然后发现,只要列数整除目标.行数整除目标就一定可以. 如果只移动列,并不会影响行,也就是同一行不会多不会少.只移动行同理. 所以可以把两个问题分开来看,处理起来互不 ...
- <BZOJ3032>七夕祭
水 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> ...
- [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七夕祭游玩. ...
- AcWing:105. 七夕祭(前缀和 + 中位数 + 分治 + 贪心)
七夕节因牛郎织女的传说而被扣上了「情人节」的帽子. 于是TYVJ今年举办了一次线下七夕祭. Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. TYVJ七夕祭和11 ...
- 【NOIP2013模拟】七夕祭
题目描述七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. TYVJ七夕祭和 ...
随机推荐
- C#语法——事件,逐渐边缘化的大哥。
事件是C#的基础之一,学好事件对于了解.NET框架大有好处. 事件最常见的比喻就是订阅,即,如果你订阅了我的博客,那么,当我发布新博客的时候,你就会得到通知. 而这个过程就是事件,或者说是事件运行的轨 ...
- Linux 软硬链接的区别及目录权限对软硬链接的影响
目录权限的影响 首先,构建实验环境如下图: 有 A.B 两个目录,A 目录下建有 test 文件,且文件中的内容为 "Hello".B 目录下分别创建 test 文件的硬链接 te ...
- 39.QT-Qtxlsx库使用
之前参考博客https://blog.csdn.net/c3060911030/article/details/51560239下载Qtxlsx库,然后编译的时候,显示: error: invalid ...
- Django之路由分发和反向解析
一.路由分发: 路由分发是指:总路由不再直接做路由与视图函数的对应关系,而是将获取的路由分发给下面的app去处理对应关系 from django.conf.urls import url,includ ...
- harris角点检测的简要总结
目录 1. 概述相关 2. 原理详解 1) 算法思想 2) 数学模型 3) 优化推导 3. 具体实现 1) 详细步骤 2) 最终实现 4. 参考文献 1. 概述相关 harris角点检测是一种特征提取 ...
- Java文件上传之SpringMVC实例
一.配置文件 web.xml <?xml version="1.0" encoding="UTF-8"?><web-app version=& ...
- 记一次 c 语言 的 多线程查找 简单实现
//仅供参考学习 1 #define _CRT_SECURE_NO_WARNINGS //屏蔽 vs 的a #include <stdio.h> #include <stdlib.h ...
- Docker-镜像源加速配置
Docker官网镜像服务在境外,拉取速度很比较慢,所以我们安装完Docker后一般会切换镜像源,将镜像源切换到国内以此达到加速的目的. 国内比较常用的Docker Hub镜像服务:1.阿里云2.Dao ...
- 阿里云OCR图片转换成文字识别调用
using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Drawing; using S ...
- 下载合适的tomcat版本
Tomcat因技术先进.性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器.对于新手来讲,如何下载合适的tomcat版本呢?今天我们以下 ...