201409-5 拼图

七十分超时代码,具体思路可以仿照acwing蒙德里安的梦想
就是枚举第i层放 a ,第i-1层放b的合法方案其中b和a都是同一块;

	#include <iostream>
#include <algorithm>
#include <cstring>
#include <sstream>
using namespace std;
typedef long long LL;
const int N = 5e5 + 4, mod = 1e9 + 7, M = 1<<7;LL n;
int  m;
int dp[N][M];void dfs(int a, int b, int p)
{if(p == m) v[a][b]++, c[a][b]++;else{if(p > 0){if(!((a>>p&1)||(b>>p&1)||(b>>p-1&1)))dfs(a|1<<p, b|1<<p|1<<p-1, p+1);if(!((a>>p&1)||(b>>p&1)||(a>>p-1&1)))dfs(a|1<<p|1<<p-1, b|1<<p, p+1);}if(p+1 != m){if(!((a>>p&1)||(b>>p&1)||(b>>p+1&1)))dfs(a|1<<p, b|1<<p|1<<p+1, p+1);if(!((a>>p&1)||(b>>p&1)||(a>>p+1&1)))dfs(a|1<<p|1<<p+1, b|1<<p, p+1);}dfs(a, b, p+1);}
}int main() 
{scanf("%lld%d", &n, &m);dfs(0, 0, 0);for(int i = 0;i < 1<<m;i ++)dp[1][i] = v[i][(1<<m)-1];for(int i = 2;i < n;i++)for(int j = 0;j < 1<<m;j ++)for(int k = 0;k < 1<<m;k ++)dp[i][j] = (dp[i][j] + (LL)dp[i-1][((1<<m)-1)^k]*v[j][k])%mod;cout<<dp[n-1][(1<<m)-1];return 0;
}

100 分矩阵快速幂

#include <iostream>
#include <algorithm>
#include <cstring>
#include <sstream>
using namespace std;
typedef long long LL;
const int N = 5e5 + 4, mod = 1e9 + 7, M = 1<<7;LL n;
int  m, c[M][M], tem[M][M], res[M][M];
int dp[3][M];void multi(int a[][M], int b[][M], int n)
{memset(tem, 0, sizeof tem);	for(int i = 0;i < n;i ++)for(int j = 0;j < n;j ++)for(int k = 0;k < n;k ++)tem[i][j] = (tem[i][j] + (LL)a[i][k]*b[k][j])%mod;for(int i = 0;i < n;i ++)for(int j = 0;j < n;j ++)a[i][j] = tem[i][j];
}void pow(int a[][M], LL n)
{memset(res, 0, sizeof res);for(int i = 0;i < 1<<m;i ++)res[i][i] = 1;while(n){if(n&1) multi(res, a, 1<<m);multi(a, a, 1<<m);n>>=1;}
}void dfs(int a, int b, int p)
{if(p == m) c[a][((1<<m)-1)^b]++;   // 方便 矩阵快速幂 这题c[i][j]代表第二层是i 第一层是i的合法方案的其他空缺; else{if(p > 0){if(!((a>>p&1)||(b>>p&1)||(b>>p-1&1)))dfs(a|1<<p, b|1<<p|1<<p-1, p+1);if(!((a>>p&1)||(b>>p&1)||(a>>p-1&1)))dfs(a|1<<p|1<<p-1, b|1<<p, p+1);}if(p+1 != m){if(!((a>>p&1)||(b>>p&1)||(b>>p+1&1)))dfs(a|1<<p, b|1<<p|1<<p+1, p+1);if(!((a>>p&1)||(b>>p&1)||(a>>p+1&1)))dfs(a|1<<p|1<<p+1, b|1<<p, p+1);}dfs(a, b, p+1);}
}int main() 
{scanf("%lld%d", &n, &m);dfs(0, 0, 0);for(int i = 0;i < 1<<m;i ++)dp[1][i] = c[i][0];if(n >= 2)pow(c, n-2); for(int i = 0;i < 1<<m;i ++)dp[2][(1<<m)-1] = (dp[2][(1<<m)-1] + (LL)res[(1<<m)-1][i]*dp[1][i])%mod;cout<<dp[2][(1<<m)-1];return 0;
}

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

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

