【JZOJ 5414】【NOIP2017提高A组集训10.22】幸运值

JZOJ5414. 【NOIP2017提高A组集训10.22】幸运值 Description校庆志愿者小Z在休息时间和同学们玩卡牌游戏。一共有n张卡牌,每张卡牌上有一个数Ai,每次可以从中选出k张卡牌。一种选取方案的幸运值为这k张卡牌上数的异或和。小Z想知道所有选取方案的幸运值之和除以998244353的余数。Input输入的第一行有两个整数n和k。 第二行有n个整数,表示序列A。Output一个整数表示答案。Sample Input输入1: 3 2 1 2 3 阅读详情

Description

校庆志愿者小Z在休息时间和同学们玩卡牌游戏。一共有n张卡牌,每张卡牌上有一个数Ai,每次可以从中选出k张卡牌。一种选取方案的幸运值为这k张卡牌上数的异或和。小Z想知道所有选取方案的幸运值之和除以998244353的余数。

Solution

这题先拆位,
对于每一位,只有当选了单数个1时才不为0,
那就统计一下总共有多少个1,枚举选多少个,再用组合数即可,
注意组合数爆掉的情况,即例如在10个数中选20个,

复杂度:O(nlog(ai))

Code

#include <cstdio>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define fod(i,a,b) for(int i=a;i>=b;i--)
using namespace std;
typedef long long LL;
const int N=100500,mo=998244353;
int read(int &n)
{
    char ch=' ';int q=0,w=1;
    for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());
    if(ch=='-')w=-1,ch=getchar();
    for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
int m,n;
int a[N];
LL ans;
LL jc[N],jcn[N];
LL ksm(LL q,int w)
{
    LL ans=1;
    for(q%=mo;w;w>>=1,q=q*q%mo)if(w&1)ans=ans*q%mo;
    return ans;
}
LL C(int m,int n){return jc[m]*jcn[n]%mo*jcn[m-n]%mo;}
int main()
{
    int q,w;
    read(n),read(m);
    fo(i,1,n)read(a[i]);
    jc[0]=1;fo(i,1,n+1)jc[i]=jc[i-1]*(LL)i%mo;
    jcn[n+1]=ksm(jc[n+1],mo-2);
    fod(i,n,0)jcn[i]=jcn[i+1]*(LL)(i+1)%mo;
    LL er=1;
    fo(II,1,31)
    {
        q=0;
        fo(i,1,n)if(a[i]&er)q++;
        w=n-q;
        for(int i=1;i<=q&&i<=m;i+=2)if(m-i<=w)ans=(ans+er*C(q,i)%mo*C(w,m-i))%mo;
        er<<=1;
    }
    printf("%lld\n",ans);
    return 0;
}
计蒜客习题:卡牌游戏 问题描述 蒜头君手里有 n 张卡牌,编号从 1 到 n,每张卡牌上面有一个数字 numi。现在蒜头君将 n 张卡牌排成一行,组成一个序列,执行以下操作:从序列中抽取一张编号为 i 的卡牌,则该张卡牌贡献 的得分为 numi−1×numi×numi+1,即卡牌上的数字同左右两 张相邻的卡牌上的数字乘积。但是不能抽取序列中最左边和最右边的卡牌,即i≠1 且 i≠n。抽到的卡牌就从序列中去掉。... 阅读详情

相关推荐

python-调用动态链接库dll/so的方法

使用python ctyeps CDLL来调用linux下的so动态链接库或windows下的dll动态链接库

XIAOXIANG233233的博客 3662

JZOJ 5414. 【NOIP2017提高A组集训10.22】幸运值

JZOJ 5414. 【NOIP2017提高A组集训10.22】幸运值 Description校庆志愿者小Z在休息时间和同学们玩卡牌游戏。一共有n张卡牌,每张卡牌上有一个数Ai,每次可以从中选出k张卡牌。一种选取方案的幸运值为这k张卡牌上数的异或和。小Z想知道所有选取方案的幸运值之和除以998244353的余数。Input输入的第一行有两个整数n和k。 第二行有n个整数,表示序

