首页 > 其他分享 >HDU 4686 Arc of Dream(构造矩阵)

HDU 4686 Arc of Dream(构造矩阵)

时间:2024-01-15 15:12:15浏览次数:28  
标签:4686 HDU ll typedef Arc ay ax include define

设\(t_n=a_n*b_n\)
把\(a_n 和b_n\)拆出来
\(t_n=(a_{n-1}*ax+ay)(b_{n-1}*bx+by)\)
\(t_n=ax*bx*t_{n-1}+ax*by*a_{n}+ay*bx*b_{n-1}+ay*by\)
那么同时维护\(s_n, t_n, a_n, b_n 和常数即可\)

#include<cstdio>
#include<algorithm>
#include<cstring>
#include<map>
#include<queue>
#include<bitset>
#include<cmath>
#include<set>
#include<unordered_map>
#define fo(i,a,b) for (ll (i)=(a);(i)<=(b);(i)++)
#define fd(i,b,a) for (ll (i)=(b);(i)>=(a);(i)--)
#define mk(x,y) make_pair((x),(y))
//#define A puts("Yes")
//#define B puts("No")
using namespace std;
typedef double db;
typedef long long ll;
//typedef __int128 i128;
const int N=1e6+5;
const ll inf = 1ll << 60;
const ll mo=1000000007;
ll n,a[N],ax,ay,b[N],bx,by;
struct mat{
	ll a[13][13];
	void init() {
		memset(a,0,sizeof(a));
	}
	friend mat operator * (const mat &a,const mat &b) {
		mat c;
		c.init();
		fo(i,1,5) fo(j,1,5) fo(k,1,5) {
			c.a[i][j]+=a.a[i][k]*b.a[k][j]%mo;
			c.a[i][j]%=mo;
		}
		return c;
	}
	void print(){
		fo(i,1,5) {
			fo(j,1,5) printf("%lld ",a[i][j]);
			printf("\n");
		}
	}
}; 

void solve(){
	scanf("%lld %lld %lld",&a[0], &ax,&ay);
	scanf("%lld %lld %lld",&b[0], &bx,&by);
	
	if (!n) {
		printf("%d\n",0);
		return;
	}
	a[0]%=mo;
	b[0]%=mo;
	ax%=mo;
	ay%=mo;
	bx%=mo;
	by%=mo;
	
	mat t,y;
	t.init();
	y.init();
	
	t.a[1][1]=a[0]*b[0]%mo;
	t.a[2][1]=a[0]*b[0]%mo;
	t.a[3][1]=a[0];
	t.a[4][1]=b[0];
	t.a[5][1]=1;
	
	y.a[1][1]=1; y.a[1][2]=ax*bx%mo; y.a[1][3]=ax*by%mo; y.a[1][4]=ay*bx%mo; y.a[1][5]=ay*by%mo;
	fo(i,2,5) y.a[2][i]=y.a[1][i];
	
	y.a[3][3]=ax; y.a[3][5]=ay;
	y.a[4][4]=bx; y.a[4][5]=by;
	y.a[5][5]=1;
	
//	y.print();

	n--;
	while (n) {
		if (n&1) t=y*t;
		y=y*y;
		n/=2;
	}
	
	printf("%lld\n",t.a[1][1]);
}
int main()
{
//	freopen("data.in","r",stdin);
	
	while (scanf("%lld",&n)!=EOF) {
		solve();
	}
	
	return 0;
}



标签:4686,HDU,ll,typedef,Arc,ay,ax,include,define
From: https://www.cnblogs.com/ganking/p/17965393

