
知识点
xuanweiace
一个热爱算法竞赛的弱校ACMer路过。青大本,浙大硕,方向后端开发,菜鸡一枚,奋斗ing...
展开
-
二进制枚举子集 CS Maxor 或运算,DP(SOS)
https://blog.youkuaiyun.com/noone0/article/details/78289517目前没有题目链接。题意:长度为n的序列a,选出两个元素,其或运算结果的最大值为多少,并求出a[i]|a[j]==mx的方案数?n<=1e5,0<=a[i]<=2^17,m<=17.假如最大值为mx,若x|y=mx 则x和y肯定为mx的子集.否则或运算结果...原创 2020-12-17 00:12:38 · 259 阅读 · 0 评论 -
C++语言 如何用G++进行编译和运行程序
在windows下,我们写C++程序一般会有如下几个步骤:编写.cpp文件,代码都在里面; 可能还有一些.h文件之类的支持文件,这些文件一般都会放在一起,或者相对位置是固定的; 编译文件,链接文件,生成.exe文件 双击执行.exe文件(其实开发平台里的“运行”就是帮你双击了一下而已)在Linux下这些步骤基本都是一样的,不同的是,Linux最后生成的文件不是.exe,而是.out调用C++编译器的命令因编译器和操作系统的不同而不同,常用的编译器是GNU编译器和微软Visual Stu.原创 2020-10-26 20:36:31 · 11408 阅读 · 1 评论 -
【Chrome浏览器】常用快捷键整理
标签页和窗口快捷键 1. Ctrl + n 打开新窗口 2. Ctrl + t 打开新的标签页,并跳转到该标签页 3. Ctrl + Shift + t 重新打开最后关闭的标签页,并跳转到该标签页 4. Ctrl + Tab跳转到下一个打开的标签页 5. Ctrl + Shift + Tab跳转到上一个打开的标签页 6. Alt + ← 历史记录上一页...转载 2019-11-15 16:35:46 · 628 阅读 · 0 评论 -
c/c++,字符,字符串,各种方式读入与对空格,回车的处理
#include<iostream>#include<string>using namespace std;int main(){ char a[50],b[50],charr; //经测试,cin读入字符串,会识别空格和回车为截止,并且不会吞掉, //只是每次读的时候会从第一个不为空格/回车的字符开始读(因为加一个getchar不影响,加两个就影...原创 2018-10-10 18:53:39 · 9928 阅读 · 3 评论 -
对记忆化搜索(ms)和动态规划(dp)的深入理解
六月中旬了,马上就要期末考试了,期末考试结束以后就要迎来紧张刺激的留校集训,到那时博客会更新的比较频繁,而现在在准备期末考试,所以可能更新的博客稍微少一些。 话不多说,今天来更一篇刚刚吃饭的时候关于记忆化搜索和动态规划的一些区别的思考。 记忆化搜索(Memory Search),其实还是用递归函数实现的,通常函数名依然叫做dfs(  ̄□ ̄||)。核心语句就是那两部分关键的语句块...原创 2018-06-14 14:13:48 · 11914 阅读 · 3 评论 -
priority_queue(优先队列)的简单构造与用法
priority_queue priority_queue 优先队列,其底层是用堆来实现的。在优先队列中,队首元素一定是当前队列中优先级最高的那一个。 在优先队列中,没有 front() 函数与 back() 函数,而只能通过 top() 函数来访问队首元素(也可称为堆顶元素),也就是优先级最高的元素。一、基本数据类型的优先级设置此处指的基本数据类型就是 int 型,double 型,ch...转载 2018-07-11 10:46:25 · 1647 阅读 · 0 评论 -
关于时间复杂度(持续更新.....)
数据范围小于100W的(1e6),nlogn是1000w左右,可以卡时。数据范围小于1000的,勉强可以o(n^2)。数据范围1000W左右的(1e7),只能考虑o(n)或者o(logn)数据范围大于1000W的(1e7),只能考虑o(logn)。平面上有n个点,求出任意两点间距离:O(n^2)快速排序:O(nlogn)堆排序:O(n)无序数列中查找某个数(顺序查找):O(n)二分查找:O(log...原创 2018-07-11 11:27:20 · 714 阅读 · 1 评论 -
ACM中关于计算几何(浮点数)的精度问题
计算几何的精度问题说到底其实是浮点数的精度问题,但我觉得“计算几何”比“浮点数”更能吸引眼球,所以选了这个标题。1.浮点数为啥会有精度问题:浮点数(以C/C++为准),一般用的较多的是float, double。 占字节数 数值范围 十进制精度位数 float 4 ...转载 2018-07-18 11:16:42 · 807 阅读 · 0 评论 -
可以使用田忌赛马类贪心问题的前提(或说 如何判断题目符合田忌赛马类贪心问题)
前提就是A和B这两个数组的个数是相同的。 两个题目链接: https://blog.youkuaiyun.com/qq_41289920/article/details/81003946 另一个暂未发表、、、...原创 2018-07-12 13:36:40 · 795 阅读 · 0 评论 -
最大素因子(不是题目!自己写着玩的。。。)
话不多说直接上代码:#include<iostream>#include<cstring>using namespace std;int res[10000];int cnt;long long su[100000000];bool isprime[200000000];void prime() { memset(isprime,1,sizeof(isp...原创 2018-07-14 22:50:20 · 484 阅读 · 0 评论 -
区间覆盖全部类型及部分精选习题汇总详解(贪心策略)
1)区间完全覆盖问题问题描述:给定一个长度为m的区间,再给出n条线段的起点和终点(注意这里是闭区间),求最少使用多少条线段可以将整个区间完全覆盖样例:区间长度8,可选的覆盖线段[2,6],[1,4],[3,6],[3,7],[6,8],[2,4],[3,5]解题过程:1将每一个区间按照左端点递增顺序排列,拍完序后为[1,4],[2,4],[2,6],[3,5],[3,6],[3,7],[6,8]2...转载 2018-07-12 18:24:07 · 1349 阅读 · 0 评论 -
ACMer的AC福音!手动扩栈外挂!(防止栈溢出)
还在因为 怕 g++ 提交时间很慢,但是用C++ 交又怕栈溢出???我们都知道,如果代码里有 递归函数 频繁调用, 用 C++ 提交代码, 很可能就会 出现 Runtime Error (ACCESS_VIOLATION) 但是用G++提交,如果数据量很多的话,又会出现 Time Limit Exceeded那怎么办呢???G++可以用输入加...转载 2018-07-24 18:05:40 · 584 阅读 · 1 评论 -
无数种求逆元的方法总结
乘法逆元对于缩系中的元素,每个数a均有唯一的与之对应的乘法逆元x,使得ax≡1(mod n)一个数有逆元的充分必要条件是gcd(a,n)=1,此时逆元唯一存在逆元的含义:模n意义下,1个数a如果有逆元x,那么除以a相当于乘以x。下面给出求逆元的几种方法:1.扩展欧几里得给定模数m,求a的逆相当于求解ax=1(mod m)这个方程可以转化为ax-my=1然后套用求二...原创 2018-07-29 13:57:38 · 15077 阅读 · 0 评论 -
STL之 set简略介绍。
set常用函数及其讲解 构造set集合的主要目的是为了快速检索,使用set前,需要在程序头文件中包含声明“#include<set>”。 set集合容器实现了红黑树(Red-Black Tree)的平衡二叉检索树的的数据结构,在插入元素时,它会自动调整二叉树的排列,把该元素放到适当的位置.例如会将数字进行从小到大的默认排序,将string按字典顺序自动排列。 创建集合对象...原创 2018-07-29 22:08:35 · 282 阅读 · 0 评论 -
ACM - 欧拉函数(内容)
欧拉函数 :欧拉函数是数论中很重要的一个函数,欧拉函数是指:对于一个正整数 n ,小于 n 且和 n 互质的正整数(包括 1)的个数,记作 φ(n) 。 完全余数集合:定义小于 n 且和 n 互质的数构成的集合为 Zn ,称呼这个集合为 n 的完全余数集合。 显然 |Zn| =φ(n) 。有关性质:对于素数 p ,φ(p) = p -1 。对于两个不同素数 p, q ,它们的乘积 n ...转载 2018-07-30 12:39:27 · 620 阅读 · 0 评论 -
算法--背包九讲(详细讲解+代码)
背包九讲目录 第一讲 01背包问题 第二讲 完全背包问题 第三讲 多重背包问题 第四讲 混合三种背包问题 第五讲 二维费用的背包问题 第六讲 分组的背包问题 第七讲 有依赖的背包问题 第八讲 泛化物品 第九讲 背包问题问法的变化 附:USACO中的背包问题 前言本篇文章是我(dd_engi)正在进行中的一个雄心勃勃的写作计划的一部分,这个计划的内容是写作一份较...转载 2018-07-31 11:23:16 · 5793 阅读 · 0 评论 -
ACM算法--spfa算法--最短路算法
求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm。 SPFA算法是西南交通大学段凡丁于1994年发表的。 从名字我们就可以看出,这种算法在效率上一定有过人之处。 很多时候,给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman-Ford算法的复杂度又过高,SPFA算法便派上用场了。有人称sp...转载 2018-07-31 17:11:14 · 467 阅读 · 0 评论 -
C语言编程中关于负数的%运算的判定。
如果 % 两边的操作数都为正数,则结果为正数或零;如果 % 两边的操作数都是负数,则结果为负数或零。C99 以前,并没有规定如果操作数中有一方为负数,模除的结果会是什么。C99 规定,如果 % 左边的操作数是正数,则模除的结果为正数或零;如果 % 左边的操作数是负数,则模除的结果为负数或零。例如: 15 % 2 // 余 1 ...原创 2018-07-27 21:48:56 · 16245 阅读 · 0 评论 -
素数
素数分解的唯一性:p1^x1*p2^x2...pn^xn(一个整数可唯一地分解为一些不同质因子的若干次方的乘积)再根据乘法原理 因子个数为(x1+1)*(x2+1) + ... + (xn + 1)例题:LightOJ - 1028 (计算因子个数)#include<iostream>#include<cstdio>#include<cmath>...原创 2018-07-28 10:07:19 · 185 阅读 · 0 评论 -
指数循环节证明
还有关键的一步忘写了phi(m)>r的注意因为m=a^r*m'‘’所以phi(m)>phi(a^r)>=r,所以就相当于phi(m)为循环节,不过如果指数小于phi(m)只能直接算了。。注意这里的m'''与a^r是互质的上面忘写了。。转自https://blog.youkuaiyun.com/guoshiyuan484/article/details/78776739...转载 2018-08-01 22:22:12 · 356 阅读 · 0 评论 -
(精)【ACM刷题之路】POJ题目详细多角度分类及推荐题目
POJ上的一些水题(可用来练手和增加自信)(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094)初期:一.基本算法: (1)枚举. (poj1753,poj2965) (2)贪心(poj1328,poj2109,poj2586) (3)递归和分治法. (4)递推...转载 2018-08-02 09:50:41 · 2232 阅读 · 0 评论 -
【POJ - 3169】 Layout(差分约束+spfa)(当板子记?)
题干:Like everyone else, cows like to stand close to their friends when queuing for feed. FJ has N (2 <= N <= 1,000) cows numbered 1..N standing along a straight line waiting for feed. The cows ...原创 2018-08-02 22:44:34 · 262 阅读 · 0 评论 -
【51nod - 前缀异或】 对前缀和的理解
题干:前缀异或 基准时间限制:2 秒 空间限制:131072 KB 分值: 5输入一个长度为n(1 <= n <= 100000)数组a[1], a[2], ..., a[n]。输入一个询问数m(1 <= m <= 100000)和m组询问,每组询问形如(l, r)对于每组询问(l, r),你需要输出a[l] xor a[l + 1] xor .....原创 2018-08-12 11:17:17 · 3185 阅读 · 0 评论 -
Trie树(字典树)详细知识点及其应用
Trie,又经常叫前缀树,字典树等等。它有很多变种,如后缀树,Radix Tree/Trie,PATRICIA tree,以及bitwise版本的crit-bit tree。当然很多名字的意义其实有交叉。 定义在计算机科学中,trie,又称前缀树或字典树,是一种有序树,用于保存关联数组,其中的键通常是字符串。与二叉查找树不同,键不是直接保存在节点中,而是由节点在树中的位置决定。一个节...转载 2018-08-30 20:03:01 · 1151 阅读 · 0 评论 -
【Codeforces - 632C】The Smallest String Concatenation (对string巧妙排序)
题干:You're given a list ofnstringsa1, a2, ..., an. You'd like to concatenate them together in some order such that the resulting string would be lexicographically smallest.Given the list of stri...原创 2018-08-20 21:19:08 · 373 阅读 · 0 评论 -
【HDU - 3466 】Proud Merchants(dp,背包问题,巧妙排序)
题干:Recently, iSea went to an ancient country. For such a long time, it was the most wealthy and powerful kingdom in the world. As a result, the people in this country are still very proud even if th...原创 2018-08-20 21:47:03 · 273 阅读 · 0 评论 -
【nyoj - 890】 分东西 (水题 二进制)
题干:分东西时间限制:1000 ms | 内存限制:65535 KB难度:1输入第一行输出一个数i表示有i组情况(0<i<=10)接下来的i行,每一行输入两个个数M(0<M<1000000)和N(0<N<20)输出输出店主是否办得到Yes或No样例输入23 28 3样例输出YesNo来源原创...原创 2018-08-21 11:49:34 · 269 阅读 · 0 评论 -
【HDU - 5187】zhx's contest (快速幂+ 快速乘,模板)
题干: 2018百度之星复赛晋级名单出炉(增加20%晋级名额)~ zhx's contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 3779 Accepted Submission...原创 2018-11-25 14:13:19 · 276 阅读 · 0 评论 -
【POJ - 2533】Longest Ordered Subsequence(四种方法解决最长上升子序列 含二分优化版本)
题干:Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 41944 Accepted: 18453 DescriptionA numeric sequence of ai is ordered if a1 < a2 < ... < aN. Let the subse...原创 2018-12-02 19:28:18 · 355 阅读 · 0 评论 -
C 的Pair用法分类整理(精)
1 pair的应用pair是将2个数据组合成一个数据,当需要这样的需求时就可以使用pair,如stl中的map就是将key和value放在一起来保存。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量。2 make_pair函数...转载 2018-09-01 15:12:17 · 2216 阅读 · 0 评论 -
算法学习 母函数
母函数又称生成函数。定义是给出序列:a0,a1,a2,.......ak,......,那么函数G(x)=a0+a1*x+a2*x2+......ak*xk称为序列a0,a1,a2,.......ak,......的母函数(即生成函数)。例如:序列1,2,3.......n的生成函数为:G(x)=x+2x2+3x3+........nxn。点此链接:百度百科特别的当序列为:1,1,1,1,...转载 2018-09-11 11:44:36 · 576 阅读 · 0 评论 -
C++手动开启O2优化(以及-O -O1 -O2 -O3优化的知识点)(竞赛可用)
O1优化会消耗少多的编译时间,它主要对代码的分支,常量以及表达式等进行优化。 O2会尝试更多的寄存器级的优化以及指令级的优化,它会在编译期间占用更多的内存和编译时间。 O3在O2的基础上进行更多的优化,例如使用伪寄存器网络,普通函数的内联,以及针对循环的更多优化。 Os主要是对代码大小的优化,我们基本不用做更多的关心。 通常各种优化都会打乱程序的结构,让调试工作变得无从着手。...原创 2018-09-03 10:01:16 · 69408 阅读 · 18 评论 -
【51nod - 1073】约瑟夫环问题模板
题干:N个人坐成一个圆环(编号为1 - N),从第1个人开始报数,数到K的人出列,后面的人重新从1开始报数。问最后剩下的人的编号。例如:N = 3,K = 2。2号先出列,然后是1号,最后剩下的是3号。Input2个数N和K,表示N个人,数到K出列。(2 <= N, K <= 10^6)Output最后剩下的人的编号Input示例3 2Outp...原创 2018-09-09 00:46:02 · 427 阅读 · 0 评论 -
【ACM算法讲堂之 - 计算几何基础】:【点积和叉积】(附一些模板)
计算几何是算法竞赛的一大块,而叉积是计算机和的基础。首先叉积是计算说向量之间的叉积,那么我们可以这样定义向量,以及向量的运算符重载。 struct Point{ double x,y; Point(double x=0,double y=0):x(x),y(y) {}};typedef Point Vector;Vector operator + (Vecto...转载 2018-09-03 23:44:20 · 898 阅读 · 0 评论 -
【HDU - 1968】【UVA - 12096】The SetStack Computer (模拟,集合求交集并集操作,STL实现)
题干:Background from Wikipedia: 揝et theory is a branch of mathematics created principally by the German mathematician Georg Cantor at the end of the 19th century. Initially controversial, set theory h...原创 2018-09-06 17:18:15 · 336 阅读 · 0 评论 -
关于C++里面使用set_union,set_intersections、set_merge、set_difference、set_symmetric_difference等函数的使用总结
set里面有set_intersection(取集合交集)、set_union(取集合并集)、set_difference(取集合差集)、set_symmetric_difference(取集合对称差集)等函数。其中,关于函数的五个参数问题做一下小结:1、这几个函数的前四个参数一样,只有第五个参数有多重版本。2、EX1:set_union(A.begin(),A.end(),B.begin...转载 2018-09-06 17:21:49 · 884 阅读 · 0 评论 -
【HDU - 1465 】不容易系列之一 (组合数学,错排)
题干:大家常常感慨,要做好一件事情真的不容易,确实,失败比成功容易多了! 做好“一件”事情尚且不易,若想永远成功而总从不失败,那更是难上加难了,就像花钱总是比挣钱容易的道理一样。 话虽这样说,我还是要告诉大家,要想失败到一定程度也是不容易的。比如,我高中的时候,就有一个神奇的女生,在英语考试的时候,竟然把40个单项选择题全部做错了!大家都学过概率论,应该知道出现这种情况的概率,所以至今我都...原创 2018-09-06 17:28:29 · 357 阅读 · 0 评论 -
关闭VS警告#pragma warning(disable:4996)
代码实现:#pragma warning(disable:4996)1. #pragma warning只对当前文件有效(对于.h,对包含它的cpp也是有效的),而不是对整个工程的所有文件有效。当该文件编译结束,设置也就失去作用。2. #pragma warning(push) 存储当前报警设置。#pragma warning(push, n) 存储当前报警设置,并设置报警级别...原创 2018-09-10 10:41:04 · 6107 阅读 · 1 评论 -
【HDU - 6441】Find Integer (费马大定理 + 奇偶数列法构造勾股定理)
题干:people in USSS love math very much, and there is a famous math problem . give you two integers nn,aa,you are required to find 22 integers bb,cc such that anan+bn=cnbn=cn.Inputone line contai...原创 2018-09-10 14:59:33 · 435 阅读 · 0 评论 -
算法笔记 -- 离散化
引入离散化,就是把一些很离散的点给重新分配。举个例子,如果一个坐标轴很长(>1e10),给你1e4个坐标,询问某一个点,坐标比它小的点有多少。很容易就知道,对于1e4个点,我们不必把他们在坐标轴上的位置都表示出来,因为我们比较有多少比它小的话,只需要知道他们之间的相对大小就可以,而不是绝对大小,这,就需要离散化。而离散化又分为两种,分为的两种是对于重复元素来划分的。第一种是重...转载 2018-09-18 15:54:01 · 1574 阅读 · 0 评论