Felix-Lee的博客 986

CiteSpace基础操作(CNKI数据的导入分析)(一)

1 Cite Space简单介绍 2 文献导入 2.1 打开知网,选择高级检索

m0_50990607的博客 5万+

【NOIP2017提高A组集训10.22】幸运值

Description 校庆志愿者小Z在休息时间和同学们玩卡牌游戏。一共有n张卡牌,每张卡牌上有一个数Ai,每次可以从中选出k张卡牌。一种选取方案的幸运值为这k张卡牌上数的异或和。小Z想知道所有选取方案的幸运值之和除以998244353的余数。 Input 输入的第一行有两个整数n和k。 第二行有n个整数,表示序列A。 Output 一个整数表示答案。 Sample In

cdy1206473601的博客 784

C# Modbus通信从入门到精通(2)——Modbus RTU协议原理

本文详细的介绍了Modbus RTU协议的原理,由多年经验高级工程师实战总结而成,绝对干货!

qq_34059233的博客 6383

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

Debezium报错处理系列之二十八: Expiring 1 record(s) for test-ts-0:120001 ms has passed since batch creation

zhengzaifeidelushang的博客 3290

T1 卡牌选取

一共有 n 张卡牌,每张卡牌上有一个正整数 a[i] ,每次可以从中选出 k 张卡牌。一种选取方案的幸运值为这 k 张卡牌上数的按位异或和。3.对于每一位上的01串而言,先考虑所有1的贡献,因为异或操作相当于看是否有奇数个一。当我们要选出奇数个1(假设本位有a个1),组合数。2.对于每一个二进制位,先不考虑怎么选出来 k 个,而是考虑每个0/1对答案有多少贡献。求所有选取方案的幸运值之和,对998244353取模。剩下的 k-i 从0中选即可。预处理出逆元(AC)

fervency(洛谷id)的博客 433

【汽车 OTA 】差分升级

汽车 OTA 差分升级,本质是在整包 OTA 的基础上,通过“只传变化”的方式,大幅减少下载数据量、时间和成本,是当前车端软件升级的主流方向之一。

天赐好车的博客 482

【NOIP 2017】赛季正式打响!

传送门: NOIP2017 检查清单 2017的赛季正式打响了!加油干啊同志们,这里就记录一下我到底干了什么吧~,10_21【JZOJ 5407】【NOIP2017提高A组集训10.21】Deep 【JZOJ 5408】【NOIP2017提高A组集训10.21】Dark 【JZOJ 5409】【NOIP2017提高A组集训10.21】Fantasy小结T1没有去尝试找规律,不能懒啊 T3有

1135

Microsoft AI SDK 与 SAP ABAP:让企业级 AI 能力触手可及的深度整合指南

借助 Microsoft AI SDK,ABAP 开发者无需跳出熟悉的事务码与数据字典,就能把 GPT‑4 的强大语言理解与生成能力深度植入采购、销售、财务等核心业务流程。只要掌握“初始化 SDK → 构造 Prompt → 解析输出”这一范式,未来无论 Azure OpenAI、OpenAI 还是本地化 LLM,都能在同一套代码骨架内快速切换,实现真正的“AI 即服务”。现在,就让我们在下一行 ABAP 里拥抱智能未来。参考链接均于 2025‑07‑22 提取,推荐读者结合实际版本进一步验证。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 431

【SWAT】SWAT中预定义河网及流域

平原圩区没有明显的海拔差异。DEM中包含的地形信息无法定义河段的位置和水文连接,SWAT模型Watershed Delineator中提供两种方法,帮助用户输入流域拓扑信息。第一种方法,“Burn-in”和手动绘制河段和子流域边界。首先,使用“Burn-in”功能导入数字河道网络(DCN),并根据DEM和DCN绘制河流和子流域。然后在ArcGIS中编辑“流域”和“河段”层,可以调整位置、范围和水文连接。第二种方法,可以手动绘制或重新编辑河流和子流域,预定义河网及流域。

