传送门 T1  dp[n][m]=dp[n-1][m-1]+dp[n-m][m] T2  ans=cat(n)*(n!)2  卡特兰数 T3  dp[i][j]=sigma(dp[i-1][j-a[i]]) T4  二进制拆分,01背包 T5  二维费用背包问题 T6  dp[i][j]=max(dp[i-1][k]*num[k+1][i]),k<i T7  dp[i][j]=max(dp[i][k]+dp[k+1][j]+a[i]*a[k+1]*a[j+1]),i<=k<j. T8 满…
题目描述 求一棵 $[1,n]$ 的线段树的最大匹配数目与方案数. $n\le 10^{18}$ 题解 树形dp+记忆化搜索 设 $f[l][r]$ 表示根节点为 $[l,r]$ 的线段树,匹配选择根节点的最大匹配&方案数,$g[l][r]$ 表示根节点为 $[l,r]$ 的线段树,匹配不选择根节点的最大匹配&方案数.那么这是一个很普通的树形dp. 注意到区间长度相等的线段树的结果是一样的,且每层至多有两种区间长度不同的区间(参考 这题 ),因此直接以区间长度为状态进行记忆化搜索即可. 这…
Python基础知识(四)------字典 字典 一丶什么是字典 ​ dict关键字 , 以 {} 表示, 以key:value形式保存数据 ,每个逗号分隔 ​ 键: 必须是可哈希,(不可变的数据类型),必须是唯一的 ​ 值: 任意数据类型 特点: ​ 查询的效率非常高,通过key来查找元素 #典型的空间换时间的案例: 虽然查询速度高效,但是占内存大 ​ 内部使用key来计算一个内存地址(暂时), hash算法,key必须是不可变的数据类型(key 必须是可哈希的数据类型),key必须是不可变的…
动态规划的核心就是状态和状态转移方程. 对于该题,需要用抽象的方法思考,把当前的位置(i,j)看成一个状态,然后定义状态的指标函数d(i,j)为从格子出发时能得到的最大和(包括格子本身的值). 在这个状态定义下,原问题的解就是d(i,j). 下面看一下不同状态之间如何转移.从格子(i,j)出发有两种策略.如果向左走,则到(i+1,j)后需要求"从(i+1,j)出发能得到的最大和"这一问题,即d(i+1,j). 类似的,往右走之后需要求解d(i+1,j+1).由于可以在这两个决策中自由选…
直接暴力模拟,注意判数据结构为空时的取出操作. Code #include<iostream> #include<cstdio> #include<ctime> #include<cctype> #include<cstring> #include<cstdlib> #include<fstream> #include<sstream> #include<algorithm> #include<…
poj 2229 Sumsets Time Limit: 2000MS   Memory Limit: 200000K Total Submissions: 21281   Accepted: 8281 Description Farmer John commanded his cows to search for different sets of numbers that sum to a given number. The cows use only numbers that are an…
下面是控件和布局的继承关系: 从上面我们看到: 1.所有控件都是直接或间接继承View,所有的布局都是直接或间接继承ViewGroup 2.View是Android中最基本的UI组件,各种组件其实就是在View的基础上又添加了各自特有的功能. 3.ViewGroup是一种特殊的View,它可以包含很多子View和子ViewGroup,是一个用于放置控件和布局的容器.  一.引入布局 问题引入:在一个项目中存在一个标题栏,该项目中的许多活动都使用了该标题栏,如果在每个活动中都写一遍标题栏的代码,会…
数据结构基本上就是---它们可以处理一些数据的结构.或者说,它们是用来存储一组相关数据的. python中有三种内建的数据结构---列表.元祖和字典. 我们将会学习如何使用它们,以及它们如何使编程变得简单. 列表 list是处理一组有序项目的数据结构,即你可以在一个列表中存储一个序列的项目.假想你有一个购物列表,上面记载着你要买的东西,你就容易理解列表了.只不过在你的购物表上,可能每样东西都独自占有一行,而在python中,你在每个项目之间用逗号分隔. 列表中的项目应该包括在方括号中,这样pyt…
树 树的概念 堂兄弟的双亲不一定是兄弟关系. 二叉树 斜树 满二叉树 完全二叉树 二叉树的性质…
第一步:在app/build.grandle添加RecyclerView依赖库 第二步:在activity_main.xml文件中编写主界面:聊天.发送框.发送按钮三个部分 第三步:编写Message实体类 第四步:编写RecyclerView子项布局message_item.xml,包含消息接收(左界面)和消息发送(右界面) 第五步:自定义RecyclerView适配器MessageAdapter 程序运行后几个方法的执行流程 第六步:为RecyclerView设置适配器 第七步:运行程序,可…
RecyclerView可以说是增强版的ListView,不仅具有ListVIew的效果,还弥补许多ListView的不足. 一.RecyclerView的基本用法 与百分比布局类似,RecyclerView也属于新增的控件,为了使RecyclerView在所有Android版本上都能使用,Android团队采取了同样的方式,将RecyclerView定义在了support库当中.因此想要使用RecyclerView这个控件,首先需要在项目的build.gradle中添加相应的依赖库才行. 第一…
ListView控件允许用户通过上下滑动来将屏幕外的数据拉到屏幕内,把屏幕内的数据拉到屏幕外. 一.ListView的简单用法第一步:先创建一个ListViewTest项目,在activity_mian.xml文件中添加ListView控件,宽度和高度可以设置为全屏,即在全屏范围内滑动. 第二步:修改MainActivity中的代码 第三步:运行程序,可以实现上下滚动屏幕的效果(点击屏幕滑动或者鼠标滑动)        代码分析: 1.先将一些数据定义在字符串数组中 2.数据是不能直接传递到Li…
一.TextView控件:在界面上显示一段文本信息 先看XML代码和执行效果:         代码分析: 1.android:id属性,给当前控件定义了一个唯一的标识符 2.android:layout_width和android:layout_height,指定控件的宽度和高度.所有控件均具有这两个属性,可选值有三种:match_parent.fill_parent.wrap_content.其中match_parent与fill_parent意义相同,更推荐使用match_parent,m…
常用模型:BP神经网络,RBF神经网络 一.神经元模型 |  连接权,阈值,激活函数 1. 输入信号通过带权重的连接(connection)进行传递,神经元接收到的总输入值将与神经元的阈值进行比较, 然后通过“激活函数”处理以产生神经元的输出.#“激活函数”对应于图中f(.) 2. 激活函数理想中是阶跃函数,实际中常用连续可微的Sigmoid函数代替—— #神经元等价于“对数回归”模型 3. 把许多个神经元按一定的层次结构连接起来,就得到了神经网络. 从数学角度看,神经网络是 二.感知机与多层网…
1.数组概述.定义格式 * A:数组概念 数组是存储同一种数据类型多个元素的集合.也可以看成是一个容器. 数组既可以存储基本数据类型,也可以存储引用数据类型. * B:数组定义格式 格式1:数据类型[] 数组名;----int[] arr; 格式2:数据类型 数组名[];----int arr[]; * C:数组是存储多个变量(元素)的东西(容器),这多个变量的数据类型要一致, 2.数组初始化.动态初始化 * A:什么是数组的初始化 Java中的数组必须先初始化,然后才能使用. 所谓初始化:就是…
05 | 程序实体的那些事儿(中) 在前文中,我解释过代码块的含义.Go 语言的代码块是一层套一层的,就像大圆套小圆. 一个代码块可以有若干个子代码块:但对于每个代码块,最多只会有一个直接包含它的代码块(后者可以简称为前者的外层代码块). 这种代码块的划分,也间接地决定了程序实体的作用域.我们今天就来看看它们之间的关系. 我先说说作用域是什么?大家都知道,一个程序实体被创造出来,是为了让别的代码引用的.那么,哪里的代码可以引用它呢,这就涉及了它的作用域. 我在前面说过,程序实体的访问权限有三种:…
abstract 用关键字abstract修饰的类叫做抽象类,且只能作为基类,也不能实例化. 用abstract定义的抽象类中不一定只包含抽象方法 ,可以包含非抽象方法. abstract定义的方法一定用放在抽象类中. 派生类中一定要实现抽象类中的所有的抽象方法,否则派生类也要声明为抽象类. 抽象方法不能使用static.private修饰符 virtual 以virtual关键字修饰的方法叫虚方法,主要用于在基类中的修饰方法.使用情况分为两种: 在基类中定义virtual方法,但派生类没有重写…
方法(函数) 作用:用来重复代码,当我们在一个过程中反复的写了同样的代码,一般情况下,我们就可以把需要重复写的代码定义在方法中,用的时候只需调用即可 语法: [访问修饰符][static] 返回值类型 方法名([参数]) { 方法体:   //一般情况下,方法定义在类中. } 关于方法的调用:如果是在静态方法(static修饰的)则使用,类名.方法名():在类中调用本类的方法,可以只写方法名(): 注:[ ]中的都可以省略不写,但是用处不同,当没有写访问修饰符时,默认为private.当没有返回…
java  基础知识五  数组 数组保存的是一组有顺序的.具有相同类型的数据. 同一个数组中所有数据元素的数据类型都是相同的. 可以通过数组下标来访问数组,数据元素根据下标的顺序,在内存中按顺序存放 1.数组声明 符号"[]"说明声明的是一个数组对象 ArrayType [ ] ArrayName;  或者ArrayType ArrayName[ ]; 2.数组创建 使用 ArrayType[arraySize] 创建了一个数组并把新创建的数组的引用赋值给变量 ArrayName Ar…
说到多窗口切换必须想到driver.switch_to.window()方法 driver.switch_to.window() 实现在不同窗口之间切换 driver.current_window_handle() 获取当前窗口,聚丙 driver.window_handles() 获得所有窗口,聚丙 curHandle = driver.current_window_handle() #当前窗口聚丙 winHandle = driver.window_handles() #所有窗口聚丙 for…
1) 字符串 SET设置值,GET获取值,DEL删除值 INCR key-name将键存储的值加上1       DECR key-name将键存储的值减去1 INCRBY key-name amount将键存储的值加上整数amount DECRBY key-name amount将键存储的值减去整数amount APPEND key-name value将值value追加到给定键key-name当前存储的值的末尾 2) 列表——双向链表 PUSH将给定值放入列表的左端(LPUSH)或右端(RP…
一,commit 01,commit干了啥 commit 就是提交的意思.也就是当你把99%的东西都做好了,然后你执行最后一步的操作...再commit前的话你可能啪啪啪啪啪,敲了几百条sql DML或者DML语句. 然后你可能自己select 或许desc一下,看见了自己的成果,但是其他用户任然看不到.当你comiit执行一下后,其他用户才能看见. 02. commit的发生了什么 1)服务器为每个COMMIT产生一个SCN.使改变永久化: 2)LGWR进程将日志缓冲区数据并带有SCN一起写到…
一.环境变量 系统启动时,会读取环境变量 ASPNETCORE_ENVIRONMENT ,并将该变量的值存储在 IHostingEnvironment.EnvironmentName 字段中.如: 新建一个 WebAPI 项目,修改 Configure 方法: public void Configure(IApplicationBuilder app, IHostingEnvironment env) { ...... { app.Run(async context => { context.R…
3.9各类型数据方法补充,转换,分类,编码,坑中菜 3.9.1数据类型方法补充 1.str:不可变 补充方法 s1.capitalize():首字母大写 s1 = "alex" s2 = s1.capitalize() print(s1) s1.title(): 每个单词首字母大写 s1 = "alex wusir" print(s1.title()) s1.swapcase():大小写反转 s1 = "AlEx" print(s1.swapca…
Hive 主流文件存储格式对比 1.存储文件的压缩比测试 1.1 测试数据 https://github.com/liufengji/Compression_Format_Data ​ M 1.2 TextFile 创建表,存储数据格式为TextFile create table log_text ( track_time string, url string, session_id string, referer string, ip string, end_user_id string, c…
自定义函数 变量的作用域和静态变量 变量的作用域:变量的作用域也成为变量的范围,变量的范围即它定义上的上下文背景(也就是它生效的范围). 大部分的PHP变量只有一个单独的范围.这个单独的范围跨度同样包含了include和require引入的文件. global  关键字 $GLOBALS 及其他超全局数组 $outer = 'str'; //全局变量 不能拿到函数体内部使用 function mgfunc() { global $outer; //使用global关键字 可以把外部变量拿到内部使…
void f(void) { int * p; int a[3] = {1,2,3}; p = a; printf("%d %d", a[0], p[0], *(a+1), *(p+1)); //此处四种表示方法等价 } 思考:为什么数组可以使用下标进行元素定位? 答:因为数组名等价于数组第一个元素的地址,如上述代码中a[0]与*p等价与*(p+0)等价,a与p等价,所以数组的下标涵义上是通过指针的移位进行定位的.…
# coding=utf-8 # AVL树的Python实现(树的节点中包含了指向父节点的指针) def get_height(node): return node.height if node else -1 def get_maximum(node): temp_node = node while temp_node.right: temp_node = temp_node.right return temp_node def get_minimum(node): temp_node = n…
1.直接用递归函数计算状态转移方程,效率十分低下,可以考虑用递推方法,其实就是“正着推导,逆着计算” #include<iostream> #include<algorithm> using namespace std; #define maxn 1000+5 int n; int a[maxn][maxn]; int d[maxn][maxn]; int main(){ for(;cin>>n && n;){ memset(d,,sizeof(d));…
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1290 题目大意: n刀最多可以把一块蛋糕切多少块 题目分析: 假如我们按照立体考虑的话,这题就非常不容易作, 我们的思维是 降低题目的维度. 1.首先我们要明白,蛋糕每多出一个面,就会将这个蛋糕多分出来一块 2.我们一刀下去是一个平面,但是其余的平面会与这个新增的平面相交,会在这个新增的平面上产生n-1条线, n-1条线 最多能把平面分为多少份, 所求的就是我我们新增的平面数,我们就可以求出新增的…