x 是乘法
以任意點為起點,一直以 2 x now % p(第一類) 做的話 或者3 x now%p(第二類) ,會形成乙個或者多個環。環上有什麼特點。對於 某個數z,它所對應的後一位是y,當 2 x z %p = 3 x z % p 相等的時候,這兩類的環在z後面的數y時一樣的。但是 -> 上式化簡 2 x z + n x p = 3 x z + m x p -> x = (n-m) x p -> z <=0 || z >= p 是不滿足的,故第一類環和第二類環某個相同的數接在後面的數不會相同。
有了以上結論,我們可以這樣做,先走第一類的點,當走不動時選擇走第二類去過渡一下(相當於以第二類為媒介,讓我們的路線從乙個第一類的環走到另乙個第一類的環),走不動就無合法序列。
對於起點是沒有要求的。
說的複雜,但是**還是很簡單。
**:
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#include
#define int long long
#define sc scanf
#define pf printf
using
namespace std;
typedef pair<
int,
int> pii;
typedef
long
long ll;
typedef
unsigned
long
long ll;
const
int inf =
0x3f3f3f3f
;const
double eps =
1e-4
;const
int mod =
998244353
;const
int n =
1000010
;bool book[n]
;int res[n]
,cnt;
signed
main()
if(!book[now*
2%p]
&& now*
2%p)
elseif(
!book[now*
3%p]
&& now*
3%p)
else
break;}
if(!plas) cout<<-1
}return0;
}
2019牛客多校第十場
對於s n s n s n 考慮某個字母是從s n 1 s n 1 s n 1 轉移還是從s n 2 s n 2 s n 2 轉移 include define fo i,a,b for i a i b i define n 10005 using namespace std int t,n,q,p...
19牛客多校第十場G
之前gym做過乙個畫圓的。然後這個也想畫圓。算了算複雜度n 3logn還蠻好。卡常卡了3個小時投降了。學藝不精啊。賽後去看了qls的 學到了神奇的優化技巧。比如我們要check點到直線的距離是否大於等於二分的半徑r。我們可以直接用叉積判,而不是算投影。我覺得最大的優化就在這了,理論上省了一半多常數。...
牛客網暑期多校 (第十場)
題意 給你乙個長度為 n 的序列,初始元素均為 0 有 3 種操作,1 是給序列的某乙個區間加上同乙個元素,2 是將此序列變為它的字首和序列,3 是求序列某乙個區間的和 資料保證 操作3 的次數不多於 500 次 思路分析 這題想了好久才勉強有點思路,挺不錯的一道題目 可以這樣想,當我們在某乙個位置...