```On Earth, Be Water, By Coding``` 3273

5414. 【NOIP2017提高A组集训10.22】幸运值

题目描述 校庆志愿者小Z在休息时间和同学们玩卡牌游戏。一共有n张卡牌,每张卡牌上有一个数Ai,每次可以从中选出k张卡牌。一种选取方案的幸运值为这k张卡牌上数的异或和。小Z想知道所有选取方案的幸运值之和除以998244353的余数。 题目分析 这是一道非常**的题目。 首先,我们知道,xor是二进制运算,所以我们首先想到的就是要把所有数都转换成二进制的数。其次,因为它是位运算,所以我们又

fengqiyuka的博客 402

直驱风机并网系统次同步振荡机理与振荡源定位方法研究

摘要: 本文针对直驱风机并网系统次同步振荡问题,研究了其产生机理与振荡源定位方法。通过建立系统小信号模型,采用特征值分析法揭示了次同步振荡的产生机制,并分析了电网强度、控制器参数对振荡特性的影响。基于暂态能量流理论,提出了通过计算各元件耗散能量来定位振荡源的方法。在MATLAB/Simulink平台搭建仿真系统验证了所提方法的有效性,为直驱风电场次同步振荡的分析与抑制提供了理论依据。 关键词:直驱风机;次同步振荡;小信号模型;暂态能量;振荡源定位

huanghm88的专栏 100

jzoj5414(幸运值)

题目大意 校庆志愿者小Z在休息时间和同学们玩卡牌游戏。一共有n张卡牌,每张卡牌上有一个数Ai,每次可以从中选出k张卡牌。一种选取方案的幸运值为这k张卡牌上数的异或和。小Z想知道所有选取方案的幸运值之和除以998244353的余数。 题解 对于这道题目,我们可以用一个经典套路——拆位,我们知道两个数异或,如果它们在二进制下某一位相同,则异或后,在二进制下,这一位为0,否则为1,那我们分开考

gankinghand的博客 697

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

2018沈阳集训day1

问题 A: 马克的字符串 时间限制: 1 Sec内存限制: 256 MB 题目描述 定义一个字符串满足'MK'性质当且仅当它修改其中不超过k个字符后是回文串。给你一个字符串,问它有多少非空子串满足'MK'性质。 输入 输入的第一行包含一个字符串s 输入的第二行包含一个整数k 输出 输出的第一行包含一个整数,为满足'MK'性质的字串数量。 样例输入 ...

weixin_30414155的博客 371

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

【JZOJ5414】幸运值

Description校庆志愿者小Z在休息时间和同学们玩卡牌游戏。一共有n张卡牌,每张卡牌上有一个数Ai,每次可以从中选出k张卡牌。一种选取方案的幸运值为这k张卡牌上数的异或和。小Z想知道所有选取方案的幸运值之和除以998244353的余数。

sadnohappy 583

C++卡片游戏