相关文章

.net core 中间件管道底层剖析

.net core 管道&#xff08;Pipeline&#xff09;是什么&#xff1f;由上图可以看出&#xff0c;.net core 管道是请求抵达服务器到响应结果返回的中间的一系列的处理过程&#xff0c;如果我们简化一下成下图来看的话&#xff0c;.net core 的管道其实就是中间件的部分。微软中…

Codeforces Round #741 (Div. 2)

Codeforces Round #741 (Div. 2) 题号题目知识点AThe Miracle and the SleeperBScenes From a MemoryCRingsD1Two Hundred Twenty One (easy version)D2Two Hundred Twenty One (hard version)ERescue Niwen!FTubular Bells

201609-5 祭坛

超时暴力60分 #include <iostream> #include <algorithm> #include <cstring> #include <sstream> using namespace std; typedef long long LL; const int N 5e5 4, mod 1e9 7;vector<int> v[N]; int y[N], sizy, x[N], sizx, numx[N], a[…

cf1562E. Rescue Niwen!

cf1562E. Rescue Niwen! 题意&#xff1a; 我们定义一个字符串s1s2s3…sn的展开为:s1,s1s2,s1s2…sn,s2,s2s3,s2s3…sn,…,sn 找到字符串s“扩展”的最大递增子序列的大小(根据字典序大小比较) 题解&#xff1a; 第一感觉就是求最长上升子序列的变形 按照字典序大小比较规则…

架构为什么要以领域为核心

很久以前, 人们以为地球是太阳系的中心.然后一位聪明人, 哥白尼, 他改变了我们对太阳系的看法. 他认为太阳是太阳系的中心:这是对太阳更好的一个解释, 更简单也更具说服力. 事实上, 以太阳为中心的模型确实是更优雅的.上面这件事也发生在软件开发里. 下面这个就是很多开发者惯用…

201403-5 任务调度

哇&#xff0c;ccf csp认证考试 历年真题解&#xff08;一本书&#xff09;真厉害。 #include<iostream> #include<cstdio> #include<algorithm> #include<cstring>using namespace std;typedef long long LL; typedef pair<int,int> PII; con…

cf1562D Two Hundred Twenty One

cf1562D Two Hundred Twenty One 题意&#xff1a; 定义一个前缀和公式&#xff1a;a1−a2a3−a4..∑i1n(−1)i−1∗aia_{1}-a_{2}a_{3}-a_{4}..\sum_{i1}^{n}(-1)^{i-1}*a_{i}a1​−a2​a3​−a4​..∑i1n​(−1)i−1∗ai​ 然后给你一个长度为n的序列&#xff0c;只包含{-1…

C# - 为引用类型重定义相等性 - 继承相关

派生类这是上面Citizen类的一个子类&#xff1a;下面我重写object.Equals() 方法&#xff1a;大部分逻辑都在base.Equals()方法里了&#xff0c;首先如果父类的Equals()方法返回false&#xff0c;那么下面也就不用做啥了。但是如果父类Equals()认为这两个实例是相等的&#xff…

201612-5 卡牌游戏

**根据题目样例解释得到每种卡牌拥有状态之间的关系&#xff0c;然后转换成等式&#xff0c;高斯消元是2^(3n) ** 80分超时代码&#xff1a; #include <iostream> #include <algorithm> #include <cstring> #include <vector> #include <queue>…

cf1562 C. Rings

cf1562 C. Rings 题意&#xff1a; 给你一个长度为n的01串&#xff0c;在01串选两个连续区间S和T&#xff0c;要求区间长度>⌊n2⌋\lfloor \frac{n}{2} \rfloor⌊2n​⌋。 现在定义一个函数f(S):将S01串以2二进制转化成10进制&#xff0c;要求f(S)是f(T)的倍数 题解&…

