題麵點這裡
概括一下題目,就是維護矩陣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 的點數 之後,原來的所...