自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 2016-8-9夏令营总结(网络流—增广路+dinic)

今天我们学习了一个新的一个算法:网络流。 网络流其实就是最大流。在一个有向图中,每条边的边权就是每条边的能通过的最大流量,问从源点到汇点的最大流量是多少? 我们看看这个图,源点是s,汇点是t。如果我们一开始还不会网络流算法的话,或许我们会想到的是:每次都找一条容量最大的路径。比如我们先把1-3-4的路径搜了,然后把他们的容量全部减去20,然后再搜最大的1-2-4,把容量减去20,然后1-2

2016-08-14 16:44:41 540

原创 2016-8-8夏令营总结(字母树)

今天我们只学了一个十分简单的内容——字母树。 如果给出n个字符串(所有字符串总长度<=2000000),问有多少个不是其它的字符串的前缀。 这题我们硬做的话,就要o(n^2*当前字符串长度) 我们能可以用一种比较巧妙的方法,就是把这些字符串放进树里面。 我们依次将右边的字符串放进去。先看第一个:我们从root出发,在第一个字符串s[1]中搜到个a,看看这个点,原来有没有a的分支,有就搜a

2016-08-13 09:37:00 457

原创 2016-8-7夏令营总结(后缀数组+RMQ)

8月7号,我们学习了字符串的后缀数组的知识。后缀数组是一种十分强大的算法,是一个把这个串的所有后缀排个序的数组。 后缀数组的代码量十分的大,可以分为几个部分:倍增算法、基数排序、求最长公共前缀与RMQ。定义首先要弄清楚,后缀数组是什么? 后缀数组就是给一个字符串的每一个后缀排个序的数组。(后缀就是一个字符串的某一位开头一直到结尾的子串)倍增算法我们先定义两个数组rank[]和sa[]。rank[

2016-08-11 19:38:29 477

原创 拓扑排序+最小生成树

由于上一节课的总结我没有放上来,所以这次就放l两课吧。1、拓扑排序:拓扑排序就是指知道一个数据中两个数据之间的前后关系,从而知道整个数据的具体顺序。士兵排序(网上找的) 问题描述: 有n个士兵(1≤n≤26),编号依次为A、B、C,…… 队列训练时,指挥官要把一些士兵从高到矮依次排成一行。但现在指挥官不能直接获得每个人的身高信息,只能获得“p1比p2高”这样的比较结果(p1,p2∈{‘A’

2016-08-07 10:56:21 814

原创 2016-8-6夏令营总结(kmp,回文串,扩展kmp)

今天我们用了一个上午学习了字符串中的kmp,最长回文子串和扩展kmp算法,下午在编相应的裸题。KMP算法我们有一个长度为n的字符串S,长度为m的字符串T,问T在S里出现了几次? 这题是我们平时最经常遇到的字符串问题。这题暴力搜索的话要o(nm)。(当然用hash只需要o(n))我们暴力搜索时会枚举S每一位为开头,然后比较S[i…i+m-1[与T[1…m]为匹配,之后又继续往后推一位后再次匹配。(如

2016-08-06 22:02:53 1148

原创 2016-8-5夏令营总结(状压DP)

今天我们在夏令营主要学习了状压DP的知识。 状压DP是指把DP状态从多维压缩到少维,通常使用二进制的01表示是否操作。

2016-08-06 09:00:47 339

原创 2016-8-4夏令营总结

今天是我们夏令营入营的第一天,我们主要是讲了一下学过的算法,然后就是入营测试了。第一题:音阶题目大意: 给出一串旋律,判断是a小调还是C大调。判断方法,ADE分为a小调,CFG分为C大调。把这串旋律的每个音节的第一个字母取出,看一下是分为a小调的多还是C大调的多(哪个多就是哪种调)如果一样多,那么看旋律的最后一个音是a小调就是a小调,否则就是C大调。 题目分析: 就是找旋律中开头字母和每一个音

2016-08-05 08:44:00 534

原创 高斯消元法解方程--gauss

5月15号的创新班,我们做了两道题,还讲了一个新知识——高斯消元法。 高斯消元法其实就是我们学校里学的加减消元法,也就是通过两条式子通过乘法使两条方程的有一个相同的项,然后两条方程相减(加)来消去未知数。 看个例子吧: 原理就是这样了。 但是,我们要怎么用编程实现高斯消元法呢?  我们看一下:  但是会有一些特殊情况,比如有多组解,无解,或者是在编程中出现的一些小问题。 所以我们先用一个数组存下整

2016-08-04 20:25:25 980

原创 创新班21课总结

创新班早上还是讲了salesman那3题,下午就讲了关于树的图论。 先是salesman,有3种做法: 第1种: 然后就一直按照123走,直到做完。但是如果每次都找一遍最大值,那就是超时的60分O(n?)算法了,但是我们还要进一步优化,那就是用胜者树来维护左边那一部分的最大值(这个我也搞了好久)。每次找到左边后就把左边的修改成-1。找到右边,就把找到的位置与当前位置之间的都插入进胜者树中。这样左边

2016-08-04 20:25:19 273

原创 LCA

表示上lca那节课我没去,所以程序什么的可能变得有漏洞或者是不标准。#include#include #include using namespace std;ifstream fin("lca.in");ofstream fout("lca.out");#define cin fin#define cout foutint n;struct Tnode{ int h,left,right,fa;

2016-08-04 20:25:17 183

原创 创新班20课3题+总结

<span style="font-family:宋体;mso-ascii-font-family:Calibri;mso-ascii-theme-font:minor-latin;mso-fareast-font-family:宋体;mso-fareast-theme-font:minor-fareast;mso-hansi-font-family:Calibri;mso-hansi-the

2016-08-04 20:25:14 350

原创 2015NOIP总结

今年的noip,是我第一次考noip,经验除了是平时老师给我们的真题让我们做以外,也就没有了。虽然这次我才考了240分,但至少也是一个收获经验的机会,也值得去好好总结。首先说说心态问题,其实我去考试时也是不怎么紧张的,但是考试考着考着就变得紧张起来。我回想了一下,大概是我看完所有题目后,总觉得第3题不会做,然后之后就非常紧张。我想以后应该要先给自己定一个目标,觉得考到了这个目标之后就算合格,考

2016-08-04 20:25:11 308

原创 位运算

位运算首先,先明确一下一个概念:位运算是通过二进制进行操作的。首先来认识一下几个位运算的符号。 符号 名称 & 与运算(and) | 或运算(huo) 左移 >>  右移

2016-08-04 20:25:08 457

原创 宽度搜索

7-28 宽度搜索           首先再次说明一下宽度搜索的概念与原理。宽度搜索,就是宽度优先搜索(也叫广度优先搜索),所以宽度是优先。我们都知道深度搜索是一下子搜到底,然后再通过回溯之类的方式返回到上一个分支,然后继续往下搜。也就是深度优先;而宽度优先搜索就是一层一层地找:先找一层,记录下来,然后继续搜下一层。      这时我们就需要两个指针:head和tail。head是头指针

2016-08-04 20:25:06 815

原创 动态规划

动态规划7-30,我们学习了一个比较重要的知识——动态规划。动态规划,从字面上理解就是动态地取规划某件事情,使其得到最优结果。规划之中就会有选择到底要还是不要,做还是不做,所以动态规划就是要选择最优。动态规划有4个核心:阶段、最优、子问题和边界。在分析动态规划这种问题时只要找出这4个核心,那变成解决问题起来就比较简单了。下面就通过一道题目来了解一下4个核心分别什么以及如何找出这4个

2016-08-04 20:25:03 658

原创 2015信息学夏令营第1、2……天——搜索与递归

7-26,是我们2015年信息学夏令营的第一天,我们主要就是学习了搜索。 ================================================= 搜索又分宽度搜索与深度搜索。这两个搜索又有什么区别呢?深度搜索是指深度优先搜索,宽度搜索就是宽度优先搜索。搜索主要是看搜索树:                 ——这颗(搜索)树的开始的点就是源点。           小技巧

2016-08-04 20:25:00 786 1

原创 创新班第一到四课的内容【组合数学】(补)

创新班的第一到四课,我都没有做总结,因为那时我觉得总结没什么用,还不如多点时间编程,但是我越来越发现,总结是挺有帮助的。那现在我就把创新班第一到四课的内容补上。 组合数学,说白了我们就只研究了排列组合与容斥原理。============================================================ 组合数学最主要,也是最常用到的,就是两个原理:加法原理与乘法原理。

2016-08-04 20:24:57 486

原创 water 参考程序

#include #include #include using namespace std;ifstream fin("water.in");ofstream fout("water.out");#define cout fout#define cin finstruct Tnode{ int copy; int self; int fa; char c; int root;};Tnode a[

2016-08-04 20:24:54 250

原创 string (hash版)

由于在学校,所以暂不写前面那一大堆乱七八糟的东西了,先发一下程序吧 #include #include #include #include #define mod 1000000007#define wei 31using namespace std;string S,T;long long geth(string &s){ long long ans=0; for(int i=0;i  

2016-08-04 20:24:52 205

原创 爆炸化合物(explosion)

这题按照江老师告诉我们探索题目的方法,我就列举了一些不能上车的一些例子:<span lang="EN-US" style="font-size:12.0pt;font-family:宋体;mso-bidi-font-family:宋体;mso-font-kerning:0pt;" ><table class="MsoTableGrid" border="1" cellsp

2016-08-04 20:24:49 901

原创 6-17 创新班第十课

首先,江老师评价了一下我们的博客,说我的tree那题没有用新学的方法做,所以我就在博客上贴了程序       在这里,江老师讲了两个很重要的概念:             1、静态和动态:                     按照tree那题来举例:按照杨鸿飞的方法压缩路径就是属于静态,而用我们学的方法就是属于动态:静态:                                  

2016-08-04 20:24:46 278

原创 galaxy 原来的方法——超时(没有压缩路径)

因为没有压缩路径,因此访问每一个成员的根会十分的慢,因此十分容易超时(因为超时,所以不知道对不对……)#include #include #include  using namespacestd; ifstreamfin("galaxy.in"); ofstreamfout("galaxy.out"); #definecin fin #definecou

2016-08-04 20:24:44 282

原创 tree 用点、边的算法

由于江老师说上次那个算法是以前的,所以我就用了新学的计算边数与点数的算法……程序:<span lang="EN-US" style="font-size:14.0pt;font-family:Consolas;mso-bidi-font-family:Consolas;color:green;mso-font-kerning:0pt;" >#include <span lang="

2016-08-04 20:24:41 231

原创 6-6 并查集练习——ttime

#include #include #include using namespace std;ifstream fin("ttime.in");ofstream fout("ttime.out");#define cin fin#define cout foutint fa[100001];int u_f(int x){   int root=x;

2016-08-04 20:24:38 221

原创 6-6 并查集练习——friend

#include #include #include using namespace std;int fa[100001];ifstream fin("friend.in");ofstream fout("friend.out");#define cin fin#define cout foutint u_f(int x)  //(和tree一样)  并查集的

2016-08-04 20:24:35 307

原创 5-30 并查集 tree

#include #include using namespace std;ifstream fin("tree.in");ofstream fout("tree.out");#define cin fin#define cout foutint fa[100001];bool check[1000001];int u_f(int x){   int r

2016-08-04 20:24:32 238

原创 并查集 5-30 tree ------错误方法

#include using namespace std;int fa[100000];// fatherint f_u(int x){int root=x;while(fa[root]!=root) root=fa[root];while(fa[x]!=x){int y=fa[x];fa[x]=root;x=y; }return root;

2016-08-04 20:24:29 188

原创 n种钱几种分法程序

#include #include using namespace std;bool ch[1000000];int a[100000];int main(){  int n; cin>>n;  long long sum=0; for(int i=0;i { cin>>a[i]; sum+=a[i]; } for(int i=0;i ch[i]=false; ch[0]=true

2016-08-04 20:24:27 285

原创 5-16 冒泡排序

#include #include using namespace std;int main(){  int n; cin>>n; int in[n+1];  for(int i=0;i  cin>>in[i]; for(int i=0;i for(int j=i+1;j if(in[i] swap(in[i],in[j]);   for(int i=0;i cout cout re

2016-08-04 20:24:24 229

原创 5-16 插入排序

#include #include using namespace std;int main(){ int n; cin>>n; int in[n+1],ans[n+1];  for(int i=0;i  cin>>in[i];  ans[0]=in[0];  for(int i=1;i  {  ans[i]=in[i]; //插入   for(int j=i;j>=0;j--)  

2016-08-04 20:24:21 213

原创 5-16 选择排序

#include #include using namespace std;int main(){  int n; cin>>n; int in[n+1]; cin>>in[0]; int maxx=in[0];    //最大值   for(int i=1;i { cin>>in[i]; if(maxx if(minn>in[i])  minn=in[i]; } int t=0; cou

2016-08-04 20:24:18 175

原创 4-25 字符串

定义:string 变量名;赋值:string 变量名(字符串);string 变量名 (字符数量,字符);(字符数量个字符)变量名 = 字符串;等价于 变量名.assign("字符串");输入:cin>>变量名;输出:cout字符串的长度 length()变量名.length(); '\0'不在长度范围内字符串中的一个字符:s[ i ] 等价于

2016-08-04 20:24:15 309

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除