hdu 4686 Arc of Dream 多校第九場
矩陣+快速冪
根據 a[i]*b[i]=(a[i-1]*ax+ay)*(b[i-1]*bx+by) == a[i-1]*b[i-1]*ax*bx+a[i-1]*ax*by+b[i-1]*bx*ay+ay*by
用公式推出矩陣之後 快速冪一下就好了。。。
#include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #include <queue> using namespace std; #define clr(a, x) memset(a, x, sizeof(a)) #define rep(i, n) for (int i = 0; i < (int)(n); i++) #define REP(i,a,b) for(int i=a;i<=b;i++) typedef __int64 lld; const int maxn = 1010; const lld mod = 1000000007; struct mat { lld a[5][5]; }; mat res,org; mat mul(mat a,mat b) { mat ret; for(int i=0;i<5;i++) for(int j=0;j<5;j++) { lld t=0; for(int k=0;k<5;k++) t=(t+a.a[i][k]*b.a[k][j])%mod; ret.a[i][j]=t; } return ret; } void ksm(lld n) { while(n) { if(n&1) res=mul(res,org); org=mul(org,org); n>>=1; } } int main() { lld n,a0,ax,ay,b0,bx,by; while(cin>>n>>a0>>ax>>ay>>b0>>bx>>by) { memset(res.a,0,sizeof(res.a)); memset(org.a,0,sizeof(org.a)); res.a[0][1]=a0*b0%mod; res.a[0][2]=a0%mod; res.a[0][3]=b0%mod; res.a[0][4]=1; org.a[0][0]=1; org.a[1][0]=1;org.a[1][1]=((ax%mod)*bx)%mod; org.a[2][1]=ax*by%mod;org.a[2][2]=ax%mod; org.a[3][1]=bx*ay%mod;org.a[3][3]=bx%mod; org.a[4][1]=ay*by%mod;org.a[4][2]=ay%mod;org.a[4][3]=by%mod;org.a[4][4]=1; ksm(n); cout<<res.a[0][0]<<endl; } } /* res AoD ai*bi ai bi 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 org 1 0 0 0 0 1 ax*bx 0 0 0 0 ax*by ax 0 0 0 bx*ay 0 bx 0 0 ay*by ay by 1 */
相關推薦
hdu 4686 Arc of Dream 多校第九場
矩陣+快速冪 根據 a[i]*b[i]=(a[i-1]*ax+ay)*(b[i-1]*bx+by) == a[i-1]*b[i-1]*ax*bx+a[i-1]*ax*by+b[i-1]*bx*ay+ay*by 用公式推出矩陣之後 快速冪一下就好了。。。 #inc
HDU-4686-Arc of Dream (矩陣快速冪)
原題連結: An Arc of Dream is a curve defined by following function: where a 0 = A0 a i = a i-1AX+AY b 0 = B0 b i = b i-1BX+BY What is the value o
HDU 4686 Arc of Dream (矩陣快速冪)
#include<bits/stdc++.h> using namespace std; #define debug puts("YES"); #define rep(x,y,z) for(int (x)=(y);(x)<(z);(x)++) #def
hdu 6127 : Hard challenge (2017 多校第七場 1008)(計算幾何)
for %d logs opera log val r+ ++ show 題目鏈接 題意:二維平面上有n個點(沒有重疊,都不在原點,任意兩點連線不過原點),每個點有一個權值,用一條過原點的直線把他們劃分成兩部分,使兩部分的權值和的乘積最大。輸出最大的乘積。 極角排序後,將原
HDU 5316 Magician(2015多校第三場 線段樹)
Fantasy magicians usually gain their ability through one of three usual methods: possessing it as an innate talent, gaining it through study and practice,
hdu多校第九場 1005(hdu-6430:TeaTree)
題目大意: 對於一個結點 x,它的值可以是當前子樹內任意兩點的gcd值。但是要求 lca(i,j)=x。 最後問你每個結點最大的值可能是多少,如果不存在輸出-1。 解題思路: 本來想用樹上dsu來寫的,結果寫了一上午,總感覺dsu有哪些地方不對勁,開始刪刪改改
hdu 5852 Intersection is not allowed! (2016多校第九場1009)組合
這是一道公式題,雖然想了半天也想不出來,https://en.wikipedia.org/wiki/Lindström–Gessel–Viennot_lemma看這個就行了。 #include<cstdio> #include<cstring> #i
2018牛客多校第九場E(動態規劃,思維,取模)
pac namespace for ons mod 思維 space scan 動態規劃 #include<bits/stdc++.h>using namespace std;const long long mod=1000000007,inv=57000000
杭電多校第九場 HDU6415 Rikka with Nash Equilibrium dp
lar mon 範圍 font fin guarantee stc occurs wing Rikka with Nash Equilibrium Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 524288
2018 Multi-University Training Contest 9 杭電多校第九場
1001 Rikka with Nash Equilibrium 可以dp,也可以找規律 #include<bits/stdc++.h> #define N 100005 #define P pair<int,int> using namespace std
杭電多校第九場
k題題意 一天你去打羽毛球 遇見a,b,c,d四種人。 a是白條哥啥都沒有,b只有拍子,c只有球,d有一個拍子一個球。 pop(a+b+c+d)=n pop是人數 你現在想打羽毛球,從這四種人中任意挑人打比賽,要求至少有兩個拍子一個球,可以任意個人。。。 問在
2018杭電多校第九場
A #include <iostream> #include <cmath> #include <cstring> #include <cstdio> #include <algorithm> #include &
2018暑假杭電多校第九場
1001-Rikka with Nash Equilibrium(hdu 6415) 題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=6415 題
2019牛客多校第九場
H Cutting Bamboos 題意 給n個高度,每次獨立詢問一個區間\([l,r]\),對於這個區間的所有高度,要求砍\(y\)次剛好全部砍完,問第\(x\)次砍的位置。 分析 可以二分砍的位置,計算出第\(x\)次砍掉的所有高度,進行check,所以問題就轉化為如何求區間\([l,r]\)裡大於某個
2017多校第4場 HDU 6078 Wavel Sequence DP
bsp wav hdu pac i++ size 個數 style mem 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=6078 題意:求兩個序列的公共波形子序列的個數。 解法: 類似於最長公共上升子序列,對於每個i,只考慮
2015多校第7場 HDU 5379 Mahjong tree 構造,DFS
print () name long scanf 2015多校 printf color tree 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=5379 題意:一顆n個節點n-1條邊的樹,現在要給每個節點標號(1~n),要求
2016多校第4場 HDU 6076 Security Check DP,思維
pro begin sizeof || i++ 預處理 通過 第一個 ans 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=6076 題意:現要檢查兩條隊伍,有兩種方式,一種是從兩條隊伍中任選一條檢查一個人,第二種是在每條隊伍
hdu 6088 Rikka with Rock-paper-scissors (2017 多校第五場 1004) 【組合數學 + 數論 + 模意義下的FFT】
i++ put c擴展 notice const pri 得到 處理 質數 題目鏈接 首先利用組合數學知識,枚舉兩人的總勝場數容易得到 這還不是卷積的形式,直接搞的話復雜度大概是O(n^2)的,肯定會TLE。但似乎和卷積有點像?想半天沒想出來。。多謝Q巨提醒,才知道可以用
2017多校第7場 HDU 6129 Just do it 找規律
ble nbsp bool name def ons spa esp bre 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=6129 題意:求a序列後m次xor前綴和 解法: 手動對1位置對每個位置的貢獻打表發現 第一次 貢
2017多校第9場 HDU 6170 Two strings DP
ems str php hdu 鏈接 兩種 namespace turn bit 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=6170 題意:給了2個字符串,其中第2個字符串包含.和*兩種特別字符,問第二個字符串能否和第一個