C. Jury Meeting

2023-11-20 21:51
文章标签 meeting jury

本文主要是介绍C. Jury Meeting,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

C. Jury Meeting(组合数)

题目入口
在这里插入图片描述
思路
我们发现,每一次先消去的是最小的人,观察最后留下的两个不同的数,一定是最大的和次大的,并且我们发现,若最大的数个数多于两个,最后一定是在那几个数中循环,此时答案无关排列位置,就是n!,而当最大的数只有一个,以4 3 3 为例,只有当3 3 4时不合法,其余都合法,即最大数在所有次大数后面时不合法,答案用所有排列数减去不合法数即可
(刚开始怕爆long long,用来qmul,结果反而tle了第8个点)

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
int t;
const int N=2e5+10,mod=998244353;
int fac[N];
int a[N];
unordered_map<int,int> mp;
int qmul(int a,int n)
{int res=0;while(n){if(n&1) res=(res+a)%mod;a=2*a%mod;n>>=1;}return res;
}
int qpow(int a,int n)
{int res=1;while(n){if(n&1) res=res*a%mod;a=a*a%mod;n>>=1;}return res;
}
void init()
{fac[0]=1;for(int i=1;i<=N-5;i++)fac[i]=fac[i-1]*i%mod;
}
int C(int a,int b)
{int res=1;for(int i=1,j=a;i<=b;i++,j--){res*=j;res%=mod;res*=qpow(i,mod-2);res%=mod;}return res;
}
int A(int a,int b)
{return C(a,b)*fac[b]%mod;
}
signed main()
{init();cin>>t;while(t--){mp.clear();int n;cin>>n;int maxx=-1;for(int i=1;i<=n;i++){cin>>a[i];mp[a[i]]++;if(maxx<a[i]) maxx=a[i];}int max2=-1;for(int i=1;i<=n;i++)if(max2<a[i]&&a[i]!=maxx) max2=a[i];//cout<<"maxx="<<maxx<<"max2="<<max2<<endl;//cout<<"mp[maxx]="<<mp[maxx]<<"mp[max2]="<<mp[max2]<<endl;if(mp[maxx]>=2) cout<<fac[n]<<endl;else if(maxx>max2+1) cout<<"0"<<endl;else{int num=mp[max2];int res=(A(n,n)+mod-A(n,n)%mod*qpow(num+1,mod-2)%mod)%mod;cout<<res<<endl;}//cout<<"A(6,6)"<<A(6,6)<<endl;}return 0;
}

这篇关于C. Jury Meeting的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/397678

相关文章

HDU5521 Meeting([好题]最短路径)

题意:一个人在1位置,另一个在n位置,俩人要见面,然后给出m个集合,告诉集合的城市之间的距离都是t。然后问最短路 解法:边太多,直接邻接表是存不下的,所以要换一个存储方式,存与边关联的点,与点关联的边。然后最短路用堆优化的dij算法。还有一点值得注意的是,一个集合只需要跑一次就可以了,因为是最短路跑过来的,集合里都已经是最短的了 #include<bits/stdc++.h>using nam

如何高效的完成Minutes of Meeting

每周三晚上是我们微信群的固定活动时间,交流工作中的SAP技术和非技术问题,分享经验和学习新知识。如果有感兴趣的小伙伴找我加微信群。  本周有小伙伴提出,最近因为每天都在开会和参加workshop,没有时间写Minutes of Meeting(会议纪要),每晚都要加班才能完成,很是困扰,问怎么才能高效的完成Minutes of Meeting。 的确如果工作安排很紧凑,想要尽快的写好Minut

Top Level Meeting

NLP:  ACL EMNLP NAA CV CVPR ECCV ICCV Machine learning and data mining ICML KDD NIPS AI AAAI IJCAI

习题 8-13 外星人聚会(Meeting with Aliens, UVa10570)

原题链接:https://vjudge.net/problem/UVA-10570 分类:枚举法 备注:剪枝 O(n^3)也能过,数据比较水,不过加个数组可以优化到O(n^2) #include<bits/stdc++.h>using namespace std;const int maxn=505;int a[maxn],pos[maxn],b1[maxn],b2[maxn],n;i

[Beta] Scrum Meeting 1 - TEAM LESS ERROR

Scrum Meeting 1 会议情况任务和进度会议截图 会议情况 开展日期:2022/05/23 会议地点:线上采用discord 会议任务:回顾Alpha阶段,查漏补缺 任务和进度 安卓 .apk 安装包可以在这里下载。 我们完成了最后的bug调试和功能测试,在今天尝试进行软件打包和发布。这之中还是遇到了不少的问题,比如iOS发布时需要用到的开发者帐户。构建 iOS

什么是kick-off meeting?

kick-off meeting 意思是“项目启动会”。 kick off源自于足球,就是开球,发球的意思。后来,这bai个足球术语逐渐引入到商业中,引申为“开始做某事”的意思。

什么是All Hands Meeting?

All-Hands,翻译为全体会议。一般国外科技公司(不确定其他行业是不是也有)的工作者都不会陌生。国外的公司没有周例会、季度总结会、公司年会的等各种概念,All-Hands一般就充当了这种作用。翻译本文的时候适逢阿里巴巴公司年会举行,声势浩荡。通过本文,我们可以看看在一个老外眼中,一个理想的All-Hands应该是怎样的,感受一下中西公司文化之间的差异。 All-Hands meet

Scrum之Meeting

Scrum有三个仪式:Sprint规划会,Sprint评审会,Scrum每日站会 Sprint Planning Meeting(Sprint规划会) 根据Product Owner制定的产品或项目计划在Sprint的开始时做准备工作。Product Owner可以是客户或者客户代表或代理。对于产品型的公司,客户就是市场,Product Owner扮演市场代理的角色。一个Product Ow

hdu 5521 Meeting

文章目录 题目链接: 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5521 这道题难点就是在建图,普通建图是装不下的,每个集合多弄出一个点,第i个集合作为第i+n个点,于是总共就只有n+m个点,集合里的点与集合连一条边就行了 比如第一个样例的点就应该是这样: #include"bits/stdc++.h"#define o

Codeforces 723A The New Year: Meeting Friends

题目链接http://codeforces.com/contest/723/problem/A 思路 大水题,暴力求解 #include<stdio.h>#include<algorithm>#include<math.h>#define inf 99999999using namespace std;int main(){int a1,a2,a3;scanf("%d%d%d",