描述 Description
  TYVJ七夕祭和11区的夏祭的形式很像。矩 形的祭典会场由N排M列共计N×M个摊点组成。虽然摊点种类繁多,不过cl只对其中的一部分摊点感兴趣,比如章鱼烧、苹果糖、棉花糖、射的屋……什么的。 Vani预先联系了七夕祭的负责人zhq,希望能够通过恰当地布置会场,使得各行中cl感兴趣的摊点数一样多,并且各列中cl感兴趣的摊点数也一样多。
    不
过zhq告诉Vani,摊点已经随意布置完毕了,如果想满足cl的要求,唯一的调整方式就是交换两个相邻的摊点。两个摊点相邻,当且仅当他们处在同一行或
者同一列的相邻位置上。由于zhq率领的TYVJ开发小组成功地扭曲了空间,每一行或每一列的第一个位置和最后一个位置也算作相邻。现在Vani想知道他
的两个要求最多能满足多少个。在此前提下,至少需要交换多少次摊点。

题解:
看了题目感觉好神,真的是第一题?
然后就不会做了,膜拜题解,顿时醒悟:
 实际上就是环形均分纸牌,贪心,减去平均值后构造前缀和数列取中位数即可。想不出贪心,枚举起始点O(n^2)也能70分。

好神!如果只有行,那么就是一个显然的环形均分纸牌,如果加上列的话,我们发现行列之间互不影响!所以在列上也做一遍就行了。
orz 好题,怒赞!
代码:

 #include<cstdio>

 #include<cstdlib>

 #include<cmath>

 #include<cstring>

 #include<algorithm>

 #include<iostream>

 #include<vector>

 #include<map>

 #include<set>

 #include<queue>

 #include<string>

 #define inf 1000000000

 #define maxn 150000

 #define maxm 500+100

 #define eps 1e-10

 #define ll long long

 #define pa pair<int,int>

 #define for0(i,n) for(int i=0;i<=(n);i++)

 #define for1(i,n) for(int i=1;i<=(n);i++)

 #define for2(i,x,y) for(int i=(x);i<=(y);i++)

 #define for3(i,x,y) for(int i=(x);i>=(y);i--)

 #define mod 1000000007

 using namespace std;

 inline int read()

 {

     int x=,f=;char ch=getchar();

     while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}

     while(ch>=''&&ch<=''){x=*x+ch-'';ch=getchar();}

     return x*f;

 }
ll n,m,t,a[maxn],b[maxn],c[maxn],ans; int main() { n=read();m=read();t=read();
for1(i,t)a[read()]++,b[read()]++;
if(t%n==)
{
ll tmp=t/n;
c[]=;
for2(i,,n)c[i]=c[i-]+a[i-]-tmp;
sort(c+,c+n+);
ll x=c[n>>];
for1(i,n)ans+=abs(c[i]-x);
}
if(t%m==)
{
ll tmp=t/m;
c[]=;
for2(i,,m)c[i]=c[i-]+b[i-]-tmp;
sort(c+,c+m+);
ll x=c[m>>];
for1(i,m)ans+=abs(c[i]-x);
}
if(t%n==)
{
if(t%m==)printf("both %lld\n",ans);else printf("row %lld\n",ans);
}
else
{
if(t%m==)printf("column %lld\n",ans);else printf("impossible\n");
} return ; }

为毛一直WA了10分!

发现我WA的原因是我中位数找错了:
中位数应该是 a[(n+1)>>1]
而我是这样的 a[n>>1]
唉。。。
代码:

 #include<cstdio>

 #include<cstdlib>

 #include<cmath>

 #include<cstring>

 #include<algorithm>

 #include<iostream>

 #include<vector>

 #include<map>

 #include<set>

 #include<queue>

 #include<string>

 #define inf 1000000000

 #define maxn 150000

 #define maxm 500+100

 #define eps 1e-10

 #define ll long long

 #define pa pair<int,int>

 #define for0(i,n) for(int i=0;i<=(n);i++)

 #define for1(i,n) for(int i=1;i<=(n);i++)

 #define for2(i,x,y) for(int i=(x);i<=(y);i++)

 #define for3(i,x,y) for(int i=(x);i>=(y);i--)

 #define mod 1000000007

 using namespace std;

 inline int read()

 {

     int x=,f=;char ch=getchar();

     while(ch<''||ch>''){if(ch=='-')f=-;ch=getchar();}

     while(ch>=''&&ch<=''){x=*x+ch-'';ch=getchar();}

     return x*f;

 }
