EXAM-2018-7-24】的更多相关文章

初学Python.Opencv,想用它做个实例解决车牌号检测. 车牌号检测需要分为四个部分:1.车辆图像获取.2.车牌定位.3.车牌字符分割和4.车牌字符识别 在百度查到了车牌识别部分车牌定位和车牌字符分割,先介绍车牌定位部分 车牌定位需要用到的是图片二值化为黑白后进canny边缘检测后多次进行开运算与闭运算用于消除小块的区域,保留大块的区域,后用cv2.rectangle选取矩形框,从而定位车牌位置 车牌字符的分割前需要准备的是只保留车牌部分,将其他部分均变为黑色背景.这里我采用cv2.gra…
时间:2018.07.24地点:北京国家会议中心…
import java.util.Scanner; public class Nqueens { private boolean verify(int[] arr,int i) { // TODO Auto-generated method stub for (int j = 1; j != i; j++) { if(j == i) { continue; } if(arr[i]==arr[j]||Math.abs(i-j)==Math.abs(arr[i]-arr[j])) { return…
树 概念:由一个或多个(n≥0)结点组成的有限集合 T, 有且仅有一个结点称为根( root), 当 n>1时,其余的结点分为 m(m≥0)个互不相交的有限集合 T1,T2, …, Tm.每个集合本身又是棵树,被称作这个根的子树. 特性: 根节点: 即根结点(没有前驱) 叶子节点: 即终端结点(没有后继) 结点的度: 结点挂接的子树数(有几个直接后继就是几度) 树的深度(或高度) : 指所有结点中最大的层数( Max{各结点的层次}) 二叉树: 二叉树的转化:左孩子右兄弟 作用:便于运算 了…
栈: Stack<int>  xt=new Stack<int>() ; 先进后出,后进先出,水杯结构,顺序表类似 常用方法:   .pop---->出栈,弹栈                    .Push---->压栈,进栈                    .peek---->获取栈顶元素                    .toArry---->转化数组,遍历      int[] ints= stack.ToArray();   Cons…
在调试生产环境时遇到以下情况: 好奇心驱使下,发现是lvm的一个功能——lvm创建pool,就手动创建了相似的环境,操作截图如下: 主要命令: vgcreate -s 32M vg /dev/vdb1 vgs lvcreate -L 1G -n swap vg lvcreate -L 8G --thinpool pool00 vg lvs lvcreate -V 2G --thin -n root vg/pool00 lvcreate -V 2G --thin -n home vg/pool00…
[iCore4相关文档][更新中...] iCore4原理图(PDF)下载iCore4引脚注释(PDF)下载iCore4机械尺寸(PDF)下载 [iCore4相关例程代码][ARM] DEMO测试程序V1.04.3寸液晶模块发布例程一:ARM驱动三色LED例程二:读取ARM按键状态例程三:EXTI中断实验——读取ARM按键状态例程四:USART实验——通过命令控制LED状态例程五:SYSTICK定时器实验——定时点亮LED例程六:IWDG看门狗实验——复位ARM例程七:WWDG看门狗实验——复位…
import java.util.Arrays; /* 核心思想:利用快排思想,先假定从大到小排序,找枢纽,枢纽会把大小分开它的两边,当枢纽下标等于k时, 即分了k位在它左边或右边,也就是最大或最小的排到了它的左边或右边了.那么那个枢纽就是要找的第k位了 */ public class SearchNumData { /* n为数组长度 k为要查找的第k大 */ public static int findKth(int[] a, int n, int K) { return findKth(a…
#!/flask/bin/python # -*- coding: utf-8 -*- from threading import Thread from flask import Flask from flask_mail import Mail,Message import traceback from flask import render_template app = Flask(__name__) app.config["MAIL_SERVER"] = "smtp.…
很久之前写的一套题了,由于今天的时间太多了,所以记起来就写掉算了. 这一场尽管T2写炸了,但也莫名Rank4涨了Rating.不过还是自己太菜. A. 环游世界 首先我们先排个序,想一下如果不用走回来那么直接相邻的两个直接走就可以了. 那么我们要走回来呢,很简单,手动为回来留一条路径即可.还是一样的贪心方法,这次我们一般间隔两个.为什么是一般呢,其实也是对于边界的不同讨论了. 比如对于这样的一种情况,我们可以这样走: 其中红色表示走过去的边,绿色表示走回来的边. CODE #include<cs…
之前学习了工厂模式和单例模式,明白了他们的意义. 但是我们在之后的使用中会发现一个问题,在新建一个实例的时候还是需要调用一个单例或者工厂,之后还是造成了代码和耦合和不好处理. 下面开始说一下: -- 为什么使用注册树? 单例模式解决的了避免一个对象在多次创建时耗费的资源.只创建一个对象实例. 工厂模式是为了不直接通过 new 创建对象的方法.避免代码高度耦合. 在两种模式的存在下,我们更应该去统筹管理这些,不让其游荡在程序的各个角落. 于是在这里引入了注册树模式,不管你是怎样产生的对象,都会在…
传送门 常数实在压不下来(蒟蒻开O(3)都过不了). 但有正确性233. 首先肯定得把两个字符串接在一起. 相当于heightheightheight数组被height<kheight<kheight<k的分成了几段,统计每段的贡献. 考虑段中每个heightheightheight作为最小值出现的次数就行了. 于是我们用单调栈求出每个位置向左右分别能延展到的最远下标然后统计答案就行了. 细节有点多. 代码: #include<iostream> #include<cs…
传送门 实际上可以用后缀自动机秒掉 当然后缀数组也挺好写. 我们将两个字符串接在一起,为了方便中间用一个特殊字符连接. 然后对新字符串求heightheightheight数组. 求出来之后对所有满足sai,sai−1sa_i,sa_{i-1}sai​,sai−1​属于两个不同字符串的heightheightheight取最大值就行了. 代码: #include<iostream> #include<cstdio> #include<cstring> #define r…
传送门 双倍经验(弱化版本) 考虑求出来heightheightheight数组之后用增量法. 也就是考虑每增加一个heightheightheight对答案产生的贡献. 算出来是∑∣S∣−heighti+1−sai\sum|S|-height_i+1-sa_i∑∣S∣−heighti​+1−sai​ 代码: #include<bits/stdc++.h> #define ri register int using namespace std; const int N=5e4+5; int n…
传送门 后缀数组经典题. 貌似可以用二分答案+后缀数组? 我自己yyyyyy了一个好写一点的方法. 直接先预处理出heightheightheight数组. 然后对于所有连续的k−1k-1k−1个heightheightheight的最小值取最大值即可. 代码: #include<iostream> #include<cstdio> #include<algorithm> #define ri register int using namespace std; inli…
传送门 后缀数组好题. 考虑枚举循环节长度lenlenlen. 然后考虑枚举循环节的起点来更新答案. 但是直接枚举每次O(n)O(n)O(n). 考虑枚举len∗k+1len*k+1len∗k+1作为起点. 然后用len∗(k−1)+1len*(k-1)+1len∗(k−1)+1和len∗k+1len*k+1len∗k+1之间的某一段有可能使循环节长度再加一. 代码: #include<iostream> #include<cstdio> #include<cstring&g…
传送门 代码: 二分答案. 然后对于预处理的heightheightheight数组分成几段. 保证每一段中都是连续的几个heightheightheight并且这些heightheightheight都不小于二分的值. 然后查询是否有一个段中两个长度的差满足条件就行了. #include<iostream> #include<cstdio> #define ri register int using namespace std; inline int read(){ int an…
传送门 后缀排序模板题. 终于会后缀数组了(然而只会倍增并不会DC3DC3DC3). 在这里列举几个数组的意思: sai:sa_i:sai​:当前排名第iii的后缀的起始下标. rkirk_irki​当前下标为iii的后缀对应的排名. sa2isa2_isa2i​当前排名为iii的第二关键字对应的下标. 代码: #include<bits/stdc++.h> #define ri register int using namespace std; const int N=1e6+5; int…
传送门 f[i][j][k]f[i][j][k]f[i][j][k]表示前iii个点连了jjj条边,第i−K+1i-K+1i−K+1~iii个点连边数的奇偶性为kkk时的方案数. 转移规定只能从后向前连边. 然后讨论奇偶性转移就行了. 注意从f[i−1]f[i-1]f[i−1]转移过来的时候不用考虑最前面一位. 然后再用f[i][j]f[i][j]f[i][j]转移f[i][j+1]f[i][j+1]f[i][j+1]就行了. 代码: #include<bits/stdc++.h> using…
传送门 状压dp好题. 考虑对于两个给出的集合. 如果没有两个元素和相等的子集,那么只能全部拼起来之后再拆开,一共需要n1+n2−2n1+n2-2n1+n2−2. 如果有呢? 那么对于没有的就是子问题了. 因此我们要最大化这样的子集数. 这就需要状压dp了. 我们把两个集合拼成一个,然后第二个集合合并进去的时候权值取负的,这样如果某个子集元素和为0表示该子集和满足要求. 然后枚举一下之前的状态来转移就行了. 代码: #include<bits/stdc++.h> using namespace…
传送门 分治妙题. 没有这道题的暴力分今天又垫底了啊233 由于用了分治的方法,我们只用考虑左区间对右区间的贡献以及右区间对左区间的贡献. 可以发现如果从中点开始向两边递推最小值并用这个区间最小值来推式子是可以推出右/左区间的所有点对左/右区间的某个点的贡献是满足一个偏序关系的. 于是用一种可以支持删除查询的数据结构偷懒用了bit来维护就行了. 代码…
传送门 考虑到a[l],gcd(a[l],a[l+1]),gcd(a[l],a[l+1],a[l+2])....gcd(a[l]...a[r])a[l],gcd(a[l],a[l+1]),gcd(a[l],a[l+1],a[l+2])....gcd(a[l]...a[r])a[l],gcd(a[l],a[l+1]),gcd(a[l],a[l+1],a[l+2])....gcd(a[l]...a[r])是可以分成最多logloglog段且段内的数都是相同的. 那么我们用链表维护这logloglog…
传送门 考试自己yyyyyy的乱搞的没过大样例二分+dp二分+dp二分+dp过了606060把我自己都吓到了! 这么说来乱搞跟被卡常的正解比只少101010分? 那我考场不打其他暴力想正解血亏啊. 正解同样是二分+dp. f[i]f[i]f[i]表示i不变且前面全部满足当前要求时最少需要改几个数. 然后用f[i+1]f[i+1]f[i+1]~f[n]f[n]f[n]转移一下就行了. 代码…
传送门 答案只保留了6位小数WA了两次233. 这就是一个简单的01分数规划. 直接二分答案,根据图中有没有负环存在进行调整. 注意二分边界. 另外dfs版spfa判负环真心快很多. 代码: #include<bits/stdc++.h> #define N 3005 #define M 10005 using namespace std; inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch=getcha…
传送门 正解是并查集+矩阵树定理. 但由于数据范围小搜索也可以过. 我们需要知道最小生成树的两个性质: 不同的最小生成树中,每种权值的边出现的个数是确定的 不同的生成树中,某一种权值的边连接完成后,形成的连通块状态是一样的 那么可以根据乘法原理按权值分步,将每一步得到的结果相乘. 每次分步的计算可以用搜索/矩阵树定理来实现. 代码: #include<bits/stdc++.h> #define mod 31011 #define N 15 #define M 1005 using names…
传送门 概率dp经典题. 如果当前位置(i,j)(i,j)(i,j)有钉子,那么掉到(i+1,j),(i+1,j+1)(i+1,j),(i+1,j+1)(i+1,j),(i+1,j+1)的概率都是1/2. 而如果没有钉子,那么掉到(i+2,j+1)(i+2,j+1)(i+2,j+1)的概率是1. 这样转移就行了. 另外注意读入字符要用cin. 代码: #include<bits/stdc++.h> #define ll long long using namespace std; ll n,m…
传送门 简单二分答案. 我们二分最终有k个牌堆. 这样joker被选择的张数≤min(k,m)\le min(k,m)≤min(k,m) 并且joker需要被选择的张数应该是∑i−1nmax(0,k−c[i])\sum _{i-1} ^n max(0,k-c[i])∑i−1n​max(0,k−c[i]) 代码: #include<bits/stdc++.h> using namespace std; int n,m,ans,c[55],l,r; inline bool check(int x,…
传送门 线段树好题. 这题一看我就想贪心. 先把a,b数组排序. 然后我们选择a数组中最大的b个数(不足b个就选a个数),分别贪心出在b数组中可以获得的最大贡献. 这时可以用线段树优化. 然后交上去只能过一个点(雾 调了很久都没有发现错误点. 于是搜题解. 发现大家的做法都跟我不一样233. 但我不能放弃. 就在这时我发现有可能每次贪心出的最大贡献可能是负数233. 于是我们把每次的决策都记下来. 最后枚举删去最小的决策(有可能是负数,这样答案会增加)之后的贡献来更新答案. 代码: #inclu…
传送门 这真是一道一言难尽的题. 首先比赛的时候居然没想出来正解. 其次赛后调试一直调不出来最后发现是depth传错了. 其实这是一道简单题啊. 对于树边直接lca求距离. 由于非树边最多21条. 因此我们对这21条边连接的42个点都跑一次最短路来更新答案的最小值即可. 代码: #include<bits/stdc++.h> #define N 100005 #define ll long long #define pii pair<int,int> #define pli pai…
传送门 就是让你维护动态的区间带权中位数. 然而昨晚比赛时并没有调出来. 想找到带权中位数的中点可以二分(也可以直接在线段树上找). 也就是二分出第一个断点,使得断点左边的和恰好大于或等于断点右边的和. 现在的问题在于知道断点之后如何统计答案. 我们可以在线段树中维护当前区间全部移到区间最左端点的花费,以及当前区间全部移到区间最右端点的花费. 这样就可以简单合并并轻松统计答案了. 代码: #include<bits/stdc++.h> #define ll long long #define…