Luogu P4910 帕秋莉的手環

2022-04-30 19:06:08 字數 1361 閱讀 8216

帕秋莉是蕾公尺莉亞很早結識的朋友,現在住在紅魔館地下的大圖書館裡。不僅擅長許多魔法,還每天都會開發出新的魔法。只是身體比較弱,因為哮喘,會在詠唱符卡時遇到麻煩。

她所用的屬性魔法,主要是生命和覺醒的「木」,變化和活動的「火」,基礎和不動的「土」,果實和豐收的「金」,寂靜和淨化的「水」,機動和攻擊的「日」,被動和防禦的「月」七種屬性

沒有窗戶的圖書館或許充滿了灰塵,不過她認為在書旁邊才是自己,所以她不能從書的旁邊離開。這樣已經一百年了。

經過數年魔法的沉澱,帕秋莉將她那浩瀚無邊的魔法的一部分濃縮到了一些特質的珠子中。

由於帕秋莉愛好和平,她只把象徵生命和覺醒的木屬性魔法和果實和豐收的金屬性魔法放入了珠子中。

她認為光要這些珠子沒有什麼用處,於是她想將這些珠子串成魔法手環,這樣就好看多了。於是,她拿出來用來串這些珠子的線 - 霧雨靈徑。

她將這些珠子串到一起之後發現了一些性質:一段霧雨靈徑的顏色是由兩邊的珠子的屬性決定的,當一段霧雨靈徑連線的兩個珠子中只要有乙個是金屬性的,那麼這段霧雨靈徑的顏色就為金色

帕秋莉想要乙個全都是金色的手環,而且她還想知道一共有多少種方案。由於她還要研究新的魔法,她就把這件事交給了你。由於她的魔法浩瀚無邊,她有無窮的珠子

她並不想看著好幾十位的數字,於是你需要對1000000007進行取模

一眼不可做系列

首先理解一下題,一段線是金色的僅當它的兩個端點至少有乙個金屬球。

然後…沒有高大上演算法,只有手玩小資料得到的規律:n答案

1123

3447

510規律就是ans[i] = ans[1-1] + ans[i-2]

鑑於資料範圍矩陣乘法

#include#include

#include

using

namespace

std;

const

long

long maxn =1e18;

const

long

long p = 1000000007

;struct

matrix str,pro;

long

long

n;inline

void

init()

inline matrix mul(matrix x,matrix y) }}

return

res;

}inline matrix quick_pow(matrix x,

long

long

y) }

while

(y)

return

res;

}int

main()

return0;

}

491 遞增子串行

不能修改原陣列,因此重複元素不一定相鄰 同一層中可選的值必須是當前層中首次出現 因此需要用unordered set記錄當前層使用過的值,注意到本題的值區間尾 100,100 因此可以優化為長度為201的layer陣列,將值 100對映到layer陣列上 遞增子列長度至少為2 遞增 要選的值 pat...

leetcode491 遞增子串行

這一題使用dfs回溯法,我們先來分析一下這種方法的時間複雜度 如圖。由於我們知道陣列的長度不超過15,所以這顆樹最壞的情況的啊hi見複雜度為2 15,也就是幾十萬的計算量,是可以接收的。那麼我們根據思路寫出演算法 class solution public void dfs set ans,list...

leetCode 491 遞增子串行

給定乙個整型陣列,你的任務是找到所有該陣列的遞增子串行,遞增子串行的長度至少是2。示例 輸入 4,6,7,7 輸出 4 6 4,7 4 6,7 4 6,7 7 6,7 6 7,7 7 7 4,7 7 說明 給定陣列的長度不會超過15。陣列中的整數範圍是 100 100 給定陣列中可能包含重複數字,相...