inline ll f(ll x){return x>?x:-x;}
int n,m;
ll t,a[maxn],b[maxn],c[maxn],ans; int main() { freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); n=read();m=read();t=read();
for1(i,t)a[read()]++,b[read()]++;
if(t%n==)
{
ll tmp=t/n;
c[]=;
for2(i,,n)c[i]=(ll)c[i-]+a[i-]-tmp;
sort(c+,c+n+);
ll x=c[n+>>];
for1(i,n)ans+=f(c[i]-x);
}
if(t%m==)
{
ll tmp=t/m;
c[]=;
for2(i,,m)c[i]=(ll)c[i-]+b[i-]-tmp;
sort(c+,c+m+);
ll x=c[m+>>];
for1(i,m)ans+=f(c[i]-x);
}
if(t%n==)
{
if(t%m==)printf("both %lld\n",ans);else printf("row %lld\n",ans);
}
else
{
if(t%m==)printf("column %lld\n",ans);else printf("impossible\n");
} return ; }

[Poetize II]七夕祭的更多相关文章

  1. BZOJ3032 七夕祭

    https://remmina.github.io/BZPRO/JudgeOnline/3032.html 题目 背景 七夕节因牛郎织女的传说而被扣上了「情人节」的帽子.于是TYVJ 今年举办了一次线 ...

  2. 2018.11.3 Nescafe18 T1 七夕祭

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

  3. JZOJ 3382. 【NOIP2013模拟】七夕祭

    3382. [NOIP2013模拟]七夕祭 Time Limits: 1000 ms  Memory Limits: 131072 KB  Detailed Limits   Goto Problem ...

  4. [JZOJ3382] [NOIP2013模拟] 七夕祭 解题报告

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

  5. bzoj3032 七夕祭题解

    题面 TYVJ七夕祭和11区的夏祭的形式很像.矩形的祭典会场由N排M列共计N×M个摊点组成.虽然摊点种类繁多,不过cl只对其中的一部分摊点感兴趣,比如章鱼烧.苹果糖.棉花糖.射的屋--什么的.Vani ...

  6. AcWing:105. 七夕祭(前缀和 + 中位数 + 分治 + 贪心)

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

  7. 【NOIP2013模拟】七夕祭

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

  8. AcWing 105. 七夕祭

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

  9. [Poetize II]太鼓达人

    描述 Description 鼓的主要元件是M个围成一圈的传感器.每个传 感器都有开和关两种工作状态,分别用1和0表示.显然,从不同的位置出发沿顺时针方向连续检查K个传感器可以得到M个长度为K的01串 ...

随机推荐

  1. 关于怎么将Quartus和Nios程序一起固化到FPGA里面

    系统:win8.1 SDK:Quartus II 14.1 FPGA:Cyclone IV 1.将Quartus生成的.pof文件(配置Flash即可自动生成,这里不讨论),与Nios生成的.elf文 ...

  2. 关于jsp web项目中的javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver错误

    错误: javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver org.apache.j ...

  3. css考核点整理(二)-css层叠机制

    css层叠机制 外边距重叠就是margin-collapse. 在CSS当中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距.这种合并外边距的方式被称为折叠,并且因 ...

  4. warning:This application is modifying the autolayout engine from a background thread

    警告提示:This application is modifying the autolayout engine from a background thread, which can lead to ...

  5. EXCEL插件

    http://www.cnblogs.com/brooks-dotnet/category/233027.html http://www.360doc.com/content/15/0713/00/1 ...

  6. jsp带参转链接

    1.jsp:forward page <jsp:forward page="show.jsp"> <jsp:param name="data" ...

  7. VS2015升级Update2之后Cordova程序提示:此应用程序无法在此电脑上运行

    VS2015在升级到Update2之后,有可能出现如下异常,在运行Cordova项目时提示: 查看输出面板会有乱码错误信息: 出现此问题的原因是在于npm程序损坏了.vs调用的npm程序并不是在nod ...

  8. for循环,如何结束多层for循环

    采用标签方式跳出,指定跳出位置, a:for(int i=0;i<n;i++) { b:for(int j=0;j<n;j++) { if(n=0) { break a; } } }

  9. 关于ASIHTTPRequest连续请求,并发连续,间隔时间很小崩溃问题

    在不停的刷新ASIHttpRequest的网络请求时,总是在刷新几次之后,整个app崩溃掉.我的app使用的ARC模式,以为可以自动释放到request的请求.经过摸索,还是需要在dealloc函数加 ...

  10. iOS支付 IPAPayment demo iTunes Conection里面添加测试帐号,添加商品,实现购买过程

    https://github.com/ccguo/IAPPaymentDemo 发一个demo