Maxi

【POJ HDOJ leetcode】括号匹配合法性及最长括号匹配

时光毁灭记忆、已成空白 提交于 2021-02-17 05:32:35
/* 1. string parenthesis 给出一个由()组成的字符串判断合法性,如()合法, (, (((不合法. 2. 给出一串()字符串,求出最长连续括号匹配的长度及其位置 */ #include <iostream> #include <stdio.h> #include <stack> using namespace std; class Solution { public : bool isValid( const string & s) { if (s == "" ) { return true ; } stack < char > stk; size_t size = s.size(); for (size_t i = 0 ; i < size; i++ ) { if (s[i] == ' ( ' ) { stk.push(s[i]); } else { if (stk.empty()) return false ; stk.pop(); } } return stk.size() == 0 ; } }; pair < int , int > NumOfMatch( const char * str) { if (str == NULL) return { 0 , 0 }; const char * p = str; int nLeft = 0 ; //

noip模拟测试13

大城市里の小女人 提交于 2021-02-08 21:02:58
T1:矩阵游戏   刚看题一脸懵,感觉一点思路都没有……   然后就开始看题目,发现题目描述里似乎藏着什么东西???   感觉题目闲的无聊疯狂描述了一个极其简单的东西,好像在暗示着什么!   所以就把题目中的式子写下来——$(i-1)*m+j$   再用这个式子把答案表示出来——$\sum_{i=1}^nR_i\sum_{j=1}^mS_j[(i-1)*m+j]$   然后把含有$i$的项拆出来就可以$O(n)$做了      so,code 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<cmath> 5 #include<algorithm> 6 #include<vector> 7 #define ll long long 8 using namespace std; 9 const int MAXN= 1000005 ,MAXK= 100005 ,D=1e9+ 7 ; 10 int n,m,k; 11 ll sums,sumr,s[MAXN],r[MAXN],ans,tmp,sum; 12 char opt[ 5 ]; 13 int main() { 14 scanf( " %d%d%d " ,&n,&m,& k); 15 for ( int i= 1 ;i<=m;i++) s[i

致初学者(二): HDU 2014~ 2032题解

試著忘記壹切 提交于 2021-01-06 14:12:10
下面继续给出HDU 2014~2032的AC程序,供大家参考。2014~2032这19道题就被归结为“C语言程序设计练习(三) ”~“C语言程序设计练习(五) ”。 HDU 2014:青年歌手大奖赛_评委会打分 用max保存最高分,min保存最低分,sum表示总分,则最后平均分为(sum-max-min)/(n-2)。 #include <stdio.h> int main() { int n,i,score,min,max,sum; while (scanf( " %d " ,&n)!= EOF) { sum = 0 ; min = 1000 ; max =- 1 ; for (i= 1 ;i<=n;i++ ) { scanf( " %d " ,& score); sum += score; if (min>score) min= score; if (max<score) max= score; } printf( " %.2f\n " , 1.0 *(sum-max-min)/(n- 2 )); } return 0 ; } View Code HDU 2015: 偶数求和 简单循环程序。用变量cnt记录偶数的个数,用sum保存偶数的累加和。 #include <stdio.h> int main() { int n,m,num,cnt,sum,i,first; while

2018 ACM-ICPC World Finals

