ACM-ICPC 2018 徐州赛区网络预赛A Hard to prepare(DP)题解
题意:有n个格子拉成一个环,给你k,你能使用任意个数的0 ~ 2^k - 1,规定操作 i XNOR j 为~(i ^ j),要求相邻的格子的元素的XNOR为正数,问你有几种排法,答案取模1e9 + 7。本题所使用的数字为无符号位数字。
思路:无符号位,所以异或取反后为正数,只可能是两个数相加不为2^k - 1。所以转化为相邻两个数之和不为2^k - 1的排法有几种(首尾也不能)。这个问题很像扇形涂色问题。我们开dp[ n ][ 3 ]记录到第i长时的三种情况:头尾和不为2^k - 1且头尾不相等, 头尾相等,头尾和为2^k - 1。然后很好写出各自的转移方程。显然我们一共有元素2^k种,但是这个有个坑,就是我在用2^k - 1,2^k - 2时可能为负数,所以要+MOD % MOD。
代码:
#include<queue>
#include<cstring>
#include<set>
#include<map>
#include<stack>
#include<string>
#include<cmath>
#include<vector>
#include<cstdio>
#include<iostream>
#include<algorithm>
typedef long long ll;
using namespace std;
const int maxn = 1e6 + ;
const int seed = ;
const ll MOD = 1e9 + ;
const int INF = 0x3f3f3f3f;
ll pmul(ll a, ll b){
ll ans = ;
while(b){
if(b & ) ans = ans * a % MOD;
a = a * a % MOD;
b >>= ;
}
return ans;
}
ll dp[maxn][]; //头尾无关 头尾相等 头尾值为0
int main(){
int T;
ll n, ans, k, fac, fac1, fac2, fac3;
scanf("%d", &T);
while(T--){
scanf("%lld%lld", &n, &k);
fac = pmul(, k);
fac1 = (fac - + MOD) % MOD;
fac2 = (fac - + MOD) % MOD;
fac3 = (fac - + MOD) % MOD;
dp[][] = fac;
dp[][] = ;
dp[][] = fac * (fac - + MOD) % MOD;
dp[][] = fac;
dp[][] = fac;
for(int i = ; i <= n; i++){
dp[i][] = (dp[i - ][] * fac3 % MOD + dp[i - ][] * fac2 % MOD + dp[i - ][] * fac2 % MOD) % MOD;
dp[i][] = (dp[i - ][] + dp[i - ][]) % MOD;
dp[i][] = (dp[i - ][] + dp[i - ][]) % MOD;
}
printf("%lld\n", (dp[n][] + dp[n][] + MOD) % MOD);
}
return ;
}
ACM-ICPC 2018 徐州赛区网络预赛A Hard to prepare(DP)题解的更多相关文章
- 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
https://nanti.jisuanke.com/t/31453 题目大意: 有n个人坐成一圈,然后有\(2^k\)种颜色可以分发给每个人,每个人可以收到相同的颜色,但是相邻两个人的颜色标号同或不 ...
- 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 ...
随机推荐
- git clone远程branch和tag
1.查看远程分支 git branch -r 2.测试git clone romete,只是clone远程remote的master,不会clone其他的目录 -------------------- ...
- 11 jmeter之图形监控扩展
Jmeter默认监听器的缺陷 Jmeter默认的监听器在表格.文字方面比较健全,但是在图形监控方面比较逊色,尤其在监控Windows或Linux的系统资源方面.但是jmeter作为一款开源工具,允许通 ...
- 通过反射,获取linkedHashMap的最后一个键值对。对map按照值进行排序。
1:通过反射,获取linkedHashMap的最后一个键值对. Map<Integer, Integer> map = new LinkedHashMap<>(); Field ...
- Centos 7(Linux)环境下安装PHP(编译添加)相应动态扩展模块so(以openssl.so为例)
https://blog.csdn.net/shinesun001/article/details/54312402 在centos 7环境下搭建好Lnmp环境之后,发现安装的php有好多扩展都没有安 ...
- [py][mx]xadmin注册切换主题功能和网站名称修改
注册主题 这里将基础的设置放到users模块 users/adminx.py from xadmin import views class BaseSetting(object): enable_th ...
- jmeter处理带表单的接口请求
如何用jmeter处理带选项的表单接口请求 下面是用到了F12 抓包的处理方法 下图是直接手动在页面上请求的结果 下面就是采用F12抓包抓到url 和FormData 分别把上面获取的url和Form ...
- dialog提交表单
<div id="dialog" title="添加客户"> <!--表单提交--> <form id="dialogF ...
- rpm服务的独立服务管理
/etc/init.d 启动脚本的位置 /etc/sysconfig/ 初始化环境配置文件 /etc/ 配置文件位置 /etc/xinetd.conf xinetd配置文件 /etc/xine ...
- Sizzle源码分析 (一)
Sizzle 源码分析 (一) 2.1 稳定 版本 Sizzle 选择器引擎博大精深,下面开始阅读它的源代码,并从中做出标记 .先从入口开始,之后慢慢切入 . 入口函数 Sizzle () 源码 19 ...
- ASIC中的一些库和文件类型
以下内容均来源于网络: 在进行综合,分析STA时,有几种库类型. NLDM: 非线性线载模型,最基本的dot lib. 电压源模型,cap值是单一值. 在90nm工艺以下,由于晶体管的特性变得很复杂 ...