微软百名员工签名力挺996.ICU

中国程序员上传到 GitHub 的 996.ICU repo 火速在互联网广泛传播时&#xff0c;996 工作制引起了全球的广泛关注&#xff0c;Python 之父直指这是不人道的行为&#xff0c;事情经过不断发酵&#xff0c;中国官方媒体也接连发声表态要警惕「996 工作制」。就在今日&#xff0c;微…

201512-5 矩阵

只会暴力&#xff0c;答案没看懂&#xff0c;呜呜呜。乘的时候还乱七八糟的。 #include <iostream> #include <algorithm> #include <cstring> #include <vector> #include <queue> #include <bitset> #define ls (u<<1) #define …

P1174 打砖块

P1174 打砖块 题意&#xff1a; 题解&#xff1a; 参考题解&#xff1a; I_AM_HelloWord danxmz2006 这两个博客结合看&#xff0c;大致就能理解 我们只在N处转移&#xff0c;面对Y类的块无需决策&#xff0c;因为Y类的块可以一直打 不同的打砖块的顺序&#xff0c;决定了我…

包治百病 | 如何将一个.NET Core类库发布到NuGet

点击上方蓝字关注“汪宇杰博客”NuGet是.NET世界的包管理器&#xff0c;有官方的nuget.org&#xff0c;也允许构建公司和私人的服务器。在.NET Core的时代&#xff0c;封装一个NuGet包比以往更容易&#xff0c;我们来看看吧&#xff01;NuGet账号如果你想和微软一起予力众生&am…

虚树简单例题

P2495 [SDOI2011]消耗战 代码 有的虚树建立好像把一些点没建&#xff0c;他们不用判断是否是关键点&#xff1b; il void push(int x) {if(t 1) {s[ t] x;return;}int l lca(x, s[t]); if(l s[t]) return; //这句话我没看懂&#xff0c;因该就是这&#xff0c;脑子好乱&a…

卡特兰数(简单说说)

参考题解&#xff1a; 【算法】震惊&#xff01;&#xff01;&#xff01;史上最详细的卡特兰数浅谈&#xff01;&#xff01;&#xff01; 卡特兰数&#xff08;好像很有用的说&#xff09; 介绍 卡特兰数是组合数学中一种著名数列&#xff0c;其前几项为&#xff1a; 1, 2…

如何在ASP.NET Core中使用Azure Service Bus Queue

原文&#xff1a;USING AZURE SERVICE BUS QUEUES WITH ASP.NET CORE SERVICES作者&#xff1a;damienbod[1] 译文&#xff1a;如何在ASP.NET Core中使用Azure Service Bus Queue地址&#xff1a;https://www.cnblogs.com/lwqlun/p/10760227.html作者&#xff1a;Lamond Lu源代…

NEC Programming Contest 2021 (AtCoder Beginner Contest 229)

终于开始补提了 重点 : C&#xff0c; E的倒着算&#xff0c; F的染色&#xff0c;G的相邻的转换&#xff1b; B - Hard Calculation #include <iostream> #include <algorithm> #include <cstring> #include <vector> #include <cmath> #inclu…

2021银川Problem D. Farm(不保证正确性)

2021银川Problem D. Farm &#xff08;注&#xff1a;由于没有数据&#xff0c;暂不保证正确性&#xff09; 题意&#xff1a; 有n个点&#xff0c;m个有权边&#xff0c;有q个限制条件&#xff0c;每个限制条件有两个选择&#xff1a;选u个边&#xff0c;选第v个边&#xff…

从B站的代码泄露事件中,我们能学到些什么?

先声明一下&#xff0c;本文不聊ISSUE中的七七八八&#xff0c;也不聊代码是否写的好&#xff0c;更不聊是不是跟蔡徐坤有关之类的吃瓜内容。仅站在技术人的角度&#xff0c;从这次的代码泄露事件&#xff0c;聊聊在代码的安全管理上&#xff0c;通常都需要做哪些事来预防此类事…