【2021 ICPC Asia Jinan 区域赛】 C Optimal Strategy推公式-组合数-逆元快速幂
题目链接 题目详情 (pintia.cn)
题目


题意
有n个物品在他们面前,编号从1自n.两人轮流移走物品。在移动中,玩家选择未被拿走的物品并将其拿走。当所有物品被拿走时,游戏就结束了。任何一个玩家的目标是最大化他们拿走的物品的价值之和。
二人都足够聪明,有多少可能的游戏过程?结果取模998244353.
如果存在一些整数相等,但是下标不一样,算为两种方式。
题解
此题可以抽象为有序序列,第一个位置第一次被拿走,第二个位置第二次被拿走,后者亦然,求有多少种符合条件的序列
1. 最大值若为单数个,第一个人一定拿走,对于种数并没有贡献
2. 最大值若为双数个,第一个人拿走一个,后面人一定也要拿走一个
3. 每次拿完,都可以抽象为前两种。
以下为用高中排列组合思考问题:

AC代码
组合数用逆元求,如果按正常阶乘算,若 被除数取模过,那么结果也就不一样了
// #include<bits/stdc++.h>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <string>
#include <cstring>
#include <vector> using namespace std; typedef long long LL;
typedef pair<int,int> PII; const int N = 1e6+10;
const LL mod = 998244353;
int st[N];
LL fact[N], infact[N]; LL qmi(LL x, LL k)//快速幂
{
LL res = 1;
while(k)
{
if(k&1)
res = (LL)res * x %mod;
k >>= 1;
x = (LL)x * x % mod;
}
return res;
}
void init(int n)
{
fact[0] = 1, infact[0] = 1;
for(int i = 1; i <= n; i ++)
{
fact[i] = fact[i-1]*i%mod;//n的阶乘
infact[i] = infact[i-1]*qmi((LL)i, mod-2)%mod;//逆元
}
return;
}
LL zuhe(int n, int m)//求组合数
{
return fact[n] * infact[n-m] %mod* infact[m]%mod;
}
int main(){
vector<PII> a;
int n;
cin >> n;
init(n);
int idx = 0;
for(int i = 0; i < N; i ++) st[i] = -1;
for(int i = 0; i < n; i ++)
{
int x;
cin >> x;
if(st[x]>=0) a[st[x]].second ++;//记录每个数出现了几次
else
{
a.push_back({x, 1});
st[x] = idx ++;
}
}
sort(a.begin(), a.end());
int sum = 0;
LL res = 1;
for(int i = a.end()-a.begin()-1; i >= 0; i --)sum+=a[i].second; //数学公式实现过程
for(int i = a.end()-a.begin()-1; i >= 0; i --)
{
sum -= a[i].second;
int c = a[i].second;
if(c >= 2)
res = res * fact[c]%mod * zuhe((sum + c/2), c/2)%mod; }
cout << res <<endl; return 0;
}
【2021 ICPC Asia Jinan 区域赛】 C Optimal Strategy推公式-组合数-逆元快速幂的更多相关文章
- ICPC 2018 焦作区域赛
// 2019.10.7 练习赛 // 赛题来源:2018 ICPC 焦作区域赛 // CF链接:http://codeforces.com/gym/102028 A Xu Xiake in Hena ...
- 2021ICPC网络赛第一场部分题解-The 2021 ICPC Asia Regionals Online Contest (I)
写在前面 本来应该6题的,结果不知道哪个铸币发了H的clar,当即把我们的思路转向三维几何上.当时我们还在想这三维计算几何的正确率有点太高了还在感叹ICPC选手的含金量,直到赛后我才知道这H题的铸币出 ...
- 2017 ICPC/ACM 沈阳区域赛HDU6228
Tree Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Subm ...
- 2017 ICPC/ACM 沈阳区域赛HDU6223
Infinite Fraction Path Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 262144/262144 K (Java ...
- (最新)2019年ICPC东亚地区-区域赛赛站网络赛以及现场赛时间安排
- 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南)-L Bit Sequence
题意 给你两个数l,m,大小为m的数组a,求[0,l]之间满足以下条件的数x的个数: 对于任何i输入[0,m-1],f(x+i)%2=a[i]:f(k):代表k在二进制下1的个数 m的范围<=1 ...
- 计蒜客模拟赛D2T1 蒜头君的兔子:矩阵快速幂
题目链接:https://nanti.jisuanke.com/t/16442 题意: 有个人在第一年送了你一对1岁的兔子.这种兔子刚生下来的时候算0岁,当它在2~10岁的时候,每年都会生下一对兔子, ...
- ACM学习历程—HDU5490 Simple Matrix (数学 && 逆元 && 快速幂) (2015合肥网赛07)
Problem Description As we know, sequence in the form of an=a1+(n−1)d is called arithmetic progressio ...
- 2015 ACM / ICPC 亚洲区域赛总结(长春站&北京站)
队名:Unlimited Code Works(无尽编码) 队员:Wu.Wang.Zhou 先说一下队伍:Wu是大三学长:Wang高中noip省一:我最渣,去年来大学开始学的a+b,参加今年区域赛之 ...
随机推荐
- 使用pyautogui自动在某网站投票的脚本
网页自动投票: # !/usr/bin/env python # -*- coding:utf-8 -*- # Author:Hiuhung Wan import re import pypercli ...
- phpmyadmin 4.8.1 文件包含漏
一. 启动环境 1.双击运行桌面phpstudy.exe软件 2.点击启动按钮,启动服务器环境 二.代码审计 1.双击启动桌面Seay源代码审计系统软件 3.点击新建项目按钮,弹出对画框中选择(C:\ ...
- python练习册 每天一个小程序 第0000题
PIL库学习链接:http://blog.csdn.net/column/details/pythonpil.html?&page=1 1 #-*-coding:utf-8-*- 2 __au ...
- List 操作add 报错
操作List报java.lang.UnsupportedOperationException 2018.03.12 16:52:01字数 230阅读 1683 问题描述 今天在项目中调用List的ad ...
- java继承:extends
继承:extends 1.java只支持单继承,不支持多继承 2.java支持多层继承(继承体系) 3.子类不能继承父类所有非私有的成员(成员方法和成员变量) 4.子类不能继承父类的构造方法,但是可以 ...
- Dubbo 可以对结果进行缓存吗?
为了提高数据访问的速度.Dubbo 提供了声明式缓存,以减少用户加缓存的工作 量 <dubbo:reference cache="true" /> 其实比普通的配置文件 ...
- 为什么 wait()方法和 notify()/notifyAll()方法要在同步块 中被调用 ?
这是 JDK 强制的,wait()方法和 notify()/notifyAll()方法在调用前都必须先获得对 象的锁
- 列举 Spring Framework 的优点?
由于 Spring Frameworks 的分层架构,用户可以自由选择自己需要的组件. Spring Framework 支持 POJO(Plain Old Java Object) 编程,从而具备持 ...
- ML、DL及RL介绍和区别
前言 在刚入门的时候,我们很容易被这些词语弄得眼花缭乱,如人工智能.机器学习.深度学习及强化学习等等.它们之间互相联系,却有一定区别.我们学习人工智能AI,需要对这些词语有一定的概念,不然,研究了这么 ...
- post提交的数据有哪几种编码格式?能否通过URL参数获取用户账户密码
这里是修真院前端小课堂,每篇分享文从 [背景介绍][知识剖析][常见问题][解决方案][编码实战][扩展思考][更多讨论][参考文献] 八个方面深度解析前端知识/技能,本篇分享的是: [post提交的 ...