CF506E题解

本文详细介绍了CF506E问题的解决方案,通过神larryzhong的视角揭示了BM算法在该问题上的应用。larryzhong指出此题为BM算法的经典实例,鼓励不会的读者自行研究学习。代码展示部分展示了如何利用BM算法高效解决问题。
摘要由CSDN通过智能技术生成

看到这题还没有吊打标程的BM题解,神larryzhong(即hellomath)连连怒斥。

larryzhong说这是BM板子,没什么讲的意义,不会的自行百度。

下面贴上larryzhong吊打标程的代码:

#include <bits/stdc++.h>
using namespace std;

const int P = 10007;
int n, m, tot, f[2][210][210];
char s[210];
struct mat {
    unsigned long long a[300][300]; } A, B;

mat operator * (const mat &A, const mat &B) {
   
	static mat C; memset(C.a, 0, sizeof(C.a));
	for (int i = 1; i <= tot; i++) {
   
		for (int j = 1; j <= tot; j++) if (A.a[i][j]) {
   
			for (int k = 1; k <= tot; k++) {
   
				C.a[i][k] += A.a[i][j] * B.a[j][k];
			}
		}
	}
	for (int i = 1; i <= tot; i++) {
   
		for (int j = 1; j <= tot; j++) {
   
			C.a[i][j] %= P;
		}
	}
	return C;
}

int qp(int x, int y) {
   
	int z = 1;
	
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值