/* 蒜头君设计了一个双人游戏,在桌面上放置一排 n 张卡片,第 i 张卡片上有一个数字 a_i。 两个人轮流取走一张卡片,直至全部取完。注意每次只能取这一排卡片中的第一张或最后一张。最后取得卡片的数字和最高的玩家获胜。 蒜头君和花椰妹开始玩这个游戏。蒜头君先手,他可以使用任意策略。花椰妹计算能力有限, 所以她只单纯地使用贪心策略,即取两张卡片中数字较大的一张,如果两张卡片数字相同,则取第一张。 现在蒜头君想知道,在最佳策略下,他取得的分数会比花椰妹高多少? 例如 4 张卡片,3 2 10

YSL 2093

jzoj5895 旅游 最小生成树+欧拉回路

Description Solution 本来晕乎乎的看到可怜就瞬间清醒了 其实我们可以通过加边使得条件由每条边走至少一次变成每条边走恰好一次。 注意到给出的边非常特殊,可以发现所有有贡献的边都在最小生成树上。如果n很小也可以考虑传递闭包做 考虑怎么加边,我们发现每次加边会使两端点度数的奇偶性发生变化。由于我们添加的实际上是一条路径,那么我们可以考虑一条边在路径中的贡献。如果一条边两边的奇点...

olahiuj的博客 560

[JZOJ5177]【NOIP2017提高组模拟6.28】TRAVEL

Description Solution显然,答案的L和R一定是某两个边权那么可以直接把边按R排序。 枚举L,二分R 判断所有的边是否合法,合法的用并查集连起来 判断1和N是否在一个集合中即可Code#include <cstdlib> #include <iostream> #include <algorithm> #include <cstring> #include <cmath> #

Never give in. 486

jzoj5895 【NOIP2018模拟10.5】旅游 (求欧拉回路,性质)

题目描述 分析 求若干条的这样的路并起来的最小值。我们可以一直走没有被走过的边,直到无法再走。这样的点一定是奇数度点。他会走到另一个奇度数点。然而观察这题这题的边权,发现所有比某条边小的边之和比这条边小。那也就是说最短路必定在最小生成树上。这就变成了最小生成树上的配对问题。只要保证不走重边,结果一定是一样的。一棵子树内假如是奇数那么会有一个点需要走一次向外连的边。 #include &amp;lt;cs...

一位蒟蒻的小博客 317

【jzoj5081】【GDSOI2017第三轮模拟】【Travel Plan】【动态规划】

题目大意解题思路考虑到不能选的点在dfs序上是连续的,可以按价值dp从前和从后做两次,查询时合并即可。对于卡空间,对询问离线,前缀可以省掉一维。对于卡时间,可以按照当前最大价值作为边界。code#include<set> #include<cmath> #include<cstdio> #include<cstring> #include<algorithm> #define LD double #

inklutcuah’s blog 460

Jzoj5414 幸运值

校庆志愿者小Z在休息时间和同学们玩卡牌游戏。一共有n张卡牌,每张卡牌上有一个数Ai,每次可以从中选出k张卡牌。一种选取方案的幸运值为这k张卡牌上数的异或和。小Z想知道所有选取方案的幸运值之和除以998244353的余数。 为什么中间跳过了几道题?因为现在来不及改了先把过了的搬上来吧 套路:按位计算贡献 我们考虑,对于32个位置,选择k个异或为1的选法有...

dianning8393的博客 210

【JZOJ 5413】【NOIP2017提高A组集训10.22】清兰

DescriptionSolution结论1:m个点不一定全部用完,多余的可以插到末尾去,相当于没有; 结论2:对于一个区间,如果插入k个,那么最优的情况一定是均分(荷西不等式); 结论3:一个区间的最少插入个数为:(设ALLd=∑|ai−ai−1|ALLd=\sum|a_i-a_{i-1}|) min(|ai−ai−1L|,|ai−ai−1|∗mALLd)\min(|\frac{a_i-{a

535

JZOJ 5628. 【NOI2018模拟4.4】Travel

JZOJ 5628. 【NOI2018模拟4.4】Travel Description有N个人出去旅行,第i个人去A国有Ai种游玩方式,去B国有Bi种游玩方式,问至少有C个人去A国的情况下,所有人的游玩方式有多少种不同的可能。 两种所有人的游玩方式不同当且仅当存在一个人选择的游玩方式不同,或选择去的国家不同。 接下来有P次修改,每次修改一个人的Ai和Bi。Inpu

Felix-Lee的博客 355

【JZOJ5895】旅游

description analysis 正解MST+思维 首先每条边的答案都要加上,然后做一次最小生成树 在MSTMSTMST里,如果以一个点为根的子树里有奇数个原图里的奇点,那么就再加上这个点到其父亲的边权 code #pragma GCC optimize(&quot;O3&quot;) #pragma G++ optimize(&quot;O3&quot;) #include&amp;lt;stdio

路人黑的纸巾 573
上一篇: 【JZOJ 5411】【NOIP2017提高A组集训10.22】友谊
下一篇: 【JZOJ 5415】【NOIP2017提高A组集训10.22】公交运输
HOWARLI
博客等级 码龄11年 109粉丝 378原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值