cf1557 C. Moamen and XOR

cf1557 C. Moamen and XOR

题意:

一个n位数,每一位小于2k2^k2k,如果a1&a2&…an>=a1⊕a2…⊕an,则获胜
现在给你n和k,问能构造多少个序列是获胜的

题解:

奇偶分类+二进制考虑
我们现在认为每个数的第k位都是1

  1. 如果n为奇数,&的结果为1,⊕的结果也为1,此时第k位没有区别,我们去看第k-1位
  2. 如果n为偶数,&的结果为1,⊕的结果为0,此时式子一定成立,剩下k-1位01随便填(因为第k位已经确定大小),方案就是(2k−1)n({2^{k-1}})^{n}(2k1)n,

现在我们认为每个数的第k位不完全是1

  1. 如果n是奇数,此时&结果是0,要让&大于等于⊕,我们就要让⊕等于0,说明就有偶数个1,所以每次选取n中x个数,使其为0,剩下为1(x为奇数)。sum=Cn1+Cn3+..+CnnC_{n}^{1}+C_{n}^{3}+..+C_{n}^{n}Cn1+Cn3+..+Cnn
  2. 如果n为偶数,同理:sum=Cn2+Cn4+..+CnnC_{n}^{2}+C_{n}^{4}+..+C_{n}^{n}Cn2+Cn4+..+Cnn

注意x是从1开始的,因为x等于0就是全为1的情况,就是我们一开始讨论的
此时答案=sum*次高位的答案贡献

dp[i]表示第i位(二进制)的方案数
答案是dp[k]
如果i是奇数,dp[i]=dp[i−1]∗(sum+1)dp[i]=dp[i-1]*(sum+1)dp[i]=dp[i1](sum+1) .其中1为第i位全1时的方案, sum为第i位不全为1时的方案.
如果i是偶数,dp[i]=dp[i−1]∗sum+(2i−1)ndp[i]=dp[i-1]*sum+({2^{i-1}})^{n}dp[i]=dp[i1]sum+(2i1)n,其中
(2i−1)n({2^{i-1}})^{n}(2i1)n为第i位全1时的方案, sum为第i位不全为1时的方案.
这种问题,就要看作二进制,每一位每一位的考虑,对于存在异或的,要注意奇偶性

代码:

