[杂题 神证明] BZOJ 4893 项链分赃
来源:互联网 发布:ppt制作视频软件 编辑:程序博客网 时间:2024/05/29 17:21
这个题的证明有点妙啊
结论是 切得刀数不超过颜色数
先扯那个地球问题 二维的情况也就是在圆周上 因为两者互换位置 两条图线必定有交点 就证完了
三维 在球面上 我们固定一维转动 看做无数个圆周 都可以找出两点气压一样 又因为函数连续 那么这两点的移动也是连续的 这样就锁定了一维必定相等 也就把问题压低了一维 也就是跟上面同理
然后这有什么用呢 这其实是跟两种颜色对应的问题是等价的
首先在这个题里离散和连续没什么大问题
然后任一切法一一对应到了球面上任一点
找到两点气压气温相同 也就是红色的差和绿色的差相同 那么说明差就是0
至于三种颜色 在四维球面上做就好了 反正证明是归纳式的
BTW 【官方双语】用球面映射巧解分赃难题:拓扑学的另一妙用
#include<cstdio>#include<cstdlib>#include<algorithm>#include<set>using namespace std;#define mp(a,b) make_pair(a,b)const int N=100005;int n,a[N],b[3],c[3];set<pair<int,pair<int,int> > > Set;int main(){ freopen("t.in","r",stdin); freopen("t.out","w",stdout); scanf("%d",&n); for (int i=1;i<=n;i++) scanf("%d",a+i),b[a[i]]++; b[0]>>=1; b[1]>>=1; b[2]>>=1; for (int i=1;i<=n;i++){ c[a[i]]++; if (b[0]==c[0] && b[1]==c[1] && b[2]==c[2]) return printf("1\n"),0; } c[0]=c[1]=c[2]=0; for (int i=1;i<=n;i++){ c[a[i]]++; if (Set.count(mp(c[0]-b[0],mp(c[1]-b[1],c[2]-b[2])))) return printf("2"),0; Set.insert(mp(c[0],mp(c[1],c[2]))); } return printf("3\n"),0;}
0 0
- [杂题 神证明] BZOJ 4893 项链分赃
- BZOJ 4893 项链分赃
- 4893: 项链分赃
- bzoj 4895: 项链分赃(增强版)
- BZOJ4893/4895 项链分赃
- bzoj4893项链分赃
- 4895: 项链分赃(增强版)
- bzoj4893项链分赃 神奇脑洞
- 【bzoj4895】项链分赃(增强版)
- [bzoj4893/bzoj4895]项链分赃,一个强大的脑洞
- bzoj 3790 神奇项链
- BZOJ 3790 神奇项链
- BZOJ 3790: 神奇项链
- BZOJ 1878 HH的项链
- 【BZOJ 1493】[NOI2007]项链工厂
- bzoj-1878 HH的项链
- 【BZOJ】1878 HH的项链
- BZOJ 1878, HH的项链
- Oracle物理体系结构
- 5分钟带你搞定开机引导界面
- Rectangle
- SpringMVC运行原理
- 【Codeforces Round #411 (Div. 1)】Codeforces 804B Minimum number of steps
- [杂题 神证明] BZOJ 4893 项链分赃
- CF411div2C.Find Amir
- ServiceLoader内部实现分析
- 《深入理解JAVA虚拟机》学习笔记(八)JAVA内存模型与线程
- java格式化时间使用的模式字母大全
- Hadoop(一)概况
- webgl笔记-1.模型视图矩阵和投影矩阵
- eclipse选择发布的路径
- uoj191 Unknown