【noi 2.6_747】Divisibility(DP)】的更多相关文章

这题题意与前面的"判断整除"重复了.具体解释可看我这篇的博文. http://www.cnblogs.com/konjak/p/5936738.html 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using namespace std; 6 #define N 10010 7 #define K 110 8 int a…
题意:要求二叉树中每个节点的子节点数为0或2,求有N个节点高度为M的不同的二叉树有多少个(输出 mod 9901 后的结果). 解法:f[i][j]表示高度为i的有j个节点的二叉树个数.同上题一样,把高度为i的树分解成1个根节点和2棵子树,子树中有一棵高度为i-1,较高,枚举其结点数,另一颗较矮,高度为0~i-2(用sum存),结点数也可知道了.分别左子树和右子树较高,便*2.还有2子树一样高,同为i-1时的情况.==>也可转化为一棵高i-1,另一棵高0~i-1,*2后减去多算的两子树同高 i-…
题意:n个数中不能同时选连续m个或以上,问方案数. 解法:f[i][j]表示从前i个中选,到第i个已经连续选了j个.j!=0时,  =f[i-1][j-1] ; j=0时, =f[i-1][0~m-1] ; 优化1:f[i][m]存f[i-1][0~m-1],就不用多for一重. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 using namespace std; 5 6 long long…
题意:求取到总和为K的倍数的糖果的最大值. 解法:用模K的余数作为一个维度,f[i][j]表示在前i种糖果中取到总颗数模K余j的最大总颗数. 注意--f[i-1][j]要正常转移,而其他要之前的状态存在才能状态转移. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using namespace std; 6 7 int a[110],f[11…
题意:有N瓶酒,不能连续喝>=3瓶的酒,问能喝的最大的酒量. 解法:同前一题相似,可以f[i][j]表示前i瓶中连续喝了j瓶的最大酒量.1.f[i][0]=f[i-1][3] ; 2.i=1或2时,f[i][j]=f[i-1][j-1]+a[i];   3. f[i][3]=mx;也可以只用f[i]. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream&…
题意:输出最长下降路径的长度. 解法:f[i][j]表示结尾于(i,j)的最长的长度.由于无法确定4个方位已修改到最佳,所以用递归实现. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using namespace std; 6 #define Maxn 110 7 8 int a[Maxn][Maxn],f[Maxn][Maxn]; 9 i…
题意:N天可买卖2次股票,问最大利润. 解法:f[i]表示前 i 天买卖一次的最大利润,g[i]表示后 i 天. 注意--当天可以又买又卖,不要漏了这个要求:数据较大. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using namespace std; 6 7 #define N 100010 8 #define INF 1000010…
太水的dp没啥好说的.. #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <iostream> #include <algorithm> #include <queue> #include <set> #include <vector> #include <map> usin…
题目: 洛谷4933 分析: (自己瞎yy的DP方程竟然1A了,写篇博客庆祝一下) (以及特斯拉电塔是向Red Alert致敬吗233) 这里只讨论公差不小于\(0\)的情况,小于\(0\)的情况进行复读机即可(注意不要重复计算公差为\(0\)的情况). 用\(dp[i][j]\)表示结尾为第\(i\)个数,公差为\(j\)的长度不小于\(2\)的非降等差数列的方案数(单独\(1\)个数的情况公差不确定不好处理,最后给答案加上\(n\)就行了). 那么对于\(i\),枚举所有\(j(j<i\)且…
题意:求第k大的最多有l个1的n位二进制. 题解:dp[i][j]表示长度为i最多有j个1的二进制有多少种,则有: 状态转移:dp[i][j]=dp[i-1][j]+dp[i-1][j-1],即第i位放1或者0. 边界条件:dp[0][i]=1,dp[i][0]=1. 长度为n,最多m个1的二进制可以分为: 以0开始的一部分,共有dp[n-1][m]个, 和以1开始的一部分,共有dp[n-1][m-1]个. 如果dp[n-1][m]≥k,说明第k大的就在0开始的那一部分的第k大的, 否则就是1开…
[POJ 3071] Football(DP) Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4350   Accepted: 2222 Description Consider a single-elimination football tournament involving 2n teams, denoted 1, 2, -, 2n. In each round of the tournament, all tea…
题意:一共有N只牡牛(公牛)和牝牛(母牛),每2只牡牛间至少要有K只牝牛才不会斗殴.问无斗殴发生的方案数. 解法:f[i][j]表示一共i只牛,最后一只是j(0为牝牛,1为牡牛)的方案数.f[i][0]=f[i-1][1]+f[i-1][0]; f[i][1]=f[i-k-1][1]+f[i-k-1][0](这个小心不要漏了,因为没有要求2只牡牛间一定是K只牝牛); 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstri…
首先我们可以这样想: 设状态f[i, j]表示1-i序列有j个'<'的方案数 那么考虑转移 因为i比i-1大,所以可以考虑从i-1来转移.首先i是要插入1-i-1这个序列的,所以我们可以思考插入的位置: 仔细推下可得: 当插入的位置原来是‘<'时,答案不会改变 当插入的位置原来是'>'时,答案会+1 当插入左边界时,答案不变 当插入有边界时,答案+1 那么我们知道了前i-1的'<'数量和'>'的数量那么就能转移了 f[i,j]=(j+1)*f[i-1, j]+(max{i-1…
i2c(或IIC)协议使用两根线进行通信(不包括电源正负极),它们分别为: 1.SDA:数据线,IIC 协议允许在单根数据线上进行双向通信--这条线既可以发送数据,也可以接收数据. 2.SCL:时钟线,注意了,这个时钟线跟我们平时所说的时钟没什么关系,不要以为这根线是用来接手表的.其实,这里所说的"时钟",更像是我们看音乐会的时候,站在前面最中央处的那个指挥者,或者说节拍器.它的作用就是协调硬件之间的传输节奏,做到步伐一致,不然数据就会乱了.比如,IIC通信里面,当时钟线的电平拉高后,…
队列(Queue)的一个使用场景 银行排队的案例: 队列(Queue)介绍 队列是一个有序列表,可以用数组或是链表来实现. 遵循先入先出的原则.即:先存入队列的数据,要先取出来.后存入的要后取出来. 数组模拟队列 队列本身是有序列表,若使用数组的结构来存储队列的数据,则队列数组的声明如下图,其中maxSize是该队列的最大容量. 因为队列的输出.输入分别从前后端来处理,因此需要两个变量front及rear分别记录队列前后端的下标,front会随着数据输出而改变,而rear则是随着数据输入而改变的…
​前言 本文主要介绍作者关于人工智能(AI)语音测试的各方面知识点和实战技术. 本书共分为9章,第1.2章详细介绍人工智能(AI)语音测试各种知识点和人工智能(AI)语音交互原理:第3.4章介绍人工智能(AI)语音产品需求和评价指标,以及其相对应的验收标准:第5章介绍如何准备语音数据,包括准备方案和具体方法:第6-9章介绍人工智能(AI)语音测试涉及的4大模块,既黑盒测试.自动化测试.算法测试.性能测试. 本书从理论概念到测试实践,从手工测试到自动化测试,内容翔实且丰富,其中的项目方案.范例和实…
发表于 2017-04-27   |   分类于 安全工具   |     |   阅读次数 593 人世起起落落 左手边上演的华灯初上 右手边是繁华落幕的星点余光 本篇作为渗透神器系列第二篇,将介绍一款渗透界web测试开发界比较流行的一款web流量抓包分析工具,Fiddler.Fiddler的功能这里不多说,简单概括就是抓包.改包.重放.本篇的重点不是介绍Fiddler的基础用法,而是介绍如何通过编程打造属于自己的定制化Fiddler.本篇所记内容大部分来自互联网,如觉内容老套可自行绕道,全当…
目录 1.简介 2.字符匹配 1.简介:就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言,(在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行. 2.字符匹配:字符匹配(普通字符,元字符):普通字符:大多数字符和字母都会和自身匹配        >>> re.findall('alex','yuanaleSxalexwupeiqi')           ['alex'] 2元字符…
为什么说是下一代核心技术 其实经过互联网的多次变革说起,早期的C/S架构,到后来的B/S架构,一直到现在最普遍的M/S架构,他们的背后都是技术不断的优化改进,以适应促进IT技术的发展 整体而言在过去10年时间,互联网技术可以说是以手工制造的方式为准,类似于传统销售,设计,制作,然后打包销售.每个环节都需要大量的人员来操作,也需要不断 有人接班学习来延续对应的环节.而未来10年将会是以流水线的方式为主 ,其主要原因是互联网云计算技术的高速发展及可持续快速交付的业务需求.其对应的DevOps 方式将…
已经配置了很多次jdk了,每次都是安装网上的教程配的,今天突然想了解了解原理了,整理一下! 参考贴( http://blog.csdn.net/wkupaochuan/article/details/7462180(讲解的不全) http://jingyan.baidu.com/article/bea41d435bc695b4c41be648.html(百度经验,里面有详细的配置过程,后面我就不说了) ) 通常在安装JDK过后需要配置两个环境变量:PATH和CLASSPATH(由于windows…
函数表示对输入参数返回一个特殊计算结果的值.PostgreSQL中的函数种类比较丰富,主要分为以下几类:数值型函数.字符型函数.日期和时间函数.条件判断函数.系统函数.加密函数以及其他函数.这篇文章只介绍数学函数,其他几种函数会在后续文章中逐一介绍. 数学函数 数学函数主要用来处理数值型数据,主要的数学函数有:绝对值函数.三角函数.对数函数.随机数函数等. 1. 绝对值函数ABS(A) test=# select ABS(-1),ABS(1),ABS(-2.2),ABS(0); abs | ab…
PyCUDA 可以通过 Python 访问 NVIDIA 的 CUDA 并行计算 API. 具体介绍和安装可以参考 PyCUDA 官网文档和 pycuda PyPI. 本文涵盖的内容有: 通过 PyCUDA 查询 GPU 信息. NumPy array 和 gpuarray 之间的相互转换. 使用 gpuarray 进行基本的运算. 使用 ElementwiseKernel 进行按元素的运算. 使用 InclusiveScanKernel 和 ReductionKernel 的 reduce 操…
题意:问长度为L的所有01串中,有多少个不包含"101"和"111"的串. 解法:f[i][j]表示长度为i的01串中,结尾2位的十进制数是j的合法串的个数.那么,便由f[i-1][ ]逐个推出. 1 #include<cstdio> 2 #include<cstdlib> 3 #include<cstring> 4 #include<iostream> 5 using namespace std; 6 #define…
BUPT2017 wintertraining(15) #8F 题意 1到n的排列,经过几次置换(也是一个排列)回到原来的排列,就是循环了. 现在给n(<=1000),求循环周期的所有可能数. 题解 问题等价于几个正整数加起来等于n,求最小公倍数的可能数. 因为1不影响最小公倍数,所以等价于求几个正整数加起来小于等于n,最小公倍数的可能数. 最小公倍数与每个质因子在正整数里最大出现次数有关,所以枚举质因子的幂,进行dp. dp[i][j]表示前i个质数,和为j时,最小公倍数的可能数. dp[0]…
Description 羽月最近发现,她发动能力的过程是这样的: 构建一个 V 个点的有向图 G,初始为没有任何边,接下来羽月在脑中构建出一个长度为 E 的边的序列,序列中元素两两不同,然后羽月将这些边依次加入图中,每次加入之后计算当前图的强连通分量个数并记下来,最后得到一个长度为E 的序列,这个序列就是能力的效果. 注意到,可能存在边的序列不同而能力效果相同的情况,所以羽月想请你帮她计算能发动的不同能力个数,答案对 998244353 取模.你需要对于1<=E<=V*(V-1)的所有 E 计…
题意是给你抢劫每个银行可获得的钱m和被抓的概率p,求被抓的概率小于P,最多能抢多少钱.01背包问题,体积是m,价值是p.被抓的概率不是简单相加,而应该是1−Π(1−p[i])DP:dp[i]表示抢到i元且不被抓的概率.初始条件:dp[0]=1:转移方程:dp[j]=max{dp[j],dp[j−m[i]]∗(1−p[i])}(j>=m[i]) #include<cstdio> #include<cstring> #include<algorithm> #defin…
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4198 约瑟夫变形 根据f(n)=(f(n-1)+m)%n 因为是求倒数第几个 那么我们只要求出f(倒数第几个)的值然后再带进去即可. (没理解的自行面壁..) 而f(倒数第几个)=(m-1)%倒数第几个 然后就行了.. #include <cstdio> #include <…
我今天脑子貌似又好使了一点,可以做一做DP中的水题了. 这个题难度蓝色,纯属是做的人太少了虚高. 这个题很显然的是可以用一个顺序一个逆序这两个大水转移方程轻松转移出到达这个地方最少需要的棋子数量,然后因为n足够小,直接枚举每一个偶数坐标,对于可以由红色棋子走到的,就把总数++,不可以的,就把一开始要放得棋子++... 然而交了好几遍,最后,最后三个点老是不对,我突然觉得是不是数据太大了,比较符号反了....结果...R少打了一个0..... #include<iostream> #includ…
题意:一个长为n的序列,每个位置上的值是0,1,2,3中的一个,有m个限制条件,限制位置[l[i],r[i]]中不同的数值有x[i]个,问方案数MOD 998244353 n<=100,m<=100 思路: #include<bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned int uint; typedef unsigned long long ull; typedef pair&…
简单搜索,在n*n的矩阵中,问从起点是否可以到达终点,有些格子不可走,上下左右四个方向都可以走.(N<=100)1.bfs从起点开始走,直到走到终点或全部遍历过一次就结束.2.dfs要一走到终点就返回,否则4^n会TLE.由于询问"是否可到达终点",就直接递归"是否可以走到点(x,y)点"的函数,也是直到找到终点就结束. 下面附上dfs的代码-- 1 #include<cstdio> 2 #include<cstdlib> 3 #inc…