// Problem: C. Moamen and XOR
// Contest: Codeforces - Codeforces Round #737 (Div. 2)
// URL: https://codeforces.com/contest/1557/problem/C
// Memory Limit: 256 MB
// Time Limit: 2000 ms
// Data:2021-08-23 14:30:40
// By Jozky#include <bits/stdc++.h>
#include <unordered_map>
#define debug(a, b) printf("%s = %d\n", a, b);
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
clock_t startTime, endTime;
//Fe~Jozky
const ll INF_ll= 1e18;
const int INF_int= 0x3f3f3f3f;
void read(){};
template <typename _Tp, typename... _Tps> void read(_Tp& x, _Tps&... Ar)
{x= 0;char c= getchar();bool flag= 0;while (c < '0' || c > '9')flag|= (c == '-'), c= getchar();while (c >= '0' && c <= '9')x= (x << 3) + (x << 1) + (c ^ 48), c= getchar();if (flag)x= -x;read(Ar...);
}
template <typename T> inline void write(T x)
{if (x < 0) {x= ~(x - 1);putchar('-');}if (x > 9)write(x / 10);putchar(x % 10 + '0');
}
void rd_test()
{
#ifdef LOCALstartTime= clock();freopen("in.txt", "r", stdin);
#endif
}
void Time_test()
{
#ifdef LOCALendTime= clock();printf("\nRun Time:%lfs\n", (double)(endTime - startTime) / CLOCKS_PER_SEC);
#endif
}
const int maxn= 2e5 + 9;
const int mod= 1e9 + 7;
ll fac[maxn];
ll infac[maxn];
ll poww(int a, int b)
{ll ans= 1;while (b) {if (b & 1)ans= ans * 1ll * a % mod;a= 1ll * a * a % mod;b>>= 1;}return ans;
}
int C(int a, int b)
{return 1ll * fac[a] % mod * infac[a - b] % mod * infac[b] % mod;
}
ll dp[maxn];
void solve()
{int n, m;read(n, m);int res= 0;dp[0]= 1;if (n % 2) { //n为奇数int sum= 0;for (int i= 1; i <= n; i+= 2) {sum= (sum + C(n, i)) % mod;}for (int i= 1; i <= m; i++) {dp[i]= 1ll * dp[i - 1] * (1 + sum) % mod;}}else if (n % 2 == 0) { //n为偶数int sum= 0;for (int i= 2; i <= n; i+= 2) {sum= (sum + C(n, i)) % mod;}for (int i= 1; i <= m; i++) {dp[i]= 1ll * dp[i - 1] * sum % mod;dp[i]= (dp[i] + poww(poww(2, i - 1), n)) % mod;}}printf("%d\n", dp[m]);
}
int main()
{//rd_test();fac[0]= infac[0]= 1;for (int i= 1; i < maxn; i++) {fac[i]= 1ll * fac[i - 1] * i % mod;infac[i]= 1ll * infac[i - 1] * poww(i, mod - 2) % mod;}int t;read(t);while (t--) {solve();}return 0;//Time_test();
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/316267.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

.Net Core Razor 预编译,动态编译,混合编译

预编译预编译是ASP .Net Core的默认方式。在发布时&#xff0c;默认会将系统中的所有Razor视图进行预编译。编译好的视图DLL统一命名为 xxx.PrecompiledViews.dll 或者 xxx.Views.dll动态编译将项目整个配置成动态编译很简单&#xff0c;添加一个配置项目MvcRazorCompileOnPubl…

[CodeForces gym 101630 J] 过路费(最短路)

problem 给定一张图 nnn 个点 mmm 条边&#xff0c;并给定阈值 kkk&#xff0c;以及起终点 s,ts,ts,t。 然后每条边经过都需要支付 www 的花费&#xff0c;形如 (u,v,w)(u,v,w)(u,v,w) 格式给出。 求 s→ts\rightarrow ts→t 的最小花费。 最小花费定义如下&#xff1a; 如…

cf1557D. Ezzat and Grid

cf1557D. Ezzat and Grid 题意&#xff1a; 有n行&#xff0c;每行有10910^9109列&#xff0c;仅仅由0和1构成 现在给你1的存在位置&#xff0c;(i,l,r)表示第i行的第l列到第r列全为1 你可以删除任意一行i&#xff0c;删除后&#xff0c;第i-1行和第i1行为相邻 现在我们要求求…

一张图来看看.NETCore和前后端技术的演进之路

一张图2019年3月10日&#xff0c;在长沙.NET 技术社区组织的技术沙龙《.NET Core和前后端分离那些事儿》上&#xff0c;我们曾经试图通过一系列抽丝剥茧的过程来引导大家在这条基于.NET Core的前后端分离有关的技术路线上持续发散&#xff0c;由于各种原因未能成功&#xff0c;…

【学习笔记】我命由天不由我之随机化庇佑 —— 爬山法 和 模拟退火法

以下均假设最优解是在最低点。 爬山法 爬山算法是一种局部择优的方法&#xff0c;采用启发式方法&#xff0c;是对深度优先搜索的一种改进&#xff0c;它利用反馈信息帮助生成解的决策。 直白地讲&#xff0c;就是当目前无法直接到达最优解&#xff0c;但是可以判断两个解哪…

Strange Memory Gym - 102832F

Strange Memory Gym - 102832F 题意&#xff1a; 有一颗n个节点的树&#xff0c;求下面公式的值&#xff1a; 题解&#xff1a; a ⊕ b c 可以推出a ⊕ c b 那么ai⊕ajalca(i,j)a_{lca(i,j)}alca(i,j)​,可以得到&#xff1a;ai⊕alca(i,j)a_{lca(i,j)}alca(i,j)​aj,ai就…

.net core 使用RSA获取私钥证书并签名

以前我们使用RSA加密主要是使用RSACryptoServiceProvider这个类&#xff0c;在.NET Core中也有这个类&#xff0c;但是这个类并不支持跨平台&#xff0c;所以如果你是用这个类来进行加/解密在windows上运行是完全没有错误的&#xff0c;但是只要你一放到Linux下就会出现异常。查…

2022 联合省选游记 信息奥赛五年退役记

Day0 这可不太美妙&#xff0c;十点就上床睡觉&#xff0c;结果完全睡不着&#xff0c;我妈打呼&#xff0c;加上我当时脑袋也想得多&#xff0c;整个人就挺烦躁的。 翻来覆去可能突然就睡着了&#xff0c;然后醒来虽然没天亮但是我猜至少也有五点多了吧&#xff0c;缓一会看…

CDN流量调度问题(2021CCPC华为云挑战赛)

CDN流量调度问题 题意&#xff1a; 有n个线路&#xff0c;每个线路的任务量为a[i],初始状态下&#xff0c;每个线路起初只有一个节点&#xff0c;每个线路完成任务所需时间为 现在你要给每个线路增加节点&#xff0c;所有增加的节点总数不超过m&#xff0c;第i个线路增加节点…

.NET Core 3.0 Preview 3中关于ASP.NET Core的更新内容

.NET Core 3.0 Preview 3已经推出&#xff0c;它包含了一系列关于ASP.NET Core的新的更新。下面是该预览版的更新列表&#xff1a;Razor组件改进:单项目模板 新的Razer扩展Endpoint路由集成预呈现Razor类库中的Razor组件改进事件处理 Forms & validation运行时编译Worker服…

世界五星级大厨经典菜品集

本blog只是记录C学习以来掉过的一些坑&#xff0c;写下来防止自己下一次再犯&#xff0c;顺便分享 持续更新&#xff0c;到死为止菜品特套1&#xff1a;vector.size() ~ 的使用菜品特套2&#xff1a;if-else的缩进菜品特套3&#xff1a;int范围边界的1ll使用菜品特套4&#xff…

FFT的多种应用

参考文章 FFT可以在nlogn的时间内实现n次多项式F(x)和m次多项式G(x)的卷积 ck∑ijkaibj∑i0kaibk−ic_{k}\sum_{ijk}a_{i}b_{j}\sum_{i0}^{k}a_{i}b_{k-i}ck​∑ijk​ai​bj​∑i0k​ai​bk−i​ 基本形式&#xff1a; 对于类似&#xff1a;∑ijNkaibj\sum_{ijNk}a_{i}b_{j}∑…

ASP.NET Core 使用 Google 验证码(Google reCAPTCHA)

关心最多的问题&#xff0c;不FQ能不能用&#xff0c;答案是能。Google官方提供额外的域名来提供服务&#xff0c;国内可以正常使用。一. 前言验证码在我们实际的生活场景中非常常见&#xff0c;可以防止恶意破解密码、刷票、论坛灌水、刷注册等等。现在的网站基本都有使用验证…

P4173 残缺的字符串

P4173 残缺的字符串 题意&#xff1a; 有A&#xff0c;B两个串&#xff0c;每个串都有通配符&#xff0c;问A为模板串&#xff0c;对于 B 的每一个位置 i&#xff0c;从这个位置开始连续 m 个字符形成的子串是否可能与 A 串完全匹配&#xff1f; 题解&#xff1a; 我们定义…

FFT/NTT卷积神级副本

干货满满的良心博客传送至只有小怪的村庄——请开始你的逆天之路A&#xff1a;P1919B&#xff1a;P4157刷怪升级——转战玄灵大陆C&#xff1a;P6300D&#xff1a;P3763E&#xff1a;P3321F&#xff1a;P5641G&#xff1a;P4986H&#xff1a;P4721——获得知识药剂一瓶——分治…

程会玩 | 在.NET Core里操作Git

点击上方蓝字关注“汪宇杰博客”Git是很多程序员的首选源代码版本控制工具&#xff0c;我最近也从TFVC切换到了Git&#xff0c;受益匪浅。今天我就来带大家看看如何在.NET Core里操作Git。为啥要这么做首先&#xff0c;这件事情的意义&#xff0c;并不是闲的蛋疼。我们确实有很…

Knowledge Test about Match

Knowledge Test about Match 题意&#xff1a; 给你一个B数组&#xff0c;要求你去匹配A数组[0&#xff0c;N-1]&#xff0c;计算公式f(a,b)∑i0n−1∣ai−bi∣f(a,b)\sum_{i0}^{n-1}\sqrt{|a_{i}-b_{i}|}f(a,b)∑i0n−1​∣ai​−bi​∣​,使得结果尽量小。最终结果与标准结…

一个实时收集MySql变更记录的组件CanalSharp.AspNetCore

一、关于CanalSharpCanalSharp 是阿里巴巴开源项目 Canal 的 .NET 客户端。为 .NET 开发者提供一个更友好的使用 Canal 的方式。Canal 是mysql数据库binlog的增量订阅&消费组件。CanalSharp 是 Canal 的 .NET 客户端&#xff0c;它与 Canal 是采用的Socket来进行通信的&…

Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine))

Codeforces Round #740 (Div. 2, based on VK Cup 2021 - Final (Engine)) 题号题目知识点ASimply Strange Sort暴力BCharmed by the GameCDeep Down BelowD1Up the Strip (simplified version)D2Up the StripEBottom-Tier ReversalsFTop-Notch Insertions A 直接暴力就行&am…

[Abp vNext 源码分析] - 1. 框架启动流程分析

一、简要说明本篇文章主要剖析与讲解 Abp vNext 在 Web API 项目下的启动流程&#xff0c;让大家了解整个 Abp vNext 框架是如何运作的。总的来说 &#xff0c;Abp vNext 比起 ABP 框架更加精简。因为在 vNext 版本当中&#xff0c;原来归属于 Abp 库的许多内置的基本组件 (组织…