【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。抽到的卡牌就从序列中去掉。... 阅读详情

相关推荐

用Verilog在FPGA上做个电子琴:从矩阵键盘到蜂鸣器的完整实现(附代码)

本文详细介绍了如何使用Verilog在FPGA上实现一个完整的电子琴系统,涵盖矩阵键盘扫描、音调生成和蜂鸣器驱动等核心模块。通过模块化设计和PWM调制技术,开发者可以构建一个可交互的音乐播放器,项目代码完整且易于扩展,适合FPGA初学者和数字逻辑设计爱好者实践。

weixin_29191669的博客 403

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

STM32G030C8T6 ADC+DMA实战:同时采集外部电压和芯片温度的完整代码流程

本文详细介绍了STM32G030C8T6芯片通过ADC+DMA实现外部电压和芯片内部温度采集的完整流程。从硬件设计到CubeMX配置,再到驱动模块化实现与系统优化,提供了高精度多通道采集系统的实战指南,特别适合嵌入式开发者在工业控制和环境监测项目中应用。

weixin_42653691的博客 467

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

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

cdy1206473601的博客 784

STM32+EC800M-CN 4G模块数据透传踩坑实录:从AT指令调试到花生壳内网穿透

本文详细介绍了STM32与移远EC800M-CN 4G模块的数据透传实现过程,包括硬件连接、AT指令调试、TCP连接建立以及花生壳内网穿透配置。通过实战案例和代码示例,帮助开发者快速解决4G通信模块在物联网应用中的常见问题,提升数据传输稳定性。

weixin_42715608的博客 320

分离与合体题解(区间DP)

题目: 经过在机房里数日的切磁,LYD从社神牛那里学会了分离与合体,出关前,杜神牛给了他一个测试 杜神牛造了个区域,它们紧邻着排成了一行,编号1-n。在这經个区域里都放着一把OI界 的金钥匙,每一把都有一定的价值,LYD当然想得到它们了。然而杜神牛规定LYD不可以一下子 把它们全部拿走,而是每次只可以拿一把。为了尽快地拿到所有的金钥匙,LYD自然就用上了刚学的分离与合体特技。 开始LYD可以选择从1~n-11~n-11~n-1的任何一个区域(记为K)进入,进入后LYD会在K区域发 生分离,从而分离为两个小L

cqbz_lipengcheng的博客 370

T1 卡牌选取

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

fervency(洛谷id)的博客 433

MounRiver避坑实录:手把手迁移CH32V307 EVT工程到自定义目录

本文详细记录了将沁恒CH32V307的EVT工程迁移到自定义目录的完整流程与避坑指南。针对MounRiver Studio的虚拟链接机制,重点讲解了如何清理旧配置、重新设置头文件路径、链接脚本等关键步骤,帮助开发者创建独立、可维护的MCU项目工程。

uber9的博客 244

【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

【DAB收音机】DAB 认证介绍

DAB 认证ESTI 标准文档: ETSI 103461实际过认证时,需要根据产品的受众国家及区域,参考当地官方是否有国内认证协议。需要参考当地文档进行功能开发。例如:阿联酋地区用《UAE.S 5021 _ 2018.pdf》标准进行认证。ESTI 的DAB认证协议规定了家用和车载数字无线电的最低要求,及其对应的测试方法,是数字无线电认证标志规定的技术基础。本文以车载数字无线电接收器为例,进行部分DAB认证的介绍,详情请见官方文档。或联系博主获取DAB ESTI 103461的中文翻译资料。

qq_15271231的博客 1219

LabVIEW新手必看:5个工业自动化实战项目从零搭建(附完整代码)

本文为LabVIEW新手提供了5个从零开始的工业自动化实战项目指南,涵盖数据采集、状态机控制、PID闭环、振动监测及多站协同监控。通过详细的架构解析和关键代码片段,帮助读者快速掌握LabVIEW图形化编程的核心逻辑与工程化思维,并附完整代码实现。

agile9scrum的博客 1072

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

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

fengqiyuka的博客 402

在 ABAP 世界把 SAML 2.0 玩明白:跨域 SSO 的通信模式、配置路径与落地实践

摘要 SAML 2.0是ABAP平台实现标准化SSO的推荐方案,提供Front-Channel(浏览器传递SAML报文)和Back-Channel(使用工件绑定通过SOAP兑换断言)两种通信方式。前者包括HTTP Redirect和POST绑定,后者通过Artifact绑定提升安全性。配置重点包括:激活ICF服务、使用SAML2事务码建立信任、设置用户标识映射、选择绑定方式(POST易调试、Artifact更安全)及配置安全策略(签名/加密)。典型流程包括SP-initiated和IdP-initiated

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

jzoj5414(幸运值)

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

gankinghand的博客 697

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

2018沈阳集训day1

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

weixin_30414155的博客 371

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

【JZOJ5414】幸运值

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

sadnohappy 583

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

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、付费专栏及课程。

余额充值