ACM-ICPC 2018 徐州赛区网络预赛 A Hard to prepare
https://nanti.jisuanke.com/t/31453
题目大意:
有n个人坐成一圈,然后有\(2^k\)种颜色可以分发给每个人,每个人可以收到相同的颜色,但是相邻两个人的颜色标号同或不能等于0,问分配方案数
注:以下所有的相同是指两个数同或为0
思路
- 通过观察得出在0~$$2^k-1$$的范围内对于每个数,与之同或为零的数是唯一的
- 首先举例尝试观察性质,假设第一个位置随便填,即有$$2k$$种不同的填法,然后考虑第二个位置和第一个位置不同的填法有$$2k-1$$种,然后考虑第三个位置和第二个位置不同的填法有$$2k-1$$种。。。。。一直考虑到第n个位置和第n-1个位置,得出前n个位置只考虑每个位置和前一个位置不同的方案数有$$2k*(2k-1){n-1}$$
- 但是并没有考虑第n个数和第一个数相同的情况,这种情况是包含在第一种情况里面的,需要把这些从前一种情况中减去,第一位依旧是$$2k$$,那么第n位便确定了,所有还剩下n-2位没有确定,保证他们和前面一位不相同,那么方案数是$$2k*(2k-1){n-2}$$,
- 但是我们并没有考虑第n-1个数和第n个数相同的情况,这种情况并不包含在第一种情况里面,但是在第二种情况的时候却把它减掉了,因此需要加回来,可见需要容斥
- 容斥
- 后一个状态 是 包含在前一个状态中的那些不合法状态
细节
- 考虑一种情况,但n为偶数的时候,考虑到最后一步的时候会出现abab这种情况,这种情况是计算,第二位和第三位相同的情况下,前两位和前面的数不相同的情况,但是第一位和第二位明显是相同的,所以这种情况,在一开始就没有被加进去,但是在最后一步却被减去了,所以在最后要加回这种情况
- ~(a^b)是不能实现同或的效果的,应该这么实现
- ab==2k-1
#include<bits/stdc++.h>
#define P 1000000007
#define ll long long
using namespace std;
int T,n,k,i;
ll m,ans;
ll pw(ll bs,ll x){
ll ans=1;while(x>0){if(x&1){ans=ans*bs%P;}bs=bs*bs%P;x>>=1;}
return ans;
}
int main(){
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&k);
m=(pw(2,k)-1+P)%P;
ans=0;
for(i=0;i<n;i++){
if(i&1){
ans-=pw(m,n-1-i);
ans=(ans+P)%P;
}
else{
ans+=pw(m,n-1-i);
ans%=P;
}
}
if((n&1)==0)ans=(ans+1)%P;
ans=ans*pw(2,k)%P;
printf("%lld\n",ans);
}
}
ACM-ICPC 2018 徐州赛区网络预赛 A Hard to prepare的更多相关文章
- ACM-ICPC 2018 徐州赛区网络预赛 A Hard to prepare(递推)
https://nanti.jisuanke.com/t/31453 题目 有n个格子拉成一个环,给你k,你能使用任意个数的0 ~ 2^k - 1,规定操作 i XNOR j 为~(i ^ j), ...
- ACM-ICPC 2018 徐州赛区网络预赛A Hard to prepare(DP)题解
题目链接 题意:有n个格子拉成一个环,给你k,你能使用任意个数的0 ~ 2^k - 1,规定操作 i XNOR j 为~(i ^ j),要求相邻的格子的元素的XNOR为正数,问你有几种排法,答案取 ...
- ACM-ICPC 2018 徐州赛区网络预赛 A.Hard to prepare 【规律递推】
任意门:https://nanti.jisuanke.com/t/31453 A.Hard to prepare After Incident, a feast is usually held in ...
- ACM-ICPC 2018 徐州赛区网络预赛 A. Hard to prepare (组合数学,递归)
A. Hard to prepare After Incident, a feast is usually held in Hakurei Shrine. This time Reimu asked ...
- ACM-ICPC 2018 徐州赛区网络预赛(8/11)
ACM-ICPC 2018 徐州赛区网络预赛 A.Hard to prepare 枚举第一个选的,接下来的那个不能取前一个的取反 \(DP[i][0]\)表示选和第一个相同的 \(DP[i][1]\) ...
- ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (思维,贪心)
ACM-ICPC 2018 徐州赛区网络预赛 G. Trace (思维,贪心) Trace 问答问题反馈 只看题面 35.78% 1000ms 262144K There's a beach in t ...
- ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer (最大生成树+LCA求节点距离)
ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer J. Maze Designer After the long vacation, the maze designer ...
- 计蒜客 1460.Ryuji doesn't want to study-树状数组 or 线段树 (ACM-ICPC 2018 徐州赛区网络预赛 H)
H.Ryuji doesn't want to study 27.34% 1000ms 262144K Ryuji is not a good student, and he doesn't wa ...
- ACM-ICPC 2018 徐州赛区网络预赛 B(dp || 博弈(未完成)
传送门 题面: In a world where ordinary people cannot reach, a boy named "Koutarou" and a girl n ...
随机推荐
- mysql学习1:数据类型:数字型,日期和时间,字符串类型(总结)
mysql数据类型:数字型,日期和时间,字符串类型 摘要 MySQL中定义数据字段的类型对数据库的优化是非常重要的: MySQL支持多种类型,大致可以分为三类,如下. 数字类型 整数:tinyint. ...
- require模块化载入
1,模块化require的载入步骤 1,一个总文件夹,,里面三个子文件夹 ,, 分别是 2,common 里面是放一些公共方法和自己封装的方法 js里面是放自己的业务逻辑js文件和一些模块化的 ...
- js中的循环
js中的循环是我们经常要用到的,现在进行一些归纳. 一.javascript种的循环. 1.循环对象 var o = { name: 'Jack', age: 20, city: 'Beijing' ...
- [leetcode]347. Top K Frequent Elements K个最常见元素
Given a non-empty array of integers, return the k most frequent elements. Example 1: Input: nums = [ ...
- day 31 表单标签,CSS
一. HTML表单标签 HTML表单用于搜集不同类型的用户输入,然后把数据提交给服务器处理. 常用的表单标签: 标签 作用 form 所有表单标签的根标签 input 输入标签,包括单行输入框.密码框 ...
- php使用sftp上传文件
搞这个SFTP文件传输搞了一整天真是醉了,从sftp安装,到php的ssh2扩展安装,最后到php应用ssh2来上传文件:最后就没有最后了 Failure creating remote file: ...
- POI依据类型设置导出格式
//设置Bigdecimal数据导出时以数值形式输出 CellStyle decimalStyle = workbook.createCellStyle(); DataFormat decimalDf ...
- Android开发日常-listVIiew嵌套webView回显阅读位置
详情页布局结构 需求是回显webview展示网页的阅读位置 方案1: 使用webview.getScrollY()获取滑动到的位置,用setScrollY()回显设置, 但是两个方法都出现了问题,g ...
- SDK Manager 基础下载
双击SDK Manager打开Android SDK Manager. 全选以下几项 创建新项目 更改gradle的地址: 更改app的build.gradle: android { buildToo ...
- visual studio 2017 30天到期,不能输入注册码
官网下载了visual studio 2017后,第一次安装没有登陆,导致只有30天试用期,虽然还在试用期内,但是无法使用注册码永久使用 解决办法: 1.注册一个微软账号,直接百度搜索“微软账号登陆” ...