TJOI2007 可愛的質數

2022-03-27 04:56:51 字數 896 閱讀 5684

題目

用一道板子題來複習一下\(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和列舉都會超時超記憶體,或者說很麻煩,所以這是乙個比較簡單的解題方式。對於難以直接確定解的問題,採取二分列舉 檢驗的思...