首页 > TAG信息列表 > CQOI2018

P4454 [CQOI2018]破解D-H协议 题解

Content 已知有这样的一些数 \(A,B,a,b,g,P\),其中满足 \(A=g^a\mod P,B=g^b\mod p,K=A^b\mod p=B^a\mod p\)。现给定 \(P,g\),再给定 \(n\) 组 \(A,B\),求出每组对应的 \(K\)。 数据范围:\(2\leqslant A,B<P<2^{31},2\leqslant g<20,1\leqslant n\leqslant20\)。 Solution 这道题目乍

loj#2531. 「CQOI2018」破解 D-H 协议(BSGS)

题意 题目链接 Sol 搞个BSGS板子出题人也是很棒棒哦 #include<bits/stdc++.h> #define Pair pair<int, int> #define MP(x, y) make_pair(x, y) #define fi first #define se second #define int long long #define LL long long #define ull unsigned long long #define Fin(

题解P4454 [CQOI2018]破解D-H协议

题面比较长,但其实就是一道板子题 根据题意, \(g^a\equiv A(mod~p),g^b\equiv B(mod~p)\),可以直接通过BSGS求出 \(a,b\) 的值,然后直接用快速幂算出来即可 关于BSGS,可以看看我的博客 代码 #include<iostream> #include<cmath> #include<unordered_map> using namespace std; typ

P4454 [CQOI2018]破解D-H协议

链接 这题并不难只是需要把题读懂 — By ShadderLeave 一句话题意 给定两个数 \(p\)和\(g\),有\(t\)组询问,每组询问给出\(A\)和\(B\) 其中 A = \(g^a \bmod p\) B = \(g^b \bmod p\) 问你\(g^{ab} \bmod p\)是多少。 初步解法就是用BSGS求出每个\(a\),\(b\)在用快速幂算出\(g^{a

bzoj 5299: [Cqoi2018]解锁屏幕 状压dp+二进制

可以用 $lowbit$ 来优化枚举~  code:  #include <bits/stdc++.h> #define N 21 #define LL long long #define setIO(s) freopen(s".in","r",stdin) using namespace std; const LL mod=100000007; const double eps=

[bzoj5301][Cqoi2018]异或序列

bzoj luogu 依然莫队题 思路:看到连续异或想前缀和,发现就是$[l-1,r]$里面有多少对前缀和异或为k 莫队跑一跑时间不能再够用 完结 #include<cstdio>#include<algorithm>#include<cmath>using namespace std;const int N=100011;typedef long long lint;template<typename TP>void

bzoj5297 [Cqoi2018]社交网络

题目描述: bz 题解: 有向图矩阵树定理裸题。 与无向图区别是,对于一条边$(u,v)$,在基尔霍夫矩阵中令$a[v][v]++,a[u][v]--$。 同时以$k$为根时要扔掉第$k$行第$k$列。 代码: #include<cmath>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;typedef long lo

洛谷P4456 交错序列 [CQOI2018] dp+矩阵优化

正解:dp 解题报告: 传送门! 首先可以先拆下这个贡献式,为了方便之后设状态什么的,把式子转成和ny有关,就成了 ∑(n-y)a*yb 然后拆下式子,就可以得到 ∑C(i,a)*ni*(-y)a-i*yb 再化简下就∑C(i,a)*ni*(-1)a-i*ya+b-i 所以现在就是要求(-y)a-b-i 所以考虑设dp式:f[i][j]:填到了第i位的

题解 P4461 【[CQOI2018]九连环】

题解 P4461 【[CQOI2018]九连环】 ​ 由于各位大佬已经用各种方法,将公式推得我这里便不再过多阐述,我们来谈谈本题的实现~ ​ 首先,我们先来看公式:$\lfloor\frac{2^{n+1}}{3}\rfloor$ ​ 我们知道,因为n<=1e5,所以$|2^{n+1}|$很小,而且询问也只有10,所以我们如果能较快求出$2^{n+1

「luogu4462」[CQOI2018]异或序列

「luogu4462」[CQOI2018]异或序列 一句话题意 输入 \(n\) 个数,给定\(k\),共 \(m\) 组询问,输出第 \(i\) 组询问 \(l_i\) \(r_i\) 中有多少个连续子序列的异或和等于 \(k\)。数据范围均在 \([0,1e5]\)。 本题不强制在线,故莫队。 记序列 \(a\) 的前缀异或和 \(pre\),用一个桶 \(t_i\) 记

P4460 [CQOI2018]解锁屏幕

算是我比较擅长的类型,自己想想就会了。普通小状压,状态傻子都能想出来。一开始裸的枚举T了,30.后来与处理之后跑的飞起,就是不对,还是30分。后来看讨论版。。。mod竟然是1e8+7!!!这不有毒吗。。。 题干: 题目背景使用过Android 手机的同学一定对手势解锁屏幕不陌生。Android 的解锁屏幕由3

[CQOI2018]异或序列

嘟嘟嘟 前缀和+莫队。 先用前缀和预处理异或,于是问题变成了在\([L - 1, R]\)中求两个数异或等于\(k\)的数对个数。 然后就离线排序,按套路维护两个指针加加减减,并维护一个桶,每一次加\(x\),答案就加上\(bac[x ^ k]\),并且\(++bac[x]\),删除就减去贡献。 #include<cstdio> #include<io