相关文章

  • 关于ArcEngine在多线程模式下的注意点
    仅以我的环境来描述的我问题和解决方案,超出该范围的暂时没有考虑。一、环境ArcEngine10.2语言:C#.net版本:4.6.1二、需求创建GDB数据库,并从json文件把数据写入GDB中,包含了图形数据,为了兼顾效率,我使用了多线程来生成GDB,但也做了控制,一个线程只会对一个GDB进行操作。三、问题:......
  • Arch Linux 更换国内镜像源
    自己用的ArchLinux在使用pacman-Syu更新系统时出现了连接超时的问题,看来又需要换个镜像源了。趁着今天还没想好要分享的内容,那就干脆以此为主题,总结一下如何给ArchLinux系统更换国内镜像源。手动更换这里说的「手动」是相对于后面要介绍的命令方式而言,是比较基础的镜像......
  • WSL2 配置 ArchLinux 初始化环境
    这篇文章针对的是在Win11系统的WSL2下安装ArchLinux系统,网上很多中文教程都是使用LxRunOffline去做的,但是实际上该方法已经过时了,目前有更加先进的ArchWSL方式。基于LxRunOffline安装ArchLinux教程:Here如果用的是wsl1,不保证本教程可以适用。安装ArchLinux子系统......
  • vite构建的react+ts项目中使用arcodesign组件的问题
    今天在react项目中使用arcodesign组件库,引入的图标巨大无比,调样式也不起作用,如下图。网上找了也没看到类似的问题,去官网文档里看,发现是没有引入组件的样式。在我这个vite构建的react+ts项目中找到两个解决办法:第一个是直接引入全部样式import"@arco-design/web-react/dist/cs......
  • SpringBoot中整合ElasticSearch快速入门以及踩坑记录
    场景若依前后端分离版手把手教你本地搭建环境并运行项目:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/108465662参考上面搭建项目。ElaticSearchElasticsearch是java开发的,基于Lucene的搜索引擎。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulW......
  • ElasticSearch降本增效常见的方法 | 京东云技术团队
    Elasticsearch在db_ranking的排名不断上升,其在存储领域已经蔚然成风且占有非常重要的地位。随着Elasticsearch越来越受欢迎,企业花费在ES建设上的成本自然也不少。那如何减少ES的成本呢?今天我们就特地来聊聊ES降本增效的常见方法:弹性伸缩分级存储其他:(1)数据压缩(2)off......
  • ElasticSearch降本增效常见的方法 | 京东云技术团队
    Elasticsearch在db_ranking的排名不断上升,其在存储领域已经蔚然成风且占有非常重要的地位。随着Elasticsearch越来越受欢迎,企业花费在ES建设上的成本自然也不少。那如何减少ES的成本呢?今天我们就特地来聊聊ES降本增效的常见方法:弹性伸缩分级存储其他:(1)数据压缩(2)offheap1弹性伸缩......
  • 【代码复现(吐槽向)】Revisiting a Methodology for Efficient CNN Architectures in Pr
    【论文写不出来,痛苦中】这篇文章是我看到框架最简单,效果最好的对于公开数据集的攻击没有之一。代码:KULeuven-COSIC/TCHES20V3_CNN_SCA(github.com)吐槽:1坑:TF的版本问题,有了torch,谁用TF,但是偏偏GITHUB上所有的SCA的代码都是TF写的,还有丧心病狂TF1.x,版本安装几十年,不如选一个服......
  • ARC151D Binary Representations and Queries
    ARC151DBinaryRepresentationsandQueries题目链接:ARC151DBinaryRepresentationsandQueries非常好思维题。思路首先我们会发现每个操作都是\(\frac{n}{2}\)的\(A_i\),给另外\(\frac{n}{2}\)的\(A_j\)的增加。这题直接去维护每个操作时间复杂度会开心的笑。所以......
  • ARC151C 01 Game
    ARC151C01Game题目链接:ARC151C01Game\(SG\)函数好题。思路考虑把原问题分成多个区间的不同问题,求\(SG\)在异或起来。设:1.\(SG_1(len)\)长度为\(len\),边界没有数字。2.\(SG_2(len)\)长度为\(len\),只有一个边界有数字。3.\(SG_3(len)\)长度为\(len\),两个边界都......