const

数位DP入门

浪子不回头ぞ 提交于 2020-03-05 06:58:54
考试考dp的时候时常会碰见有关数位dp的问题,每次考到就是一脸懵逼加吃惊,所以今天抽空看了一下有关数位dp的知识,网上有很多大神都说的很好,推荐看几篇blog。 入门经典 慢慢看,很不错 数位DP的套路 数位dp其实看了那么多篇blog感觉就是一个套路,一个记忆化搜索,方法无非是用两个端点的答案相减得到答案。dp主要考得是状态的设定和转移及其优化,对于数位dp来说,转移和优化其实是固定的,变的只是状态的设定,把状态设好了,套上板子处理下边界和正确性就好了,感觉还是要多做题,先贴两道题,之后慢慢更新,可以去vj上坐kuangbin带你飞系列的数位dp专题,题目很适合入门的人。 HDU2089 题面 统计区间 [a,b] 中不含 4 和 62 的数字有多少个。 分析 这其实是一道模板题看了上面两篇blog的做这题会很简单,部分注释写在代码里了。 /************************************************************************* > Author: Drinkwater > Created Time: 2017/8/24 21:55:11 ************************************************************************/ #include<iostream>

二分匹配模板

和自甴很熟 提交于 2020-03-05 06:02:16
1 #include <cstdio> 2 #include <cstring> 3 #include <queue> 4 #include <vector> 5 #include <algorithm> 6 using namespace std; 7 /****************************************************** 8 * 二分图匹配(匈牙利算法得邻接矩阵+dfs实现) 9 * 初始化:g[][]两边顶点的划分情况 10 * 建立g[i][j]表示i->j的有向边就可以了,是左边向右边的匹配 11 * g 没有边相连则初始化为0 12 * //un是匹配左边的顶点数,vn是匹配右边的顶点数 13 * 调用:res = hungray():输出最大匹配 14 * 优点:适用于稠密图,dfs找增广路,实现简洁易于理解 15 * 时间复杂度:O(V,E)。 16 * 顶点编号从0开始 17 const int maxn = 500 + 5; 18 int un, vn;//二分图中u, v的数目,使用前必须赋值 19 int g[maxn][maxn]; 20 int linker[maxn];//每个结点的匹配结点 21 bool used[maxn]; 22 23 bool dfs(int u) { 24 for(int v = 0;

声明优先级规则

与世无争的帅哥 提交于 2020-03-05 05:58:15
Question:(1) char * const *(*p)()想要表达的意思是?      (2) const char* const *p想要表达的意思又是? 想要回答上述两个问题,就要先来看一下C/C++语言声明的优先级规则吧 A  声明从它的名字开始读取,然后按照优先级顺序依次读取。 B  优先级从高到低依次是:   B.1  声明中被括号括起来的那部分   B.2  后缀操作符:       括号()表示这是一个函数,而放括号[]表示这是一个数组。   B.3  前缀操作符:       星号*表示“指向...的指针”。 C  如果const和/或volatie关键字的后面紧跟类型说明符(如int char等),那么它作用于类型说明符。在其他情况下,它作用于它作便紧邻的指针星号。 按照上述规则,我们来分析: (1)char * const *(*p)()   首先找到标识符p,按照规则B.1,p是一指针;接着按照规则B.2,p是一函数指针;按照规则B.3,p是一函数指针,该函数返回值为指针类型;依照规则C,const后面没有类型说明符,因此它是一个const pointer to char,即指向char类型的常指针。   总结:p是一函数指针,它指向一个函数,该函数返回值为一指针,该指针指向char类型的常量指针 (2)const char* const *p  

C++的特点

这一生的挚爱 提交于 2020-03-05 03:32:03
C和C++ C主要是应用在在驱动层,是面向过程的编程语言,对类型的定义不是很严格。 C++主要是应用与应用层,是C语言的一个加强版,可以完全兼容C语言,并且还有很多C语言不具备的特性,如,C++是一种面向对象的编程语言,C++的设计目标是:运行效率和开发效率的统一 C++更加强调语言的实用性,可以在任意地方声明变量 C++中的register只是起到兼容性的作用 C++中的编译器能够更好的进行优化 struct关键字的加强: C typedef struct _tag_student Student; struct _tag_student { const char* name; int age; } C++ struct Student { const char* name; int age; }; int f() 和int f(void)有什么区别 注意:C++中的所有的表示符都必须显示的声明类型,不允许默认类型的出现,但是在C语言中可以 C++中: int f()和int f(void)表示的是相同的意思,指的是定义了一个返回值是int的无参数的函数 C中: (在C中默认的参数类型和函数返回值类型都是int) int f() 指的是定义了一个返回值为int 函数参数个数为任意多个的函数 int f(void) 指的是定义了一个返回值为int类型的无参数的函数 C和C+

对象的新增方法

六眼飞鱼酱① 提交于 2020-03-05 01:46:19
Object.is() ES5 比较两个值是否相等,只有两个运算符:相等运算符( == )和严格相等运算符( === )。它们都有缺点,前者会自动转换数据类型,后者的 NaN 不等于自身,以及 +0 等于 -0 。JavaScript 缺乏一种运算,在所有环境中,只要两个值是一样的,它们就应该相等。 ES6 提出“Same-value equality”(同值相等)算法,用来解决这个问题。 Object.is 就是部署这个算法的新方法。它用来比较两个值是否严格相等,与严格比较运算符(===)的行为基本一致。 Object.is('foo', 'foo') // true Object.is({}, {}) // false 不同之处只有两个:一是 +0 不等于 -0 ,二是 NaN 等于自身。 +0 === -0 //true NaN === NaN // false Object.is(+0, -0) // false Object.is(NaN, NaN) // true ES5 可以通过下面的代码,部署 Object.is 。 Object.defineProperty(Object, 'is', { value: function(x, y) { if (x === y) { // 针对+0 不等于 -0的情况 return x !== 0 || 1 / x === 1 /

