www 被大佬们吊打了|

wscqwq

园龄:2年粉丝:2关注:3

CF1754D

题目

还是比较简单的。根据 i!×(i+1)=(i+1)!,所以可以对于从 1x1 的所有数进行判断,记 cnt[i] 表示 i! 的数量。如果 cnt[i]mod(i+1) 不是 0,那么肯定是无解的了,否则需要将 cnt[i]÷(i+1) 进位cnt[i+1]

#include<cstdio>
using namespace std;
#define Ls(i,l,r) for(int i=l;i<r;++i)
#define Rs(i,l,r) for(int i=l;i>r;--i)
#define L(i,l) for(int i=0;i<l;++i)
const int N=500010;
int n,x,cnt[N];
int main(){
    // freopen("1.in","r",stdin);
    // freopen("1.out","w",stdout);
    // ios::sync_with_stdio(0);
    // cin.tie(0);
    // cout.tie(0);
    scanf("%d%d",&n,&x);
    L(i, n){
        int x;
        scanf("%d",&x);
        ++cnt[x];
    }
    Ls(i, 1, x){
        if(cnt[i]%(i+1))return puts("No"),0;
        else cnt[i+1]+=cnt[i]/(i+1);
    }
    puts("Yes");
    return 0;
}

本文作者:wscqwq

本文链接:https://www.cnblogs.com/wscqwq/p/17436393.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wscqwq  阅读(10)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起