BZOJ 3329: Xorequ(數位dp+遞推)

傳送門

解題思路

  可以把原式移項得\(x\)^\(2x\)=\(3x\),而\(x+2x=3x\),說明\(x\)二進制下不能有兩個連續的\(1\)。那么第一問就是一個簡單的數位\(dp\),第二問考慮遞推按位做,設\(f(i)\)表示最后一位為\(0\)的答案,\(g(i)\)表示最后一位為\(1\)的答案,那么\(f(i)=g(i-1)+f(i-1)\)\(g(i)=f(i-1)\),整理一下發現\(f(i)=f(i-1)+f(i-2)\),就是斐波那契的形式,直接矩乘即可。

代碼

#include<bits/stdc++.h>using namespace std;
const int N=70;
const int MOD=1e9+7;
typedef long long LL;int a[N],len;
LL f[N][2][2],n;
bool vis[N][2][2];LL DFS(int x,int lst,int lim){if(vis[x][lst][lim]) return f[x][lst][lim];vis[x][lst][lim]=1;if(!x) return f[x][lst][lim]=1;if(!lst && (lim || a[x])) f[x][lst][lim]=DFS(x-1,1,lim);f[x][lst][lim]+=DFS(x-1,0,lim|(a[x]==1));return f[x][lst][lim];
}struct Matrix{int a[3][3];void clear(){memset(a,0,sizeof(a));}void init(){a[1][1]=a[2][2]=1;}friend Matrix operator*(const Matrix A,const Matrix B){Matrix ret; ret.clear();for(int i=1;i<=2;i++)for(int j=1;j<=2;j++)for(int k=1;k<=2;k++)(ret.a[i][j]+=1ll*A.a[i][k]*B.a[k][j]%MOD)%=MOD;return ret;}
}mat,ans;Matrix fast_pow(Matrix x,LL y){Matrix ret; ret.clear(); ret.init();for(;y;y>>=1){if(y&1) ret=ret*x;x=x*x;}return ret;
}int main(){int T; scanf("%d",&T);while(T--){memset(vis,false,sizeof(vis));memset(f,0,sizeof(f));scanf("%lld",&n); LL nn=n;len=0;while(n) a[++len]=(n&1),n>>=1;printf("%lld\n",DFS(len,0,0)-1);
//      cerr<<"!!!"<<endl;if(nn==1) puts("2");else if(nn==2) puts("3");else {
//          cerr<<"!!!"<<endl;ans.clear(); mat.clear();ans.a[1][1]=2; ans.a[1][2]=3;mat.a[1][2]=mat.a[2][2]=mat.a[2][1]=1;ans=ans*fast_pow(mat,nn-2);printf("%d\n",ans.a[1][2]);}}return 0;
}

轉載于:https://www.cnblogs.com/sdfzsyq/p/10621700.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449379.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449379.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449379.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ps -ef 命令說明

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 PS是LINUX下最常用的也是非常強大的進程查看命令 //以下這條命令是檢查java 進程是否存在. ps -ef | grep java下面對命令選項進行說明…

JS module的導出和導入

最近看了些Vue框架寫的程序&#xff0c;發現自己的前端知識還停留在幾年以前&#xff0c;發現現在Javascript程序里有各種各樣的對module的導入和到處&#xff0c;導入乍一看跟python的語法挺像的無非就是把from和import這兩個關鍵詞的使用顛倒了一下順序。仔細看下來還是和pyt…

專訪雷果國:從1.5K到18K 一個程序員的5年成長之路

摘要&#xff1a;上段時間CSDN博客上流傳了一篇比較勵志的博文&#xff0c;講述了一個程序員從基礎薄弱到入職心儀公司的5年成長經歷&#xff0c;為了給那些待畢業或已畢業但對未來仍很迷茫的朋友指引前行的方向&#xff0c;CSDN專訪了這篇博文的作者。 導語:今年三月份&#…

真格量化——商品期權基本策略

#!/usr/bin/env python # coding:utf-8 from PoboAPI import * import datetime import time import numpy as np from copy import *#開始時間,用于初始化一些參數 def OnStart(context) :context.myacc = None#登錄交易賬號if context.accounts["回測期貨"].Login…

關于windows下的libtorch配置

關于windows下的libtorch配置 1.環境 Windows service 2012 R2/Windows10Cuda 9.0OpenCV3.4.1Libtorch1.0VS2017/VS20152.配置 第一步:CUDA 9.0cudnn7.5安裝(也可以用CUDA8.0) 如果已經安裝了cuda8.0及以上版本,可以忽略此步驟。 libtorch有cuda8.0 和cuda9.0的版本,為了與vs版…

spring集成多個rabbitMQ

轉自&#xff1a;https://blog.csdn.net/zz775854904/article/details/81092892 MQ全稱為Message Queue, 消息隊列&#xff08;MQ&#xff09;是一種應用程序對應用程序的通信方法。應用程序通過讀寫出入隊列的消息&#xff08;針對應用程序的數據&#xff09;來通信&#xff0…

解決(springboot項目)mysql表名大寫,造成jpa Table doesn't exist問題

這個問題有2種解決方法&#xff1a; 我的報錯是&#xff1a;java.sql.SQLSyntaxErrorException: Table gaei_ms.gaei_work_task doesnt exist方法一&#xff1a; 轉自&#xff1a;https://confluence.atlassian.com/fishkb/table-xxx-doesn-t-exist-error-with-mysql-server-30…

一個三流學校程序員的奮斗歷程

寫作用意 這些日子我一直在寫一個實時操作系統內核&#xff0c;已有小成了&#xff0c;等寫完我會全部公開&#xff0c;希望能夠為國內IT的發展盡自己一份微薄的力量。最近看到很多學生朋友和我當年一樣沒有方向&#xff0c;所以把我的經歷寫出來與大家共勉&#xff0c;希望能…

真格量化——做空波動率策略

# coding:utf-8 #!/usr/bin/env python # EmuCounter2 from PoboAPI import * import datetime import numpy as np#開始時間,用于初始化一些參數 def OnStart(context) :print "system starting..."#設定全局變量品種g.code1 = "m1901-C-3300.DCE" #豆粕…

搭建webpack基礎配置

搭建webpack基礎步驟&#xff1a; 1.去官方網站下載node.js&#xff08;根據自己電腦的系統類型選擇&#xff09; 2.安裝node.js完成后打開cmd命令提示符&#xff1a; 出現版本號證明安裝成功 3.cd到工程目錄下 npm install -g vue-cli&#xff08;這里使用的是vue-cli腳手架安…

JPA 中 sql 預編譯 -- EntityManager 使用 預編譯

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 實現方式 &#xff1a; 1. 注入em: PersistenceContextprivate EntityManager entityManager; 注入方式 2&#xff1a; PersistenceUn…

持續記函數

自己寫文章的緣由 juejin.im/post/5c7368… 2019年2月26日 星期二 array_shift — 將數組開頭的單元移出數組 <?php $stack array("orange", "banana", "apple", "raspberry"); $fruit array_shift($stack); print_r($stack); ?…

研究:多感官教學增強記憶 學習效率事半功倍

人們在記憶外部信息時&#xff0c;必須先要去接受這些信息&#xff0c;而接受信息的“通道”不止一個&#xff0c;有視覺、聽覺、嗅覺、味覺、觸覺等等。有多種感官參加的記憶叫做“多通道”記憶。圖為臺中一幼稚園戶外寫生活動。 生動的教學方法往往可以吸引大多數孩子&#…

330 div+css Experience

今天學習的div&#xff0c;感覺對編輯html更為方便快捷&#xff0c;但還是需要多練&#xff0c;多熟悉一下思路和邏輯方式 越來越感覺&#xff0c;代碼不是重要的&#xff0c;重要的是方向和思路&#xff0c;am的float clearfloat 及屬性&#xff0c;還有overflow 溢出的三個屬…

時間序列的平穩性檢驗方法匯總

時間序列平穩性檢驗方法&#xff0c;可分為三類&#xff1a; 圖形分析方法 簡單統計方法 假設檢驗方法 一、圖形分析方法 可視化數據 可視化數據即繪制時間序列的折線圖&#xff0c;看曲線是否圍繞某一數值上下波動&#xff08;判斷均值是否穩定&#xff09;&#xff0c;看…

tcp的發送端一個小包就能打破對端的delay_ack么?

3.10內核&#xff0c;反向合入4.9的bbr。 最近分析bbr的時候&#xff0c;收集了線上的一些報文&#xff0c;其中有一個疑問一直在我腦海里面&#xff0c;如下&#xff1a; 本身處于delay_ack狀態的客戶端&#xff0c;大概40ms回復一個delay_ack&#xff0c;當收到一個490字節的…

設置 git pull 無需輸入賬號和密碼

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 如果你用git從遠程pull拉取代碼&#xff0c;每次都要輸入密碼&#xff0c;那么執行下面命令即可 git config --global credential.help…

Git 誕生記

你可能有過這樣的經歷&#xff1a;在 debug 的時候這里加一句&#xff0c;那里減一句&#xff0c;順便改改參數&#xff0c;不一會你的程序就從一個 bug 增加到了無數個 bug 。最重要的是&#xff0c;你完全想不起來自己到底改了幾個地方&#xff0c;原來的程序到底長什么樣子了…

使用pandas進行量化回測(akshare)

本人看法&#xff0c;也就比excel高級一點&#xff0c;距離backtrader這些框架又差一點。做最基礎的測試可以&#xff0c;如果后期加入加倉功能&#xff0c;或者是止盈止損等功能&#xff0c;很不合適。只能做最簡單的技術指標測試。所以別太當回事。 導包&#xff0c;常用包導…

【BZOJ4543】【POI2014】Hotel加強版(長鏈剖分)

傳送門 題意&#xff1a;求樹上滿足三點之間距離兩兩相等的三元組個數 n≤1e5n\le 1e5n≤1e5 原題數據是n≤5000n\le5000n≤5000 考慮怎么做f[u][i]f[u][i]f[u][i]表示uuu為根&#xff0c;深度為iii的點的個數g[u][i]g[u][i]g[u][i]表示uuu為根&#xff0c;滿足2點到lcalcalca的…