code

浪子不回头ぞ 提交于 2020-03-04 23:53:29
des: #include <stdio.h> #include <string.h> #include <iostream> #include <stdlib.h> using namespace std; int IP_Table[64] = { //IP置换矩阵 58, 50, 42, 34, 26, 18, 10, 2, 60, 52, 44, 36, 28, 20, 12, 4, 62, 54, 46, 38, 30, 22, 14, 6, 64, 56, 48, 40, 32, 24, 16, 8, 57, 49, 41, 33, 25, 17, 9, 1, 59, 51, 43, 35, 27, 19, 11, 3, 61, 53, 45, 37, 29, 21, 13, 5, 63, 55, 47, 39, 31, 23, 15, 7}; int E_Table[48] = { //扩展矩阵 32, 1, 2, 3, 4, 5, 4, 5, 6, 7, 8, 9, 8, 9, 10, 11, 12, 13, 12, 13, 14, 15, 16, 17, 16, 17, 18, 19, 20, 21, 20, 21, 22, 23, 24, 25, 24, 25, 26, 27, 28, 29, 28, 29, 30, 31, 32, 1}; int P_Table

ES6专栏 - 新的数据结构 Symbol

人走茶凉 提交于 2020-03-04 23:41:04
ES6专栏 - 新的数据结构 Symbol 目录: Symbol的出现背景 将Symbol作为属性名 对Symbol属性名的遍历 Symbol.for(), Symbol.keyFor() 内置的Symbol值 Symbol的出现背景 我们在过去的开发中, 使用对象的场景由其之多, 有的时候一个对象可以很复杂, 由十多二十个属性组成, 这样对于不细心的开发者来说, 绝对会出问题, 啥问题? 哥们你没遇到过属性覆盖问题吗? 你在5天前定义了一个对象的属性name值为’loki’, 而在5天后, 你突然不小心给这个对象再次添加了一个属性name 值为thor, 自此loki就不存在了, 其实这个例子可能举得有点痴呆, 但是日常开发中我们确实有过属性覆盖从而造成bug的情况发生 于是, ES6 创造了一种新的数据结构 Symbol , 这哥们不得了, 他代表的就是一个独一无二的值, 不存在被覆盖, 如果我们用 Symbol 值作为对象的属性名, 那么我们就永远不用担心覆盖的问题喽 Symbol是原始数据类型 在此之前我们知道的原始类型有: String, Number, undefined, null, Boolean, 如今又加入了一个新成Symbol, 至于object, 笔者直接把他归为引用值, 但是如果你有看过业内比较著名的《ES6标准入门》的话,

【代码超详解】POJ 2478 Farey Sequence(欧拉函数线性打表 + 前缀和)

人走茶凉 提交于 2020-03-04 22:12:51
一、题目描述 二、算法分析说明与代码编写指导 观察,写出递推式 F[n] = F[n - 1] ∪ { i / n | gcd(i, n) = 1 }。可见 |F[n]| = |F[n - 1]| + φ(n),认为 φ(1) = 0。 打表生成 1 ~ 1e6 的欧拉函数的值后,记 S[n] = φ(1) + φ(2) + … + φ(n),求得前缀和。 三、AC 代码(266 ms) # include <cstdio> # pragma warning(disable:4996) unsigned long long phi [ 1000001 ] , n , s [ 1000001 ] ; template < class _Pty > inline void gen_phi ( _Pty * const phi , const _Pty & n ) { _Pty m = n / 2 ; for ( _Pty i = 2 ; i <= m ; ++ i ) { if ( ! phi [ i ] ) { for ( _Pty j = i ; j <= n ; j + = i ) { if ( ! phi [ j ] ) phi [ j ] = j ; phi [ j ] = phi [ j ] / i * ( i - 1 ) ; } } } for ( _Pty i = m

ASE加密和解密

大憨熊 提交于 2020-03-04 19:28:59
import CryptoJS from 'crypto-js' const keyStr = 'XXXXXXX' // 秘钥 // 加密 export const encryptAes = message => { var key = CryptoJS.enc.Utf8.parse(keyStr) var srcs = CryptoJS.enc.Utf8.parse(message) var encrypted = CryptoJS.AES.encrypt(srcs, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }) return encrypted.toString() } // 解密 export const decryptAes = message => { var key = CryptoJS.enc.Utf8.parse(keyStr) var decrypt = CryptoJS.AES.decrypt(message, key, { mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7 }) return CryptoJS.enc.Utf8.stringify(decrypt).toString() } 来源: CSDN 作者:

动手实现 React-redux(一) connect 和 mapStateToProps

无人久伴 提交于 2020-03-04 15:28:59
1.结合 context 和 store import React, { Component } from 'react'; import PropTypes from 'prop-types' function createStore (reducer) { let state = null const listeners = [] const subscribe = (listener) => listeners.push(listener) const getState = () => state const dispatch = (action) => { state = reducer(state, action) listeners.forEach((listener) => listener()) } dispatch({}) // 初始化 state return { getState, dispatch, subscribe } } const themeReducer = (state, action) => { if (!state) return { themeColor: 'red' } switch (action.type) { case 'CHANGE_COLOR': return { ...state, themeColor: action