分情况讨论的神题...

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 (乱搞题,思维题)的更多相关文章

  1. 【交互 细节题 思维题】cf1064E. Dwarves, Hats and Extrasensory Abilities

    第一次做交互真有趣……:挺好的细节思维题 This is an interactive problem. In good old times dwarves tried to develop extr ...

  2. Codeforces 1137D - Cooperative Game - [交互题+思维题]

    题目链接:https://codeforces.com/contest/1137/problem/D 题意: 交互题. 给定如下一个有向图: 现在十个人各有一枚棋子(编号 $0 \sim 9$),在不 ...

  3. 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 ...

  4. 【BZOJ 4148】 4148: [AMPPZ2014]Pillars (乱搞)

    4148: [AMPPZ2014]Pillars Time Limit: 5 Sec  Memory Limit: 256 MBSec  Special JudgeSubmit: 100  Solve ...

  5. 【BZOJ5288】[HNOI2018]游戏(乱搞?)

    [BZOJ5288][HNOI2018]游戏(乱搞?) 题面 BZOJ 洛谷 题面自己到洛谷上看把 题解 考场上乱搞拿到了\(90\)分,简直不敢相信. 回家把代码再交了一份直接就\(AC\)了??? ...

  6. CF_402C Searching for Graph 乱搞题

    题目链接:http://codeforces.com/problemset/problem/402/C /**算法分析: 乱搞题,不明白题目想考什么 */ #include<bits/stdc+ ...

  7. 【bzoj5108】[CodePlus2017]可做题 拆位+乱搞

    题目描述 给出一个长度为 $m$ 的序列 $a$ ,编号为 $a_1\sim a_m$,其中 $n$ 个位置的数已经确定,剩下的位置的数可以任意指定.现在令 $b$ 表示 $a$ 的前缀异或和,求 $ ...

  8. POJ 3077-Rounders(水题乱搞)

    Rounders Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7697   Accepted: 4984 Descript ...

  9. 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 ...

随机推荐

  1. 匿名内部类(new类时覆盖类中方法)

    public class Person { private String name ; protected String getName() { return name; } public void ...

  2. 错误:正在解析文件 '/var/lib/dpkg/updates/0004'

    sudo rm /var/lib/dpkg/updates/* sudo apt-get update

  3. 026 Remove Duplicates from Sorted Array 从排序数组中删除重复项

    给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度.不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点.示例:给定数组: nums ...

  4. URAL 1948 H - The Robot on the Line 二分 + 数学

    http://acm.hust.edu.cn/vjudge/contest/126149#problem/H 给定一条二次函数 f (x) = a * x * x + b * x + c 求一个最小的 ...

  5. 程序员从初级到中级10个秘诀——摘自CSDN

    程序员从初级到中级10个秘诀 1.学习先进的搜索技术.手段和及策略 2.帮助别人 教别人始终是学习一切东西的最好方法之一.相对而言,由于你在开发领域还是个新手,认为自己没什么可教给人家的,这可以理解. ...

  6. C 碎片七 指针

    一.地址和指针 程序在编译过程中,系统会根据变量类型分配一定长度的内存单元.内存区中的每个字节都有一个编号,该内存单元的初始编号就是变量的"地址/指针",该内存单元的长度就是变量的 ...

  7. 基于HttpClient的新版正方教务系统模拟登录及信息获取API

    简介 通过HttpClient获取网页数据源,通过Jsoup解析数据.先模拟登录,再获取信息.模拟浏览器正常操作,封装请求头信息获取SESSIONID.模拟登录成功后切勿断开会话,依赖登录请求得到的C ...

  8. 微信iOS端无法执行jquery on()方法

    微信iOS端无法执行jquery on()方法,click方法可以, 如下代码是不会执行的: $(function(){ $('body').on('click','.cka',function(){ ...

  9. 实战:ADFS3.0单点登录系列-前置准备

    本文为本系列第二篇,主要分为两部分进行介绍, 一.网络拓扑 二.证书制作 还是将本系列目录贴出来,方便导航 实战:ADFS3.0单点登录系列-总览 实战:ADFS3.0单点登录系列-前置准备 实战:A ...

  10. cms-写帖子内容实现

    写帖子后台: mapper: <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperP ...