dp cf 20190613】的更多相关文章

A. Boredom 这个题目不难,但是我做的还比较复杂,不过还是很开心,至少做出来了,开始因为爆int了还wa了一发,搞得我以为自己做错了 #include <cstdio> #include <cstdlib> #include <map> #include <cstring> #include <queue> #include <vector> #include <algorithm> #include <io…
题目链接 题意:定义"beautiful number"为一个数n能整除所有数位上非0的数字 分析:即n是数位所有数字的最小公倍数的倍数.LCM(1到9)=2520.n满足是2520的约数的倍数.dp[len][val][lcm]一维为数的位数,一维为%2520的值(保存原数不可能,也没必要,2520是可行的最小公倍数最大的一个),一维为当前数位的lcm,判断满足的条件是val%lcm==0.这题离散化2520的约数,否则空间开不下. #include <bits/stdc++.…
http://codeforces.com/contest/319/problem/B 题目大意: 有删除操作,每次都删除数组右边比自己小的.且紧挨着自己的数字.问最小需要删除几次. 思路: 我们定义dp[i]表示删除右边的所有元素需要几次,然后用deque或者stack维护(最小的在顶端),从右边开始逆推(这样就保证了stack或deque中的数字在序列中的大小),然后在pop的同时要注意比较t和dp[j]的大小就可以了. #include<bits/stdc++.h> using name…
C. Number of Ways 这个题目的意思是,把这个n的序列分成三个连续的部分,要求这三个部分的和是一样的.问这种划分的方法有多少种. 这个题目和之前写过的数字划分有点像,这个就是要先进行前缀和的处理,然后找到s/3 和 2*s/3 这两个位置. 因为这个有负数,所以有可能出现,2*s/3 的位置在 s/3 的位置之后,所以这个时候就需要进行处理. 我们每一个 s/3 去找到 2*s/3 的所有合法位置即可. #include <cstdio> #include <iostrea…
A. Timofey and a tree 这个不算是dp,就是一个思维题,好难想的思维题,看了题解才写出来的, 把点和边分开,如果一条边的两个点颜色不同就是特殊边,特殊边两边连的点就叫特殊点, 如果一个点的被计算的次数等于特殊边的次数,则说明它是我们所求的点 #include <cstdio> #include <cstdlib> #include <queue> #include <vector> #include <cstring> #in…
C. Hard problem 这个题目一开始看还感觉比较复杂,但是还是可以写,因为这个决策很简单就是对于这个字符串倒置还是不倒置. 然后我不会一维去转移,直接用二维,第二维用01来表示转移和不转移,这样子就很清楚了. #include <cstdio> #include <cstdlib> #include <map> #include <cstring> #include <queue> #include <vector> #in…
最基本的一类数位dp题,题目大意一般是在a~b的范围,满足某些要求的数字有多少个,而这些要求一般都是要包含或者不包含某些数字,或者一些带着数字性质的要求,一般来说暴力是可以解决这一类问题,可是当范围非常大时,暴力明显会超时,这时便是需要把它转化为一类dp问题,这就是数位dp.像一个数1234567890,直接把它暴力的话,那它就是一个1e9级别的数,可是把它一个数位一个数位的话,那它就是1位是0,2为是9,一直到10位是1,一共才10位的长度,明显就比暴力明朗多了. 由于我也是刚接触不久,还没有…
BFS+DP.dp[i][j][0]表示有i个50kg,j个100kg的人在左岸,dp[i][j][1]表示有i个50kg,j个100kg的人在右岸.用BFS求最短路的时候记录到达该状态的可能情况. #include <iostream> #include <stdio.h> #include <string.h> #include <queue> using namespace std; typedef long long LL; #define maxn…
题目大意 给出一个n个点m条边的DAG,记为G. 可以删掉若干条边成为G′,显然有 2m 种不同的G′. 连边保证:若有 (xi →yi​) 边,则 xi​ < yi . 初始点1和点2有一个标记,Alice和Bob玩游戏,每次可以将任意一个标记沿边移动. 不能移动#者输,求这 2m 张图有多少先手必胜. 对 109 + 7取模. 思路 这题的1和2两个点显然是可以互相独立的 所以可以分开考虑,当做两个不同的子游戏 根据sg定理可以知道当sg[ 1 ]与sg[ 2 ]不同时先手必胜 但是发现直接…
2019-01-18 4543: [POI2014]Hotel加强版:长链剖分+树形dp. 3653: 谈笑风生:dfs序+主席树. POJ 3678 Katu Puzzle:2-sat问题,给n个变量赋值(0/1),满足所有等式. POJ 3683 Priest John's Busiest Day:2-sat问题,输出方案. 2019-01-19 1997: [Hnoi2010]Planar:2-sat问题,存在哈密顿路径的图判断是否是平面图. 3495: PA2010 Riddle:2-s…