问题描述 在一棵树中,如果某个节点z是节点x的祖先(即节点z深度<节点x),也是y的祖先。那么称节点z是x与y的公共祖先。 那顾名思义,所谓最近公共祖先,就是对于x和y来说距离之和最近的公共祖先。 解法一:向上标记法 除非你发了高烧啥都不会打,否则换方法 从x节点向上走到根节点,把所有经过的节
3828 给定n个点的坐标(0<=xi,yi<=10000)求选出任意三个点能组成的三角形的总面积。 题解 太naive了 枚举三角形的y最小的点,把剩余的点按角度排序 然后随便算,可以用叉积求前缀和,或者累加x和y用旋转公式算 3829 表箱关有一个房间非常可怕,它由n个变异天启组成。 每个天启都会在进入房
https://codeforces.com/problemset/problem/1073/G 题意:给定一长度为n的字符串s,并有q次询问,每次询问给定两个序列\(\{a_i\}\)(记长度为k)和\(\{b_j\}\)(记长度为l),输出\(\Sigma_{i=1}^{k} \Sigma_{j=1}^{l} LCP(s[a_i,n],s[b_i,n])\)。 数据范围:\(1\leq n,\Sigma k, \Sigma l \leq 2e
事实证明了只要暴力会卡常写的好,就可以去代替正解 第一题: 做法: 树状数组可以快速求出当前所有并查集中,比现在这个集合个数少c的集合个数(O(logn)) 就相当于求前缀和那种嘛 那么我们的做法就是去枚举每一个集合大小在树状数组中去查询比他小的集合个数来统计答案 卡常:1.只
T1: 不要傻傻的分27种情况讨论!!! 按位考虑,对于每一位,枚举a和b该位是什么,记录可行的有几种,乘起来即可 T2: 模拟即可 T3: 神仙题 考虑容斥 分别记录每个点和那些空白连通块相连,然后枚举连通块状态 如:(1),(1,2),(2,3),(1,2,3),(1,2,3,4) 最后
什么是枚举类型,有什么作用? 枚举类型就是一个用来组织一些有相似之处的常量的对象,作用就是管理常量,让常量更规范,统一。例: enum Direction { Up = 1, Down, Left, Right } 使用时直接用“.”的方式使用: Direction.Up、Direction.Down ... 枚举类型的特点: 1.手动赋值时从第一个开始
T2: 树上差分、前缀和、dfs序的应用。 只询问p,q路径,可以n^2.没必要树形DP。 直接n^2枚举点对O(1)算距离即可。 考虑枚举点对i,j,O(1)统计。 求出以i为lca的路径数和经过i且不以i为lca的路径数。 u=lca(i,j)。 w=u子树和,减去i~j链上,加上u子树外,减去经过u且不以u为lca条数。 先往简单
1.第一种方法 1.1操作代码 2.第二种方法 2.1操作代码
枚举 枚举(Enum)类型用于取值被限定在一定范围内的场景,比如一周只能有七天,颜色限定为红绿蓝等。 简单的例子 枚举使用 enum 关键字来定义: enum Days {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; 枚举成员会被赋值为从 0 开始递增的数字,同时也会对枚举值到枚举名进行反向映射: enum Days {S
题目 状压DP。 直接枚举二进制数表示当前猪有没有被消灭的状态。 最终答案的几条抛物线必定至少撞到一个猪。而且两头猪确定一条抛物线,可以枚举两头猪,分别求出他们的抛物线所消灭猪的状态,然后可以用类似背包的方法转移DP。 有方程: \(dp[i|(\)当前抛物线的状态\()] = min(dp[i|(\)
枚举答案 for(int i=1;i<=len;i++) { if(len%i==0) { k=1; for(int j=i;j<len;j++) { if(s[j]!=s[j%i]) { k=0; break; } } if(k) {
一、简介 枚举是一组命名整型常量;枚举类型是使用 enum 关键字声明的;C# 枚举是值类型。 二、语法 枚举的语法: public enum 枚举名{ 值1, 值2, 值3, ............}或者 enum 枚举名{ 值1, 值2, 值3, ............} public:访问修饰符,公共的公开的,哪都可以访问; enum:关键
1.结构体 关键字 struct定义一个结构体类型 .点运算符 ->箭头运算符 数组 存放一组相同类型的数据 存放一组不同类型的数据 结构体类型 存放一个学生的信息 学号 姓名 1 struct student //结构体类型 存放什么类型的数据 2 { 3 char name[15];//存放名字 成员变量
背包问题 01背包裸题。因为物品不可分割因此不可贪心。 搬书 Luogu P2374 看起来可以贪心,但是事实上由于体力系数在变化,因此每次选出每堆质量最大的书并不能得到最优解。于是考虑DP。设\(dp[i][j][k]\)表示当前考虑到每堆第\(i,j,k\)本书。当前状态只能由\(dp[i-1][j][k],dp[i][j-
原题 题目链接 题目分析 依题意,直接对a,b,c,d四个数列进行枚举有n4个状态,考虑折半枚举.分别枚举a,b的组合和c,d的组合,则枚举情况可缩小为2*n2个状态.先把c,d的枚举结果排序,然后在枚举a,b的组合过程中,假设枚举的a,b组合为a[i]+b[j],只需要在c,d的组合中找大小为-(a[i]+b[j])的
#include <iostream>using namespace std;int n, m;void dfs(int u, int sum, int state){ // 判断边界条件 // 如果加上剩余的数都不够m个,直接return if(sum + n - u < m) return ; // 当达到m个数的时候 if(sum == m) { for(int i = 0; i < n; ++ i) if(state >> i &
2.1数值类型 byte: int: long: float:12.3f doube: 2.2非数值类型 char: bool: true,false string: 对字符串的处理 创建字符串 string s = "www.devsiki.com"; 获取字符串长度 s.Length(属性) 比较字符串是否一样 s=="www.devsiki.com"
1.基本数据类型的包装类 2.字符串相关类 3.时间处理相关类 4.枚举类 5.Math类和Random类 6.File类
1.数字类型 整型:tinyint(小整型):一个字节 int(整型):四个字节。注意:int的 宽度指的是显示的宽度,与存储无关 bigint(大整形):八个字节小数: float:在位数比较短的情况下不精准(**** 数值越大,越不准确 ****) double:在位数比较长的情况下不精准(**** 数值越
目录 简介 hasMoreElements,nextElement 简介 /** * 实现Enumeration接口的对象每次生成一个元素。对nextElement方法的连续调用将返回该系列的连续元素。 * * <p>例如,要打印一个Vector v的所有元素: * * <pre> * for (Enumeration<E> e = v.elements(); e.hasMor
\(P.s.:\)下文出现的部分词汇可能并不严谨,还请各位谅解\(QwQ\) 毕竟我比较菜\kk 数位\(DP?\ !\) 机房某大佬:那不是快乐源泉吗? 记得之前在\(qbxt\)时听某林姓神仙讲得一脸懵\(B\),最近再系统性的学习一遍,感觉也没什么东西\(……\) 首先,数位\(DP\)一般用于解决这样的问题: 给定一个
目录 欧拉筛的证明 欧拉筛的证明 之前一直都是贴板子。今天花了一点时间看了下证明,原来是如此简洁优雅。欧拉大神orz 一。正确性。 对于任何一个合数C,设p为C的最小质因子,令A=C/p,那么显然有A的最小质因子大于等于p,于是在进行到A枚举已存储的质数时,枚举到A的最小质因子之前p一
今天学习康托展开 和 可重集康托展开。。。 康托展开。。就是给你一个1~n全排列,问它的排名。。 例如:x1, x2 , x3 , x4 , x5 是一个1~5的全排列,现在我们要求它的排名。。 从第1位开始枚举。。 然后枚举j,当然这个j要< xi ,并且不能在x(1~i-1)中出现过。 发现当 j < xi 时 ,后面无论怎
Java枚举类型(enum) 枚举类型都是继承了Enum类(是一个抽象类)的一个类,我们可以向enum类中添加方法和变量等。编译再反编译可以看到枚举类型对应的类的内容。 每个枚举常量都对应一个Enum类的实例。 例子 public enum Day2 { MONDAY("星期一"), TUESDAY("星期二"), WED
1.实验目的 (1)理解枚举类型的优缺点并学会使用枚举类型。 (2)掌握枚举类型的使用条件和各种限制。 2.实验内容 通过一些简单的函数实验来展现枚举类型的使用方式和使用场景。 3.实验过程 基本概念 1. 枚举的定义