luogu U103720 薇爾莉特 題解

2021-10-07 05:15:22 字數 1040 閱讀 4796

題麵點這裡

概括一下題目,就是維護矩陣or,要求最後整個矩陣的和,異或和

考慮對需要操作的值val

valva

l進行二進位制拆分,由於or對於乙個二進位制位上的操作是永久性的,那我們對每一位進行二維差分,最後做一遍二維字首和,對大於1

11的都當做1

11看,就結束了

#include

#define c getchar()

#define mod 1000000007

#define ll long long

#define rt register int

using namespace std;

inline

intread()

int b[

510]

[510][

32],p[40];

ll a[

510]

[510];

intmain()

max =

max(max , tmp)

;for

(rt i=

0;i<=tmp;

++i)

}for

(rt k=

0;k<=max;

++k)

}for

(rt k=

0;k<=max;

++k)}

ll ans1 =0;

for(rt i=

1;i<=n;

++i)

for(rt j=

1;j<=m;

++j) ans1 +

= a[i]

[j], ans1 %

= mod , ans2 ^

= a[i]

[j];

ans1 %

= mod;

printf

("%lld %lld %lld\n"

,ans1,ans2,ans1 * ans2 % mod)

;return0;

}

題解 原創題目 薇爾莉特

出題人 辰星凌 驗題人 無 題目傳送門 薇爾莉特 給出乙個 n 行 m 列的矩陣 最初全為 0 有 t 個操作,每次操作選出乙個子矩陣,將其中的所有元素都對 x 進行一次 or 求最後的矩陣。純暴力,沒有坑點,按照題意模擬一下就可以了。時間複雜度 o tn 2 分數 20pt code 1 incl...

題解 薇爾莉特的打字機

首先,這題需要處理字串,我們用 trie分析 先忽略刪除操作 拿樣例 1 舉個例子 首先把最開始的字串插入到樹中 然後薇爾莉特打了乙個字元 a 此時可以插入或者是不插入,就會有這樣的情況 不插入時,之前插入進去的字元均可以作為字串的結尾 假設之前插入了 x個字母,每乙個字母都可以作為串的結尾 現在插...

薇爾莉特的打字機題解

好題 就是我死活想不到,看題解後卻不得不佩服思路巧妙的題 我們將一種字串看做乙個點 每一次操作就是對所有存在的點進行拓展 不按,狀態不變 按下,狀態增加 這就是先按a後按b的例子。1.輸入乙個字母 所有子樹中沒有此字母的點會增加,所以我們用乙個陣列 f x 記載沒有此字母 x 的點數 之後,原來的所...