
学习历程
文章平均质量分 57
徐行tag
昨夜西风凋碧树
展开
-
最大子段和
分治法#include<bits/stdc++.h>using namespace std;#define N 2000int a[N],n;int find_maxcross(int l,int mid,int r){ int sum1 = 0,sum2 = 0; int sum = 0; for (int i = mid;i >=...原创 2018-07-27 16:52:34 · 290 阅读 · 0 评论 -
「动态规划专题」
DAG上动态规划「最长,最短路」点集配对问题最长上升/公共子序列(LIS)(LCS)最大连续和货郎担 问题(TSP)矩阵链乘 (MCM)最优二叉排序树 (OBST)...原创 2018-07-30 16:12:21 · 213 阅读 · 0 评论 -
[ 杂题总结 ]
51 nod系列4级算法数学最大的最大公约数题目来源: SGU基准时间限制:1 秒 空间限制:65536 KB 分值: 40 给出N个正整数,找出N个数两两之间最大公约数的最大值。例如:N = 4,4个数为:9 15 25 16,两两之间最大公约数的最大值是15同25的最大公约数5。 Input 第1行:一个数N,表示输入正整数的数量。(2 &amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;= N &原创 2018-07-26 16:40:29 · 344 阅读 · 0 评论 -
「高效算法设计」
UVA11078 Open Credit System大致题意给一个长度为n的整数序列a0 a1 a2….an-1,找出两个整数ai和aj(i &amp;amp;lt; j) 使得ai-aj最大 输入第一行 组数 T 每组数据 第一行输入数据数量n(2&amp;amp;lt;=n&amp;amp;lt;=1e+5) 接下来是n个不超过150000的整数 输出对于每组数据,输出最大ai-aj。题目价值;学会找到题目解答的...原创 2018-07-29 20:01:56 · 482 阅读 · 0 评论 -
「平衡树之」treap
「treap之 」 作用1.插入数值x 2.删除数值x(如果有多个,只删除一个) 3.查询数值x的排名(如有多个相同的数,应输出最小的排名) 4.查询排名为x的数值 5. 求数值x的前驱(小于x最大的数) 6.求数值x的后继(大于x最小的数)如何实现:最基本操作」.set山寨版set#include<bits/stdc++.h>using n...原创 2018-07-28 14:40:28 · 163 阅读 · 0 评论 -
计数原理
容斥原理例题:luogu p1450 硬币购物:题目描述 共有4种硬币。面值分别为c1-&amp;gt;,c4。某人去商店买东西,去了tot次。每次带di枚ci硬币,买si的价值的东西。问每次有多少种付款方案。 输入格式: 第一行 c1,c2,c3,c4,tot 下面tot行 d1,d2,d3,d4,s输出格式: 每次的方法数输入样例#1: 复制 1 2 5 10 2 3 ...原创 2018-07-20 10:57:49 · 229 阅读 · 0 评论 -
师大培训前第二次测试
写在前面:最长上升子序列,一个模型居然错掉了,本题数据较大需要离散,没有对数据范围引起重视,小于等于边界没有判定清楚,细节不到位只有70分;第二题是dfs序的应用,之前没听懂。。。:现在补上:摘自:dfs序DFS序 参考许昊然《数据结构漫谈》原文"所谓DFS序, 就是DFS整棵树依次访问到的结点组成的序列""DFS序有一个很强的性质: 一颗子树的所有节点在DFS序内是连续的一段, 利用这个性质我们...原创 2018-07-14 16:02:32 · 216 阅读 · 0 评论 -
[UVA 11400],dp
题意:现在你要设计一个电力系统,需要用到n种灯泡,每一种灯泡都有它的4个值,电压,电源费用(对于同一种灯泡,只需一个电源),每一个灯泡的费用,该种灯泡必须有的灯泡数量,本来你是想每种灯泡都用对应的电源,既是n个电源,但公司为了省钱,想将一些种类灯泡换成另一种灯泡,让他们公用一个电源,但为了保证场地灯泡足够亮,电压小的可以换成电压大的,电压大的不可以换成电压小的,例如有a,b两种灯泡,电压分别...原创 2018-07-19 21:17:58 · 148 阅读 · 0 评论 -
「实用数据结构」
map+vectorUVA11991 Easy Problem from Rujia Liu?大意:求一个序列从左到右第k个x出现的下表i 应用 map&amp;lt; int , vector &amp;lt; int &amp;gt; &amp;gt;q;int main(){ a.clear(); //清空a里所有数据 if(a.count(x)==0) //判断a中以(in原创 2018-08-01 12:03:43 · 181 阅读 · 0 评论 -
noip知识点总结
文章目录1.原创 2018-11-06 07:50:35 · 668 阅读 · 0 评论 -
「大整数求逆元」
原理:若a,b互质,则有a的逆元,等于a%b的逆元; 所以可以在把大整数转为数字时取模。然后再求逆元例题P2613 【模板】有理数取余题目描述给出一个有理数c=abc=\frac{a}{b}c=ba,求c mod19260817c\ \bmod 19260817c mod19260817的值。 输入输出格式 输入格式:一共两行。第一行,一个整数aaa。 第二行...原创 2018-09-06 15:43:27 · 2331 阅读 · 0 评论 -
最长上升子序列
还是要巩固基础知识,之前打最长上升子序列都是打的二分法,而忽略了dp版的。殊不知很多dp都是从这里面衍生出的。 详细分析一下代码; f[i] 表示到i为止的最长上升子序列。一开始初始化为1,自己本身算1个; 重点是判断,很多有限制条件的dp都是从中衍生的。 比如今天考试的 在草稿纸上写了 n 个数字(A1, A2, A3…Ai) 他想在 n 个数中间去除掉一些数,其他数是否能...原创 2018-09-09 17:12:58 · 159 阅读 · 0 评论 -
子集生成算法
子集生成算法:给定一个集合,枚举所有可能的子集。为了简单起见,先讨论的集合中没有重复元素。增量构造法code:int ans[1000],n;bool vis[1000];void dfs(int x,int cs){ for (int i = 1;i <= cs ;i++) cout<<ans[i]<<" "; cou...原创 2018-08-13 20:39:34 · 697 阅读 · 0 评论 -
[欧拉回路]
define : 奇点——度数是奇数; 无向图: 1.是连通的, 2最多只有两个奇点, 则一定存在欧拉道路。 如果有两个奇点,则必须从其中一个奇点出发,另一个奇点终止; 如果无奇点,则可以从任意点出发,最终一定会回到该点(称为欧拉回路)。 有向图的结论: 1.最多两个点的入度不等于出度, 2.必须是其中一个点的出度恰好比入度大1(把它作为起点),另一个的入度比出度大1(把它作为终...原创 2018-08-12 16:54:06 · 530 阅读 · 1 评论 -
种子填充
dfs版; 要事先把不行的判掉? UVA572 Oil Deposits 【题目大意】输入多个m行n列的矩阵,用00表示输入结束。找出有多少块石油区域,用“@”代表石油,假如两个“@”在横,竖或对角线上相邻,就说它们位于同一区域,对于每个输入,输出一个数表示有几个石油区域。void dfs(int r, int c) { if(r < 0 || r >= n || ...原创 2018-08-11 12:10:49 · 289 阅读 · 0 评论 -
师大培训前考试
一开始推公式没推出来。好不容易推出来结果告诉我是错的??未必取膜错了??这次考试超级水啊,什么鬼gaide我也是醉了,一点没保存,体验极差;第二题dfs方法不对,应该直接打完一个才对,最后十分钟才想到,没改;最后一题数学没学。。。。算了,这次考试极水啊;题目也好神奇。。。。。。附上题目:没考什么算法啊。。。不明所以的考试;要学会用文件编译,不然交题超级麻烦,还容易不保存;一.题目概况 ...原创 2018-07-13 13:40:40 · 166 阅读 · 0 评论 -
位运算
转自:厉害啦位运算简介及实用技巧(一):基础篇 去年年底写的关于位运算的日志是这个Blog里少数大受欢迎的文章之一,很多人都希望我能不断完善那篇文章。后来我看到了不少其它的资料,学习到了更多关于位运算的知识,有了重新整理位运算技巧的想法。从今天起我就开始写这一系列位运算讲解文章,与其说是原来那篇文章的follow-up,不如说是一个remake。当然首先我还是从最基础的东西说起。什么是位运算...转载 2018-06-22 21:15:42 · 271 阅读 · 0 评论 -
线段树
转自:点击打开链接以下以维护数列区间和的线段树为例,演示最基本的线段树代码。(0)定义:[cpp] view plain copy #define maxn 100007 //元素总个数 #define ls l,m,rt<<1 #define rs m+1,r,rt<<1|1 int Sum[maxn<<2],Add[maxn<<2];//...转载 2018-06-22 21:01:13 · 142 阅读 · 0 评论 -
模拟6月7日
题目描述jyx和cyy打赌,比谁24点算得快,算得慢的那个人请客。24点的规则是这样的:给定4个1..9的整数,用括号改变运算顺序,通过加、减、乘、除中的一系列运算,得到整数24。注意所有中间结果必须是整数(例如(2*2)/4是允许的,而2*(2/4)是不允许的)。为了赢得这个比赛,请写一个程序帮助我作弊,快速地计算出24点。输入输出格式输入格式:一行4个整数,为给定的4个数字。输入数据保证有解。...原创 2018-06-07 20:04:44 · 330 阅读 · 0 评论 -
六月搜索模拟
显示图像(bit)【问题描述】古老的显示屏是由N×M个象素(Pixel)点组成的。一个象素点的位置是根据所在行数和列数决定的。例如P(2,1)表示第2行第1列的象素点。那时候,屏幕只能显示黑与白两种颜色,人们用二进制0和1来表示。0表示黑色,1表示白色。当计算机发出一个指令:P(x,y)=1,则屏幕上的第x行第y列的阴极射线管就开始工作,使该象素点显示白色,若P(x,y)=0,则对应位置的阴极射线...原创 2018-06-06 21:06:10 · 586 阅读 · 0 评论 -
数状数组
引入:线段树和树状数组,是两个十分相似的数据结构。他们能使对一个区间的数修改以及查询的速度提升许多。两个结构本质相同,各有优缺点,今天我们来从建树(单点修改),查询(区间球和)建树:首先有一个lowbit求每个点几个枝干;int lowbit(int x){return x&(-x);}具体原理记载笔记本上了;嘻嘻;接着进入正题——建树即修改void change(int i,int da...原创 2018-06-05 18:51:45 · 1124 阅读 · 1 评论 -
二差排序数
没有平衡之前的,感觉好垃圾;#include<iostream>#include<cstdio>using namespace std;struct node{ int l,r,date; int *newnode;}tree[100001];int d,bank=1;void build(int pos,int date){ if(t...原创 2018-05-22 19:41:46 · 169 阅读 · 0 评论 -
5月考试
Description FGD小朋友特别喜欢爬山,在爬山的时候他就在研究山峰和山谷。为了能够让他对他的旅程有一个安排,他想知道山峰和山谷的数量。给定一个地图,为FGD想要旅行的区域,地图被分为n*n的网格,每个格子(i,j) 的高度w(i,j)是给定的。若两个格子有公共顶点,那么他们就是相邻的格子。(所以与(i,j)相邻的格子有(i?1, j?1),(i?1,j),(i?1,j+1),(i,j?...原创 2018-05-21 20:33:41 · 303 阅读 · 0 评论 -
线段数模板
#include<cstdio>using namespace std;const int len=400001;struct node{ long long tag,data;} tr[len];int n,m,op,x,y;long long ans,a[len],k;void build_tree(int x,int l,int r){ if (l=...原创 2018-06-22 22:19:57 · 195 阅读 · 0 评论 -
stl set使用模板
明明的随机数描述明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从小到大排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。格式输入格式输入有2行,第1行为1个正整数,表示所生成的随机数的个数:N第...原创 2018-06-24 12:12:08 · 395 阅读 · 0 评论 -
[ n^2输出最长公共子序列 ].
如何求出dp路径?或许有所启发。int f[][];char a[],b[];void output(int i ,int j){ if (i == 0 || j == 0) return ; else { if( a[i-1] == b[j-1]) {output(i-1,j-1);printf("%c",a[i-1])...原创 2018-07-24 11:44:51 · 166 阅读 · 0 评论 -
STL模板库及应用
C++中substr函数的用法#include<string>#include<iostream>using namespace std;main(){string s("12345asdf");string a=s.substr(0,5); //获得字符串s中 从第0位开始的长度为5的字符串//默认时的长度为从开始位置到尾cou...原创 2018-07-05 19:46:33 · 224 阅读 · 0 评论 -
[ SDFZ ],数论
数论总引 欧拉定理小凯的疑惑 同余:设m是给定的一个正整数,a、b是整数,若满足m|(a-b),则称a与b对模m同余,记为a≡b(mod m),或记为a≡b(m)。这个式子称为模m的同余式,若m∤ (a-b),则称a、b对模m不同余,同余概念又常表达为: 1.a=b+km(k∈Z);&amp;lt;=&amp;gt;a=b(mod m); 2.a和b被m除时有相同的余数。...原创 2018-07-18 11:43:27 · 283 阅读 · 0 评论 -
二维数状数组
二维树状数组,顾明思义,其实就是树状数组的二维形式。主要运用:1.单点更新2.子矩阵求和其中getSum求的是矩阵从(1,1)到(x,y)这个矩阵的和,如果我们需要求某个子矩阵的和,那么res=getSum(x2,y2)+getSum(x1-1,y1-1)-getSum(x2,y1-1)-getSum(x1-1,y2)注意矩阵的赋值是数组从1开始的,由于他是二维的树状数组,和一维的差不...原创 2018-07-11 17:42:33 · 305 阅读 · 0 评论 -
[ SDFZ ] ,动态规划
动态规划性质: 1.最优子结构 2.无后效性:能够拓扑排序;状态转移初始状态和边界很重要 方便转移状态。滚动数组1.逆向:每个状态只会更新一次 顺向:每个状态更新多次,说明可以用多次...原创 2018-07-17 09:01:11 · 322 阅读 · 0 评论 -
SDFZ夏令营考试(-)
考试代码 ##Bfs#include&amp;amp;amp;amp;amp;lt;cstdio&amp;amp;amp;amp;amp;gt;#include&amp;amp;amp;amp;amp;lt;iostream&amp;amp;amp;amp;amp;gt;using namespace std;int q[100005];bool isok[100005];int n,ans,pos=0;char原创 2018-07-16 13:29:26 · 281 阅读 · 0 评论 -
高精度比较大小string
描述:n个人有各自的名字,和分数,数字很大,要用高精度才行,如何给他们从大到小排序?解决:用sruct和sort1。分数是string类型的,如果数字位数(用.size())相同,比较各位的字符大小,否则按位数从大到小排;bool cmp(P p,P q){ if(p.mark.size()==q.mark.size()) { if(p.mark==q.mark)r...原创 2018-06-24 13:11:37 · 1497 阅读 · 0 评论