AT2386 Colorful Hats (乱搞题,思维题)
分情况讨论的神题...
max不等于min + 1 或者不等于min,这种情况显然不存在.
如果都等于一个数
有两种情况:
互相独立,那么a[i]肯定==n-1
有相同的,那么a[i]一定不是独立的.
那么就会有a[i]即为出现颜色的总个数.
因为又不是独立的.所以每种颜色至少出现两次.
所以满足\(2 * a[i] <= n\)即可.
继续分析,如果max == min + 1的情况.
n : 人数
一个点至少能看到有max - 1种颜色.
max : 能看到最多的颜色. (总颜色)
max - 1 : 本身是独立的颜色
设cnt 为max - 1出现的个数.
那么cnt就是出现的独立颜色.
把这些点剔除.
那么n = n - cnt
下文中的n 都变成了 n - cnt
max - cnt就是剩下的颜色个数
剩下的颜色个数至少满足两个人拥有同一颜色.(相互不独立,转化为上面的问题)
所以当2 * (max - cnt) <= n的时候是有解得.
所以不独立颜色个数是本题解题的关键.
但是再WA了十几遍后,终于发现了\(BUG\)所在.漏了一种情况.
当cnt >= maxx的时候(cnt == maxx的时候不存在合法情况.也要算上)是不合法的情况.
然后就A了.......
#include <iostream>
#include <cstdio>
#define gc getchar()
#define pc putchar
#define rep(i,x,p) for(int i = x;i <= p;++ i)
#define sep(i,x,p) for(int i = x;i >= p;-- i)
using namespace std;
const int maxN = 1e5 + 7;
int a[maxN];
inline int read() {
int x = 0 ,f = 1;char c = gc;
while(c < '0' || c > '9') {if(c == '-')f = -1;c = gc;}
while(c >= '0' && c <= '9') {x = x * 10 + c - '0';c = gc;}
return x * f;
}
void print(int x) {
if(x < 0) {
pc('-');
x = -x;
}
if(x >= 10) print(x / 10);
pc(x % 10 + '0');
}
int main() {
int n,maxx = 0, minn = 1e6;
n = read();
rep(i,1,n) a[i] = read();
rep(i,1,n) maxx = max(maxx,a[i]);
rep(i,1,n) minn = min(minn,a[i]);
if(maxx != minn + 1 && maxx != minn) {puts("No");return 0;}
if(maxx == minn) {
if(a[1] == n - 1 || 2 * a[1] <= n) puts("Yes");
else puts("No");
return 0;
}
int cnt = 0;
rep(i , 1 , n) if(a[i] == minn) cnt ++;
if(cnt >= maxx || 2 * (maxx - cnt) > n - cnt) puts("No");
else puts("Yes");
return 0;
}
AT2386 Colorful Hats (乱搞题,思维题)的更多相关文章
- 【交互 细节题 思维题】cf1064E. Dwarves, Hats and Extrasensory Abilities
第一次做交互真有趣……:挺好的细节思维题 This is an interactive problem. In good old times dwarves tried to develop extr ...
- Codeforces 1137D - Cooperative Game - [交互题+思维题]
题目链接:https://codeforces.com/contest/1137/problem/D 题意: 交互题. 给定如下一个有向图: 现在十个人各有一枚棋子(编号 $0 \sim 9$),在不 ...
- UESTC 1272 Final Pan's prime numbers(乱搞)
题目链接 Description Final Pan likes prime numbers very much. One day, he want to find the super prime n ...
- 【BZOJ 4148】 4148: [AMPPZ2014]Pillars (乱搞)
4148: [AMPPZ2014]Pillars Time Limit: 5 Sec Memory Limit: 256 MBSec Special JudgeSubmit: 100 Solve ...
- 【BZOJ5288】[HNOI2018]游戏(乱搞?)
[BZOJ5288][HNOI2018]游戏(乱搞?) 题面 BZOJ 洛谷 题面自己到洛谷上看把 题解 考场上乱搞拿到了\(90\)分,简直不敢相信. 回家把代码再交了一份直接就\(AC\)了??? ...
- CF_402C Searching for Graph 乱搞题
题目链接:http://codeforces.com/problemset/problem/402/C /**算法分析: 乱搞题,不明白题目想考什么 */ #include<bits/stdc+ ...
- 【bzoj5108】[CodePlus2017]可做题 拆位+乱搞
题目描述 给出一个长度为 $m$ 的序列 $a$ ,编号为 $a_1\sim a_m$,其中 $n$ 个位置的数已经确定,剩下的位置的数可以任意指定.现在令 $b$ 表示 $a$ 的前缀异或和,求 $ ...
- POJ 3077-Rounders(水题乱搞)
Rounders Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7697 Accepted: 4984 Descript ...
- codeforces 653C C. Bear and Up-Down(乱搞题)
题目链接: C. Bear and Up-Down time limit per test 2 seconds memory limit per test 256 megabytes input st ...
随机推荐
- 练习六:斐波那契数列(fibonacci)
题目:斐波那契数列. 程序分析:斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0.1.1.2.3.5.8.13.21.34.……. 在数学上,斐波那契数列 ...
- Appium+Python入门学习总结
最近研究了一下Appium,查看了一些大神的博客,绕过了一些坑,现将从搭建环境到运行真机测试的流程总结如下: 一.搭建环境,这里我参考了虫师的博客,一步一步来,搭好了Appium的环境,如果需要真机测 ...
- Shell变量赋值语句不能有空格
a = 1是错的!!!!!只有 a=1才是正确的.
- windows7安装完上不了网
安装完Windows7后发现上不了网,网卡驱动没有安装的原因:但是没有网怎么下载驱动呢,,先装一个网卡版驱动精灵(貌似叫驱动精灵万能网卡版)什么的安装一个网卡驱动,就解决了
- Solve Equations HackerRank 扩展欧几里德 && 数学
https://www.hackerrank.com/contests/infinitum16-firsttimer/challenges/solve-equations 给定一条方程a*x + b* ...
- Spark Mllib里如何采用保序回归做回归分析(图文详解)
不多说,直接上干货! 相比于决策树,保序回归的应用范围没有决策树算法那么广泛. 特别在数据处理较为庞大的时候,采用保序回归做回归分析,可以极大地节省资源,从而提高计算效率. 保序回归的思想,是对数据进 ...
- Spark编程模型(中)
创建RDD 方式一:从集合创建RDD makeRDD Parallelize 注意:makeRDD可以指定每个分区perferredLocations参数parallelize则没有. 方式二:读取外 ...
- 行高:line-height图文解析
行高——line-height 初入前端的时候觉得CSS知道display.position.float就可以在布局上游刃有余了,随着以后工作问题层出不穷,才逐渐了解到CSS并不是几个style属性那 ...
- 【Unity3D/C#】Unity3D中的Coroutine详解
Unity中的coroutine是通过yield expression;来实现的.官方脚本中到处会看到这样的代码. 疑问: yield是什么? Coroutine是什么? unity的coroutin ...
- c#异步Begininvoke使用随笔
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...