CF_EDU51 E. Vasya and Big Integers】的更多相关文章

传送门:https://codeforces.com/contest/1051/problem/E 题意: 把一个数分成许多小段,每一段的值在L和R间.问有多少种分法. 思路 : 首先,需要快速处理出每个位子 ,最近和最远可以组合的区间.如何处理这个区间,由于时限比较紧张,可以用哈希的方法,因为是长度固定,所以可以用二分确定两端长度前缀,再比较大小的方法.当然哈希要用比较好的双哈希. 然后,我们可以从后往前dp,每个位子的答案 = 这个位子对应区间的值的和. #include <algorith…
1051E. Vasya and Big Integers 题意 给出三个大整数\(a,l,r\),定义\(a\)的一种合法的拆分为把\(a\)表示成若干个字符串首位相连,且每个字符串的大小在\(l,r\)之间,求每个字符串不能有前导零,求\(a\)有多少种合法的拆分方案. 题解 不难想到\(dp\),设\(dp_i\)表示前\(i\)个数有多少种合法的拆分方案. \(dp_i=\sum_{j=1}^i dp_{j-1}\)(从\(j+1~i\)拆分的数在\(l,r\)之间) 直接转移是\(O(…
题意:给你N个点M条边,M-N<=20,有1e5个询问,询问两点的最短距离.保证没有自环和重边. 题解:连题目都在提示你这个20很有用,所以如果是颗树的话那任意两点的最短距离就是求一下lca搞一搞的问题.所以可以先求出最小生成树,那么会剩下最多42个点,我们知道非树边可能更优,所以对于每条非树边对应的两个点跑一遍dij,尝试更新答案ans=min(ans,dis[i][u]+dis[i][v]).正确性:可能通过多条非树边?在跑dij时其实已经处理出了最短的路,如果是通过多条非树边更优,那么它记…
题意:给定字符串S,A,B.现在让你对S进行切割,使得每个切割出来的部分在[A,B]范围内,问方案数. 思路:有方程,dp[i]=Σ dp[j]   (S[j+1,i]在合法范围内).    假设M和N的最长公共前缀为长度是LCP,那么字符串M>=字符串N的条件是  LCP=|N|或者(LCP<|N|&&M[lcp+1]>N[lca+1]): 小于同理. 求出范围就可以用前缀和 O(N)求DP了. 而LCP显然可以用exkmp求. 最近发现Z算法比较好写.  尝试了一下.…
目录 问题引入 CaiOJ 1461 [EXKMP]最长共同前缀长度 算法讲解 匹配过程 next 的求解 复杂度证明 代码解决 一些例题 UOJ #5. [NOI2014]动物园 CF1051E Vasya and Big Integers 问题引入 众所周知,\(\mathrm{KMP}\) 算法是最为经典的单模板字符串匹配问题的线性解法.那么 \(\mathrm{ExKMP}\) 字面意义是 \(\mathrm{KMP}\) 的扩展,那么它是解决什么问题呢? CaiOJ 1461 [EXK…
A - Turn the Rectangles CodeForces - 1008B There are nn rectangles in a row. You can either turn each rectangle by 9090 degrees or leave it as it is. If you turn a rectangle, its width will be height, and its height will be width. Notice that you can…
蒟蒻就切了四道水题,然后EF看着可写然而并不会,中间还WA了一次,我太菜了.jpg =.= A.Vasya And Password 一开始看着有点虚没敢立刻写,后来写完第二题发现可以暴力讨论,因为保证有解,没了 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; ; char rd[N]; int main () { int T; scanf("%d"…
You are given an array of integers. Vasya can permute (change order) its integers. He wants to do it so that as many as possible integers will become on a place where a smaller integer used to stand. Help Vasya find the maximal number of such integer…
关于 DP 的一些题目 String painter 先区间 DP,\(dp[l][r]\) 表示把一个空串涂成 \(t[l,r]\) 这个子串的最小花费.再考虑 \(s\) 字符串,\(f[i]\) 表示前 \(i\) 个字符相同时的最小花费. Parade 单调队列优化 DP. Free Goodies 对于第一个人,她选择的顺序是固定的.第二个人想要选到全局最优,那么有 \(dp[i][j]\) 表示到第 \(i\) 个数时,选了 \(j\) 个数时的最大值,顺便再记录下第一个人选的最大值…
A:Vasya And Password 代码: #include<bits/stdc++.h> using namespace std; #define Fopen freopen("_in.txt","r",stdin); freopen("_out.txt","w",stdout); #define LL long long #define ULL unsigned LL #define fi first #…