題目
用一道板子題來複習一下\(bsgs\)
\(bsgs\)用於求解形如
\[a^x\equiv b(mod\ p)
\]這樣的高次不定方程
由於費馬小定理的存在,我們可是直接暴力掃一遍\(p\),由於\(p-1\)次之後肯定會有迴圈節出現,所以\(o(p)\)時間內就可以出解
\(bsgs\)本質上就是一種分塊了
設\(m=ceil(\sqrt)\),我們設\(x=i\times m-j\)
顯然我們只需要\(i,j\in[0,m]\)就可以令\(x\)表示\([0,p]\)之間的所有數
現在我們的方程變成了這個樣子
\[\frac}\equiv b(mod\ p)
\]也就是
\[a^\equiv b\times a^j(mod\ p)
\]我們可以先開乙個\(hash\)表,把所有\(b\times a^j\),其中\(j\in[0,m]\)的值存下來
之後我們挨個檢驗\(a^\)的值就好了,如果在\(hash\)表裡找到和\(a^\)相等的數,那麼\(i\times m-j\)就是答案了
**
#include#include#include#include#define re register
#define ll long long
using namespace std::tr1;
unordered_mapma;
ll a,b,p;
int m;
inline ll quick(ll a,ll b) return s;}
int main()
s=s*t%p;
} puts("no solution");
return 0;
}
調整隊形 TJOI2007
給定乙個初始的序列以及四種操作,問最少操作多少次可以是序列變為回文序列。操作如下 在隊伍左側或右側新增乙個數 在隊伍中插入乙個數 刪除乙個數 改變乙個數的值 看到給定的序列和改數的操作 其實還是因為詢問是最少操作次數 可以想到區間dp。設子狀態 dp i j 表示將區間 i,j 變為回文序列的最少操...
題解 TJOI2007 路標設定
目錄分析 注意事項 code 執行限制 時間 1.00 textrm 空間 128 textrm b 市和 t 市之間有一條長長的高速公路,這條公路的某些地方設有路標,但是大家都感覺路標設得太少了,相鄰兩個路標之間往往隔著相當長的一段距離。為了便於研究這個問題,我們把公路上相鄰路標的最大距離定義為該...
二分答案 TJOI2007 路標設定
本人水平有限,題解不到為處,請多多諒解 本蒟蒻謝謝大家 題目 傳送門 在刷題時,總會遇到求最大值最小,最小值最大問題,也許它會暗喻是這樣的乙個問題。對於這樣的乙個問題,你會發現用dp和列舉都會超時超記憶體,或者說很麻煩,所以這是乙個比較簡單的解題方式。對於難以直接確定解的問題,採取二分列舉 檢驗的思...