nlog

PAT 顶级 1017 The Best Peak Shape (35分)(最长上升子序列)

自古美人都是妖i 提交于 2020-08-12 15:38:10
题目链接: 1017 The Best Peak Shape (35分) 思路: 1.LIS(Longest Increasing Subsequence)是动态规划里的一个基本类型,我们需要掌握它的 O ( n log ⁡ n ) O(n\log n) O ( n lo g n ) 的算法;(不会的朋友自行学习~) 2.其基本操作就是每次二分dp数组,往里面写值,如果 a[i] 被写到dp [k] ,就说明以这个值为结尾的LIS最长是 k+1 ; 3.我们则需要计算出对于每个点,以它为末尾的正向LIS和反向LIS的长度为多少即可; 代码: # include <bits/stdc++.h> using namespace std ; const int maxn = 10005 ; const int INF = 1 << 30 ; int n , a [ maxn ] , dp [ maxn ] , l [ maxn ] , r [ maxn ] ; void solve ( ) { fill ( dp , dp + n , INF ) ; for ( int i = 0 ; i < n ; i ++ ) { l [ i ] = lower_bound ( dp , dp + n , a [ i ] ) - dp ; dp [ l [ i ] ] = a [ i ] ; }

基于C语言的凸包算法实现

↘锁芯ラ 提交于 2020-08-12 02:46:47
基于C语言的凸包算法实现 非计算机专业,代码有些的不好的地方,大佬轻喷^ _ ^ 根据要求,需要使用C语言实现凸包算法——Graham扫描法,本文将从算法理解、实现思路、遇到的问题及其解决方案三个方面来阐述实现过程。 算法理解 凸包算法Graham扫描法,在不考虑排序算法的时间复杂度情况下,算法核心程序的时间复杂度为 O ( n l o g n ) O(n log n) O ( n l o g n ) ,其主要算法思想如下: 首先是预处理过程,获得一组随机点集,选取位于二维空间中左下角的点,即在纵坐标(y)最小情况下横坐标(x)为最小的点 P 0 P_0 P 0 ​ 。以该点位极坐标原点计算其余各点的极角 θ \theta θ ,并根据极角大小进行升序排序,若极角相同则按极径大小按升序排列。由此得到一组按照极角排序的点集 { P 0 , P 1 , . . . , P n } \left\{P_0,P_1,...,P_n\right\} { P 0 ​ , P 1 ​ , . . . , P n ​ } (如下图所示)。 完成预处理之后即Graham算法的核心步骤,主要通过栈的方式来实现凸包点的计算。首先将 P 0 , P 1 P_0,P_1 P 0 ​ , P 1 ​ 两点压栈,他们必然属于凸包上的点。然后进入迭代过程,以栈顶元素 A [ t o p ] A[top] A [ t

详谈内部排序之各种插入排序

*爱你&永不变心* 提交于 2020-08-11 20:32:38
插入排序: 直接插入排序: 如上图的插入扑克牌就是生活中最常见的插入排序。 直接插入排列过程: 先将序列中第 1 个记录看成是一个有序子序列, 然后从第 2 个记录开始,逐个进行插入,直至整个序列有序。 例题: 为直接插入排序的详细过程,其中有一些注意事项: 1)数据中有两个49,其中一个加粗,用来判断这两个49的前后顺序是否发生变化,然后得到该排序是否稳定 2)从初始状态开始只要i++,就会向后读一个数据,与前面的数据进行循环比较,然后插入到正确的位置,直到整个序列有序。 3)R0的作用是:存储需要进行插入操作的数据,称为监视号。 关键代码: void InsertSort ( SqList &L ) { // 对顺序表 L 作直接插入排序 for ( i = 2; i <= L.length; ++ i ) if (L.r[i].key < L.r[i -1].key) { L.r[0] = L.r[i]; // 复制为监视哨 L.r[i] = L.r[i -1]; for ( j = i - 2; L.r[0].key < L.r[ j ].key; - - j ) L.r[ j + 1] = L.r[ j ]; // 记录后移 L.r[ j + 1] = L.r[0]; // 插入到正确位置 } } // InsertSort 直接插入排序的性能分析: 综上

【数论】数论相关口胡

不问归期 提交于 2020-08-09 23:34:18
正经人谁学数论啊 持续更新。 右键数学公式 \(\rightarrow\) Math Settings \(\rightarrow\) Math Renderer \(\rightarrow\) SVG以获得更佳体验。 小学生数论,并不适合dalao 因为本人过于蒟蒻所以如果你想在这里学些什么的话还是算了 基本也就我自己看看 主题的锅导致标题分的不清楚,无语子 目录 目录 正经人谁学数论啊 目录 质数 Eratosthenes筛素数 线性筛素数 普通版 无需取模版 Miller_Rabin大素数判定 约数 GCD 辗转相除法求GCD 二进制方法求GCD 更相减损术求GCD 裴蜀定理 算数基本定理的推论 算数基本定理(唯一分解定理) 求正约数个数 线性筛求约数个数 约数和定理 线性筛求约数和 求正约数集合 试除法 倍数法 欧拉函数 性质 分解质因数求单个欧拉函数 Eratosthenes筛求欧拉函数 线性筛求欧拉函数 扩展欧几里得 非平凡因子 Pollard_Pho大数字质因数分解 同余 费马小定理 前置芝士 正文 欧拉定理 扩展欧拉定理 二次探测定理 Wilson定理 乘法逆元 费马小定理求逆元 欧拉定理求逆元 扩展欧几里得求逆元 线性求逆元 线性同余方程 中国剩余定理 中国剩余定理的扩展 组合数学相关 Catalan数 Lucas定理 莫比乌斯反演&&拉格朗日插值 质数

【数论】数论相关口胡

点点圈 提交于 2020-08-09 21:07:08
正经人谁学数论啊 持续更新。 小学生数论,并不适合dalao 因为本人过于蒟蒻所以如果你想在这里学些什么的话还是算了 基本也就我自己看看 主题的锅导致标题分的不清楚,无语子 目录 目录 正经人谁学数论啊 目录 质数 Eratosthenes筛素数 线性筛素数 普通版 无需取模版 Miller_Rabin大素数判定 约数 GCD 辗转相除法求GCD 二进制方法求GCD 更相减损术求GCD 算数基本定理的推论 算数基本定理(唯一分解定理) 求正约数个数 线性筛求约数个数 约数和定理 线性筛求约数和 求正约数集合 试除法 倍数法 欧拉函数 性质 分解质因数求单个欧拉函数 Eratosthenes筛求欧拉函数 线性筛求欧拉函数 扩展欧几里得 非平凡因子 Pollard_Pho大数字质因数分解 同余 费马小定理 前置芝士 正文 欧拉定理 扩展欧拉定理 乘法逆元 费马小定理求逆元 欧拉定理求逆元 扩展欧几里得求逆元 线性求逆元 线性同余方程 中国剩余定理 组合数学相关 莫比乌斯反演&&拉格朗日插值 质数 Eratosthenes筛素数 其实就是劣质版线性筛,不过代码比较短,打个小表还是可以的。 时间效率 \(O(nlog\ log\ n)\) int Pri[maxn]; bool NotPri[maxn]; void JudPri(int n){ NotPri[0]=1; NotPri[1]

asp.net core之NLog

佐手、 提交于 2020-08-09 02:34:28
NuGet添加 NLog.Web.AspNetCore 。 <PackageReference Include="Microsoft.AspNetCore.App" /> 添加配置文件 新建一个文件nlog.config(建议全部小写,linux系统中要注意), 并右键点击其属性,将其“复制到输出目录”设置为“始终复制”。文件内容如下 <?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" autoReload="true"> <targets> <target xsi:type="File" name="allfile" keepFileOpen="false" encoding="utf-8" fileName="${basedir}/logs/${shortdate}-${level}.log" layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format

ZJOI2020游记

為{幸葍}努か 提交于 2020-08-08 09:57:10
草自己好像写了4K流水账,有点浪费读者时间啊. 赛前心态挺平和的. 主要是觉得去年像联赛那样自己吓自己挺不值的(现在还是觉得自我惊吓导致Day2在不会T2证明的情况下优先选择补证明而不去卡常太愚蠢了,到手的AK就这么没了…). 就考两天试也没啥必要把自己折腾得死去活来,不如吃好睡好. 虽然最后也没吃好,因为9:00~14:00的考试时间太反人类了. 心态平和的另外一个原因是,听说我手上的NOI2019 Ag好像在强基计划里还是有用的. Day1 开场看到个string,莫名兴奋. 按照传统先看T2,发现T2名字叫传统艺能,又是个线段树上搞一搞的题. 回忆了一下之前几年的线段树题的做法,顿时有种出题组没题出了的错觉. 一看部分分,好像比去年常数一卡就是60分的垃圾出题组高明多了(悲伤的事情是听说还是有人因为这题的常数原因退队了). 之后看T1,是个字符串+DS,80分暴力似乎挺一眼的. 接着看T3,一股浓浓的ATC风格扑面而来,稍微想了想好像30分好像挺显然的. 之后回去想了想T1,感觉可以将所有runs建trie然后区间本质不同子串计数, ZJOI就这难度? 不过有点难写(而且实际上这是个假算法). 于是先去写T2了.写完发现大样例要跑7s,回想了一下去年的卡常经历,把矩乘全部展开就只用2s多了. 还真就传统艺能(指出矩乘题必定配合完全展开)?. 把T1的runs部分写完后

someting to read before CSP

天涯浪子 提交于 2020-08-08 05:28:47
“不要为明天而忧虑,因为明天自有明天的忧虑;一天的难处一天当就够了。” 念念不忘,必有回响。 考试结束前15分钟停止写代码。然后按照以下顺序进行检查: -检查文件名是否写错 -检查是否打开文件输入输出 题目名称很重要,值得反复检查。 (太真实咧,xym文件名就打错了,DAY1原地爆炸。不仅如此,他和宏哥两个人 freopen里面的 .in / .out文件名也写错了,都怪JX今年莫名其妙,交上去的源文件名字不是题目名字,而改成了“task1""task2",简直匪夷所思) KISS:Keep it simple and stupid 也许 上个厕所 冷静一下是个好主意!(不过我们考试的时候监考强调: 考试结束前三十分钟不能去卫生间了 如果你发现你旁边的人写得很快,放心,他的算法十有八九是错的 走出考场后,除非已经是Day2,永远别对答案 注意数组越界,需不需long long或高精度。 注意删掉无关输出。 注意读入有没有负数。 注意文件操作。(freopen) 尽量少改动代码,还要注意多留备份,以防改正时发现错误而难以撤回。 最后,这是你自己的比赛,不要被他人影响了, 也不要去影响他人。 20:2^20=一百万,O(2^n),搜索 100:100^3=一百万,O(n^3),Floyd/APSP/搜索 1000:1000^2=一百万,O(n^2),动态规划/图论 500000:O

leetcode剑指 Offer 61(扑克牌中的顺子)--Java语言实现

核能气质少年 提交于 2020-08-07 10:54:41
求: 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大、小王为 0 ,可以看成任意数字。A 不能视为 14。 示例 1: 输入: [1,2,3,4,5] 输出: True 示例 2: 输入: [0,0,1,2,5] 输出: True 限制: 数组长度为 5 数组的数取值为 [0, 13] . 题目链接: https://leetcode-cn.com/problems/bu-ke-pai-zhong-de-shun-zi-lcof/ 解: 有2种常规做法,不管是哪种做法,注意如果数组中出现了相同的元素,说明有对子,那么肯定无法组成顺子,这种情况在程序里应该有判断。 1、排序后比较 先排序,然后先获取0的数量。(也可以放到一个for循环里统一拿,因为已经排序,最后一位数是不是0不影响结果) 遍历数组,如果相邻元素的差大于1,则考虑使用0进行填补,如果遍历后发现0的个数不足以填补,返回false,否则返回true。 public boolean isStraight ( int [] nums) { int N = nums. length ; Arrays. sort (nums) ; int zeroCount = 0 ; for ( int i = 0 ; i < N - 1 ; i++) { if

【数论】数论相关口胡

跟風遠走 提交于 2020-08-07 09:29:10
正经人谁学数论啊 持续更新。 小学生数论,并不适合dalao 因为本人过于蒟蒻所以如果你想在这里学些什么的话还是算了 基本也就我自己看看 主题的锅导致标题分的不清楚,无语子 目录 目录 正经人谁学数论啊 目录 质数 Eratosthenes筛素数 线性筛素数 普通版 无需取模版 Miller_Rabin大素数判定 约数 GCD 辗转相除法求GCD 二进制方法求GCD 更相减损术求GCD 算数基本定理的推论 算数基本定理(唯一分解定理) 求正约数个数 线性筛求约数个数 约数和定理 线性筛求约数和 求正约数集合 试除法 倍数法 欧拉函数 性质 分解质因数求单个欧拉函数 Eratosthenes筛求欧拉函数 线性筛求欧拉函数 扩展欧几里得 非平凡因子 Pollard_Pho大数字质因数分解 同余 费马小定理 前置芝士 正文 欧拉定理 扩展欧拉定理 乘法逆元 费马小定理求逆元 欧拉定理求逆元 扩展欧几里得求逆元 线性求逆元 线性同余方程 中国剩余定理 组合数学相关 莫比乌斯反演&&拉格朗日插值 质数 Eratosthenes筛素数 其实就是劣质版线性筛,不过代码比较短,打个小表还是可以的。 时间效率 \(O(nlog\ log\ n)\) int Pri[maxn]; bool NotPri[maxn]; void JudPri(int n){ NotPri[0]=1; NotPri[1]