心不动则不痛 提交于 2021-01-04 08:50:38
我重写行不? Comma Sprinkler 签到题,类似于BFS用两个队列维护每种单词前/后是否有逗号向前/后扩展,需要注意如果有句号挡着是不能扩展过去的,不过样例有。 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int maxn = 1e6 + 10 ; 4 map< string , vector< int >> M; 5 bool pre[maxn], suc[maxn]; 6 bool st[maxn], ed[maxn]; 7 queue< string > QP, QS; 8 set < string > SP, SS; 9 string str[maxn]; 10 11 int main() { 12 string s; 13 getline(cin, s); 14 int l = s.length(), p = 1 ; 15 st[p] = true ; 16 for ( int i = 0 ; i < l; ++ i) { 17 if (s[i] == ' , ' ) { 18 suc[p] = pre[p + 1 ] = true ; 19 ++p, ++ i; 20 } 21 else if (s[i] == ' . ' ) { 22 ed[p] = st[p + 1 ] = true

HMM-维特比算法

本秂侑毒 提交于 2020-08-12 17:05:21
HMM-维特比算法理解与实现 HMM-前向后向算法理解与实现(python) HMM-维特比算法理解与实现(python) 解码问题 给定观测序列 O = O 1 O 2 . . . O T O=O1O2...OT,模型 λ ( A , B , π ) λ(A,B,π),找到最可能的状态序列 I ∗ = { i ∗ 1 , i ∗ 2 , . . . i ∗ T } I∗={i1∗,i2∗,...iT∗} 近似算法 在每个时刻 t t 选择最可能的状态,得到对应的状态序列 根据 HMM-前向后向算法 计算时刻 t t 处于状态 i ∗ t it∗ 的概率: i ∗ t = a r g m a x [ γ t ( i ) ] , t = 1 , 2 , . . . T γ t ( i ) = α i ( t ) β i ( t ) ∑ N i = 1 α i ( t ) β i ( t ) it∗=argmax[γt(i)],t=1,2,...Tγt(i)=αi(t)βi(t)∑i=1Nαi(t)βi(t) 但是无法保证得到的解是全局最优解 维特比算法 维特比算法的基础可以概括为下面三点(来源于吴军:数学之美): 如果概率最大的路径经过篱笆网络的某点,则从起始点到该点的子路径也一定是从开始到该点路径中概率最大的。 假定第 t 时刻有 k 个状态,从开始到 t 时刻的 k 个状态有 k

【理论恒叨】【立体匹配系列】经典AD-Census: (3)扫描线优化(Scanline Optimization)

雨燕双飞 提交于 2020-08-10 17:27:29
AD-Census算法来自于中国学者Xing Mei等在ICCV2011发表的论文《On Building an Accurate Stereo Matching System on Graphics Hardware》 1 。算法效率高、效果出色,Intel RealSense D400就是基于该算法实现的立体匹配 2 。 本系列将带大家深入了解AD-Census的理论,希望能够对同学们的立体匹配算法研究有所帮助。 AD-Census是一个将局部算法和半全局算法相结合的算法,它包含四个步骤: 1 初始代价计算、2 代价聚合、3 扫描线优化、4 视差优化 。本篇的内容是扫描线优化部分。 Step 1. AD-Census Cost Initialization Step 2. Cross-based Cost Aggregation Step 3. Scanline Optimization Step 4. Multi-step Disparity Refinement 【理论恒叨】【立体匹配系列】经典AD-Census: (3)扫描线优化 如果了解另外一个立体匹配经典算法:SemiGlobalMatching,对扫描线优化肯定是不陌生的,大家可以重温下我前面的博客: 【理论恒叨】【立体匹配系列】经典SGM:(3)代价聚合(Cost Aggregation)

二维码的分类

≯℡__Kan透↙ 提交于 2020-08-10 05:50:03
二维码可以分为堆叠式/行排式二维条码和矩阵式二维条码。堆叠式/行排式二维条码形态上是由多行短截的一维条码堆叠而成;矩阵式二维条码以矩阵的形式组成,在矩阵相应元素位置上用点表示二进制“1”,用“空”表示二进制“0”,由“点”和“空”的排列组成代码。 堆叠式二维码 堆叠式/行排式二维条码(又称堆积式二维条码和层排式二维条码),其编码原理是建立在一维条码基础之上,按需要堆积成二行和多行。它在编码设计、校验原理、识读方式等方面继承了一维条码的一些特点,识读设备与条码印刷与一维条码技术兼容。但由于行数的增加,需要对行进行判定,其译码算法与软件也不完全相同于一维条码。有代表性的行排式二维条码有:Code 16K、Code49、PDF417等。 矩阵式二维条码 矩阵式二维条码(又称棋盘式二维条码)它是在一个矩形空间通过黑、白像素在矩阵中的不同分布进行编码。在矩阵相应元素位置上,用点(方点、圆点或其他形状)的出现表示二进制“1”,点的不出现表示二进制的“0”,点的排列组合确定了矩阵式二维条码所代表的意义。矩阵式二维条码是建立在计算机图像处理技术、组合编码原理等基础上的一种新型图形符号自动识读处理码制。具有代表性的矩阵式二维码条码有:Maxi Code、QR Code、data Matrix等。 中琅二维码软件 支持多种二维码类型,常用的码制有data Matris、QR Code、PDF417

python中使用Opencv进行车牌号检测——2018.10.24

ε祈祈猫儿з 提交于 2020-08-07 12:16:46
初学Python.Opencv,想用它做个实例解决车牌号检测。 车牌号检测需要分为四个部分:1.车辆图像获取、2.车牌定位、3.车牌字符分割和4.车牌字符识别 在百度查到了车牌识别部分车牌定位和车牌字符分割,先介绍车牌定位部分 车牌定位需要用到的是图片二值化为黑白后进canny边缘检测后多次进行开运算与闭运算用于消除小块的区域,保留大块的区域,后用cv2.rectangle选取矩形框,从而定位车牌位置 车牌字符的分割前需要准备的是只保留车牌部分,将其他部分均变为黑色背景。这里我采用cv2.grabCut方法,可将图像分割成前景与背景。分割完成后,再经过二值化为黑白图后即可进行字符分割。由于图像中只有黑色和白色像素,因此我们需要通过图像的白色像素和黑色像素来分割开字符。即分别通过判断每一行每一列的黑色白色像素值的位置,来定位出字符。具体程序附下 # -*- coding: utf-8 -*- """ Created on Tue Oct 23 20:46:45 2018 @author: Administrator """ import cv2 import numpy as np def stretch(img): ''' 图像拉伸函数 ''' maxi = float(img.max()) mini = float(img.min()) for i in range(img

python中使用Opencv进行车牌号检测——2018.10.24

情到浓时终转凉″ 提交于 2020-08-06 06:30:32
初学Python.Opencv,想用它做个实例解决车牌号检测。 车牌号检测需要分为四个部分:1.车辆图像获取、2.车牌定位、3.车牌字符分割和4.车牌字符识别 在百度查到了车牌识别部分车牌定位和车牌字符分割,先介绍车牌定位部分 车牌定位需要用到的是图片二值化为黑白后进canny边缘检测后多次进行开运算与闭运算用于消除小块的区域,保留大块的区域,后用cv2.rectangle选取矩形框,从而定位车牌位置 车牌字符的分割前需要准备的是只保留车牌部分,将其他部分均变为黑色背景。这里我采用cv2.grabCut方法,可将图像分割成前景与背景。分割完成后,再经过二值化为黑白图后即可进行字符分割。由于图像中只有黑色和白色像素,因此我们需要通过图像的白色像素和黑色像素来分割开字符。即分别通过判断每一行每一列的黑色白色像素值的位置,来定位出字符。具体程序附下 # -*- coding: utf-8 -*- """ Created on Tue Oct 23 20:46:45 2018 @author: Administrator """ import cv2 import numpy as np def stretch(img): ''' 图像拉伸函数 ''' maxi = float(img.max()) mini = float(img.min()) for i in range(img

用于测试Collat​​z猜想的C ++代码比手写汇编要快-为什么?

孤街浪徒 提交于 2020-08-04 22:09:48
问题: I wrote these two solutions for Project Euler Q14 , in assembly and in C++. 我用汇编语言和C ++语言为 Euler Q14项目 编写了这两种解决方案。 They are the same identical brute force approach for testing the Collatz conjecture . 它们是用于测试 Collat​​z猜想 的相同相同的蛮力方法。 The assembly solution was assembled with 组装解决方案与 nasm -felf64 p14.asm && gcc p14.o -o p14 The C++ was compiled with C ++使用 g++ p14.cpp -o p14 Assembly, p14.asm 汇编, p14.asm section .data fmt db "%d", 10, 0 global main extern printf section .text main: mov rcx, 1000000 xor rdi, rdi ; max i xor rsi, rsi ; i l1: dec rcx xor r10, r10 ; count mov rax, rcx l2: test