首页 > TAG信息列表 > SNOI2019
【洛谷5330】[SNOI2019] 数论(数论)
点此看题面 给定一个大小为\(n\)的整数集\(A\),一个大小为\(m\)的整数集\(B\)以及三个数\(P,Q,T\)。 求\(\sum_{i=0}^{T-1}[(i\% P\in A)\wedge(i\% Q\in B)]\)。 \(n,m\le10^6\) 数论+建图 考虑枚举\(a_i\in A\),去计算有多少个\((kP+a_i)\% Q\in B\)。 发现\(P\)固定,每次\(k\)增P5331 [SNOI2019]通信
说在前面的话 今天异常颓废突发奇想,想要把自己之前这道题目的奇怪做法记录一下,可是发现洛谷已经有人捷足先登了。 题解 你发现对于每一个站点,它需要和前面的每一个站点连边,同时对于比他大的和比他小的权值计算方式不一样,我们就考虑用主席树优化建图,然后就好了。 代码 #include<bit[SNOI2019]通信
题目 传送门 to LOJ 思路 题目意思很简单。网络流建模很容易。 每个点开两个点 i i i 和 i ′[SNOI2019] 字符串 - 思维
Description 给定一个长度为 \(n \le 10^6\) 的字符串,设删掉第 \(i\) 个字符后得到的字符串为 \(s_i\),按照字典序对 \(s_1,s_2,...,s_n\) 排序。如果两个字符串相等,那么认为编号小的字符串字典序更小。 Solution 对于原串 \(a\),预处理出对于每一个 \(i\),最小的 \(j>i\) 使得 \(a_iLuogu P5331 [SNOI2019]通信
Link KM #include<cstdio> #include<cstring> #include<algorithm> using i64=long long; const int N=2007,inf=0x3f3f3f3f; int n,a[N],w[N][N],vis[N],A[N],B[N],slack[N],pre[N],mat[N]; int read(){int x;scanf("%d",&x);return x;} voiLOJ #3098. 「SNOI2019」纸牌 动态规划+矩阵乘法
挺好的一道计数题. code: #include <bits/stdc++.h> #define N 100007 #define ll long long #define mod 998244353 #define setIO(s) freopen(s".in","r",stdin) using namespace std; ll n,k[N]; int C,X,a[N]; int add(intLuogu P5329 [SNOI2019]字符串
Link 比较\(s_i',s_j'\)只需要知道\(lcp(\min(i,j),\min(i,j)+1)\)。 所以我们可以\(O(n)\)预处理所有的结果然后sort/基数排序。 #include<cstdio> const int N=1000007; int las[N],pos[N],len[N];char s[N]; int main() { int n,L,R,c=0; scanf("%d%s",&aP5331 [SNOI2019]通信 [线段树优化建图+最小费用最大流]
这题真让人自闭…我EK费用流已经死了?… (去掉define int long long就过了) 我建的边害死我的 spfa 还是spfa已经死了? 按费用流的套路来 首先呢 把点 \(i\) 拆成两个点 \(i\) 和 \(i'\) 令 \(i'\) = \(i+n\) 对任意的 \(i\) 点 建 \(s -> i' -> t\) 表示这个连到控制中心… \(s -> i「SNOI2019」字符串
题目链接:Click here Solution 事实上,我们发现我们比较的两个字符串是极为相似的 设我们当前要比较的两个字符串为\(s_x\)和\(s_y\),而他们不同的地方就在于原串\(x\sim y\)的部分 而这一部分也是十分相似的,准确的来说,他们对应的位置在原串中事实上是位置相邻的点 则我们只需要记录洛谷$P5329\ [SNOI2019]$字符串 字符串
正解:字符串 解题报告: 传送门$QwQ$ 有两个很妙的方法,分别港下$QwQ$ 首先为了表示方便,这里和题面一样设$s_i$表示去掉第$i$个字母得到的字符串.另设$lcp(i,j)$表示$suf_i,suf_j$的最长公共前缀 考虑现在如果要比较$s_i$和$s_j$.不妨设$i<j$ 首先显然的是$i$之前和$j$之后的字符洛谷$P5330\ [SNOI2019]$数论 数论
正解:数论 解题报告: 传送门$QwQ$ 这题还蛮妙的$QwQ$(,,,其实所有数论题对我来说都挺妙的$kk$ 考虑先建$Q$个点,编号为$[0,Q)$,表示膜$Q$的余数.然后每个点$i$向$(i+P)\ mod Q$连边$QwQ$ 显然这个是会成环的,事实上这个环的长度就$\frac{P\cdot Q}{gcd(P,Q)}$(不明白的可以去康那【LOJ】#3095. 「SNOI2019」字符串
LOJ#3095. 「SNOI2019」字符串 如果两个串\(i,j\)比较\(i < j\),如果离\(a_{i}\)最近的不同的数是\(a_{k}\),如果\(j < k\)那么\(i\)排在\(j\)前面 否则的话如果\(a_{k} < a_{i}\),那么\(i\)排在\(j\)前 于是写个比较函数扔到sort里就可以了 #include <bits/stdc++.h> #define fi firs[SNOI2019]字符串
[SNOI2019]字符串 降智题 法一: 后缀数组+sort 听说过不去 法二: 删a<删b 只要比较黄色部分字典序即可 lcp[i]维护lcp(i,i+1)后缀的lcp sort 法三: 因为连续相同删除任何一个结果一样 就把连续相同的合在一起 可以通过相邻的s[i],s[j]判断删除谁更优 发现,倒着考虑,可以直接通[SNOI2019]数论
https://www.luogu.org/problemnew/show/P5330 题解 我们要求有多少个x满足: \[ x=a_i+P*k_1=b_j+Q*k_2 \] 然后移一下: \[ a_i+P*k_1=b_j \ (mod\ Q) \] 可以发现这个东西是有循环节的。 可以发现它的循环周期是\(lcm(P,Q)\)。 那么我们需要求的是对于每个\(a_i\),它在长度为\(Q\)的环SNOI2019场外VP记
SNOI2019场外VP记 教练突然说要考一场别省省选来测试水平...正好还没看题那就当VP咯w... Day 1 八点开题打 .vimrc. 先看了看题目名...一股莫名鬼畜感袭来... 怎么T1就是字符串鸭?HEOI 2019 D1T2的心理阴影为啥我会xjb套那么多东西上去啊QAQ...T2数论T3通信? 不好的感觉... 读了读T