【NOIP2013模拟】七夕祭
题目描述
七夕节因牛郎织女的传说而被扣上了「情人节」的帽子。于是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, 接下来输出最小交换次数,与字符串之间用一个空格隔开。
题面分析
假设满足每行(列)摊点一样多,那么每行该有t/n(t/m)个点。那么,我们可以由此将row/column/both/impossible判断出来。设b[i]为第i行该多放多少个点才能到达平均,c[i]则为列。(负数我们也不怂他)很明显,如果想均分纸牌,呵呵呵。(~那AC离开千里之外,他不再回来~)设 bi 的前缀和为 si。如果从第k个位置开始,那么第i堆和第i+1堆交换的纸牌数就是|si-sk|。总代价就是|s1-sk|+|s2-sk|+|s3-sk|+……+|sn-sk|。(绞尽脑汁冥思苦想ing)
(三年后)啊!!!当k为1~n的中位数时,该式有最小值。。。。。。
那么我们就可以约掉其中一重循环,很好,我会给你一个奖励,那就是——AC(别想着gunpla之类的,不存在的)。
#include<cstdio>
#include<cmath>
#include<algorithm>
#define FK 100001
using namespace std;
long long n,m,t,a,a1,ans,h[FK],l[FK],s[FK],s1[FK],b[FK],c[FK],k;
int i,j;
int main()
{
freopen("a.in","r",stdin);
scanf("%lld%lld%lld",&n,&m,&t);
for (i=1;i<=t;i++)
{
scanf("%lld%lld",&a,&a1);
h[a]++;
l[a1]++;
}
for (i=1;i<=n;i++)
{
b[i]=h[i]-t/n;
s[i]=s[i-1]+b[i];
}
sort(s+1,s+n+1);
for (i=1;i<=m;i++)
{
c[i]=l[i]-t/m;
s1[i]=s1[i-1]+c[i];
}
sort(s1+1,s1+m+1);
if (t%n!=0 && t%m!=0)
{
printf("%s","impossible");
}
if (t%n==0 && t%m!=0)
{
k=(1+n)/2;
for (i=1;i<=n;i++)
{
ans+=abs(s[i]-s[k]);
}
printf("%s%lld","row ",ans);
}
if (t%n!=0 && t%m==0)
{
k=(1+m)/2;
for (i=1;i<=m;i++)
{
ans+=abs(s1[k]-s1[i]);
}
printf("%s%lld","column ",ans);
}
if (t%n==0 && t%m==0)
{
k=(1+n)/2;
for (i=1;i<=n;i++)
{
ans+=abs(s[k]-s[i]);
}
k=(1+m)/2;
for (i=1;i<=m;i++)
{
ans+=abs(s1[k]-s1[i]);
}
printf("%s%lld","both ",ans);
}
}
【NOIP2013模拟】七夕祭的更多相关文章
- [JZOJ3382] [NOIP2013模拟] 七夕祭 解题报告
Description 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ今年举办了一次线下七夕祭.Vani同学今年成功邀请到了cl同学陪他来共度七夕,于是他们决定去TYVJ七夕祭游玩. ...
- JZOJ 3382. 【NOIP2013模拟】七夕祭
3382. [NOIP2013模拟]七夕祭 Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits Goto Problem ...
- JZOJ 3383. 【NOIP2013模拟】太鼓达人
3383. [NOIP2013模拟]太鼓达人 (Standard IO) Time Limits: 1000 ms Memory Limits: 131072 KB Detailed Limits ...
- [JZOJ3383] [NOIP2013模拟] 太鼓达人 解题报告(数位欧拉)
来源:XLk 摘录 HDU2894 Description 七夕祭上,Vani牵着cl的手,在明亮的灯光和欢乐的气氛中愉快地穿行.这时,在前面忽然出现了一台太鼓达人机台,而在机台前坐着的是刚刚被精英队 ...
- [Poetize II]七夕祭
描述 Description TYVJ七夕祭和11区的夏祭的形式很像.矩 形的祭典会场由N排M列共计N×M个摊点组成.虽然摊点种类繁多,不过cl只对其中的一部分摊点感兴趣,比如章鱼烧.苹果糖.棉花糖. ...
- BZOJ3032 七夕祭
https://remmina.github.io/BZPRO/JudgeOnline/3032.html 题目 背景 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ 今年举办了一次线 ...
- 【NOIP2013模拟】终极武器(经典分析+二分区间)
No.2. [NOIP2013模拟]终极武器 题意: 给定你一些区间,然后让你找出\(1\sim 9\)中的等价类数字. 也就是说在任何一个区间里的任何一个数,把其中后\(k\)位中的某一位换成等价类 ...
- 2018.11.3 Nescafe18 T1 七夕祭
题目 背景 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是 TYVJ 今年举办了一次线下七夕祭.Vani 同学今年成功邀请到了 cl 同学陪他来共度七夕,于是他们决定去 TYVJ七夕祭游玩. ...
- JZOJ 3493. 【NOIP2013模拟联考13】三角形
3493. [NOIP2013模拟联考13]三角形(triangle) (File IO): input:triangle.in output:triangle.out Time Limits: 10 ...
随机推荐
- JavaScript 手写 setTimeout 及 同步调用和异步调用
demo let timeout = (sec, num) => { const now = new Date().getTime() // 获取进入方法时的时间 let flag = true ...
- CheckList:ACL 2020 Best Paper
Beyond Accuracy: Behavior Testing of NLP Models with CheckList. Marco Tulio Ribeiro, Tongshuang Wu, ...
- python设计模式之模板模式
python设计模式之模板模式 编写优秀代码的一个要素是避免冗余.在面向对象编程中,方法和函数是我们用来避免编写冗余代码的重要工具. 现实中,我们没法始终写出100%通用的代码.许多算法都有一些(但并 ...
- python设计模式之原型模式
python设计模式之原型模式 对于原型模式而言,其中最主要的部分就是关于一个对象的复制,其中就包含两个方面:1.浅复制:2.深复制.具体的区别请看我相关的随笔.这里简略的说明一下,浅复制就等于对 ...
- 为 Eureka 添加 Http Basic 认证
简介 在网络世界中,任何网络中的服务都是不安全的,为了使我们的 Eureka 服务更加安全,我们可以添加各种各样的认证方式,以使客户端在提供相应的证明之后才能够注册到 Eureka 中.而这次我们就添 ...
- Golang gRPC学习(04): Deadlines超时限制
为什么要使用Deadlines 当我们使用gRPC时,gRPC库关系的是连接,序列化,反序列化和超时执行.Deadlines 允许gRPC客户端设置自己等待多长时间来完成rpc操作,直到出现这个错误 ...
- 牛X!看完阿里P8架构师推荐的spring三剑客,成功涨薪5k
一直以来,Spring都被Java程序员视为杀手级别的应用,是为简化Java EE应用程序的开发为目标而创建的.Spring可以做很多事情,它为企业级开发提供给了丰富的功能,但是这些功能的底层都依赖于 ...
- SpringMVC实现客户端跳转
之前无论是/index跳转到index.jsp 还是/addProduct 跳转到showProduct.jsp,都是服务端跳转. 这一篇练习如何进行客户端跳转 @ 目录 修改IndexControl ...
- 多线程系列(二)之Thread类
在上一遍文章中讲到多线程基础,在此篇文章中我们来学习C#里面Thread类.Thread类是在.net framework1.0版本中推出的API.如果对线程的概念还不太清楚 的小伙伴请阅读我的上一遍 ...
- kvm-virtualization – 删除“孤儿”libvirt快照
原文链接:https://codeday.me/bug/20181110/371346.html 创建快照: virsh snapshot-create-as --domain prod snap - ...