博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ4893 项链分赃
阅读量:4506 次
发布时间:2019-06-08

本文共 1613 字,大约阅读时间需要 5 分钟。

第一次出题233

先给出结论,切的刀数一定小于等于颜色个数。

所以暴力判掉1和2,剩下输出3就行了。

你肯定会问“为什么?!”

让我尝试证明一下这个东西。

--------------------------------以下开始证(瞎)明(扯)环节--------------------------------

假设地球是一个完美的球体,而且气温和气压的变化是连续的,那么地球上一定存在一对相对的点气温和气压都相等。

证明:

假设你和你的女朋友都绕赤道走了半圈,且时刻保持你们两个所处的位置相对。

我们把赤道上气温气压的图像画出来,大概是这个样子的:

你初始在A,你女朋友初始在B,最终你们两个交换位置,那么你和你的女朋友一定存在某个时刻气压相等,我们把气压相等的那两个点拿出来。

把所有这样类似赤道的弧都这么做得到两点,并把这两点都画出来,大概是这个样子:

你初始在A,走的路线为绿线,你女朋友初始在B,走的路线为红线,走的过程时刻保持气压相等,最终交换位置,那么中途肯定存在一个点(点C),使得你和你女朋友气温气压都相等。

用数学语言描述一下就是,存在一个点(x,y,z),使得f(x,y,z)=f(-x,-y,-z).

那么这个地球问题就证(扯)完了。

到现在你可能觉得我在扯淡,所以这跟这道题有什么关系呢。

我们先把这个项链从离散变为连续的,即如果以前是这样:

那么我们把它变成这样:

可以发现如果从中间切开,不会影响答案。

假如只有两个颜色,设整个项链为1,你切两刀分为了三段,长度分别为$x^2$,$y^2$,$z^2$,那么满足$x^2+y^2+z^2=1$,它对应地球上的一个点(x,y,z),x,y,z的两个根分别对应分给海盗1和2。

比如$x=\frac{\sqrt{2}}2$,$y=-\frac{\sqrt{3}}3$,$z=\frac{\sqrt{6}}6$,x,z是正数就意味着给海盗1,y是负数就意味着给海盗2.

那么又因为变化是连续的,所以必然存在f(x,y,z)=f(-x,-y,-z),这表明两个海盗交换后没有变,也就是每种颜色数目都相等。

当颜色数更多的时候,就相当于k维球做这些事情,方法基本相同。

如果你能看懂我丑陋的证明,应该会恍然大悟,拓扑学就是这么的美妙。

#include 
#include
using namespace std;#define mk(a,b) make_pair(a,b)int n,s[3],t[3],a[100005];map
>,int> mp;int main() { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]),s[a[i]]++; for(int i=1;i<=n;i++) { t[a[i]]++; if(s[0]==t[0]*2&&s[1]==t[1]*2&&s[2]==t[2]*2) return puts("1"),0; } t[0]=t[1]=t[2]=0; for(int i=1;i<=n;i++) { t[a[i]]++; if(mp[mk(t[0]-s[0]/2,mk(t[1]-s[1]/2,t[2]-s[2]/2))]) return puts("2"),0; mp[mk(t[0],mk(t[1],t[2]))]=1; } return puts("3"),0;}

转载于:https://www.cnblogs.com/juruolty/p/6806029.html

你可能感兴趣的文章
Ubuntu/CentOS下使用脚本自动安装 Docker
查看>>
源码解读Mybatis List列表In查询实现的注意事项
查看>>
POJ 2311 Cutting Game(二维SG+Multi-Nim)
查看>>
1978 Fibonacci数列 3
查看>>
1225 八数码难题
查看>>
C#控件的闪烁问题解决方法总结
查看>>
js 冒泡事件与解决冒泡事件
查看>>
2018-2019赛季多校联合新生训练赛第七场(2018/12/16)补题题解
查看>>
后台全选功能以及数据的提交方法
查看>>
Android 动画效果 及 自定义动画
查看>>
const与#define相比有什么不同?
查看>>
Eclipse4.7 SpringIDE插件的安装
查看>>
C#面向对象基础
查看>>
adb server is out of date. killing...
查看>>
Jquery页面加载效果
查看>>
ios对new Date() 的兼容问题
查看>>
Spark发展现状与战线
查看>>
Charles常用设置
查看>>
filebeat
查看>>
如何在Bitmap中画图?(MFC)
查看>>