
创新班
文章平均质量分 59
zhouzhenghuac
这个作者很懒,什么都没留下…
展开
-
拓扑排序+最小生成树
由于上一节课的总结我没有放上来,所以这次就放l两课吧。1、拓扑排序:拓扑排序就是指知道一个数据中两个数据之间的前后关系,从而知道整个数据的具体顺序。士兵排序(网上找的) 问题描述: 有n个士兵(1≤n≤26),编号依次为A、B、C,…… 队列训练时,指挥官要把一些士兵从高到矮依次排成一行。但现在指挥官不能直接获得每个人的身高信息,只能获得“p1比p2高”这样的比较结果(p1,p2∈{‘A’原创 2016-08-07 10:56:21 · 864 阅读 · 0 评论 -
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 · 338 阅读 · 0 评论 -
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 · 265 阅读 · 0 评论 -
并查集 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 · 214 阅读 · 0 评论 -
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 · 313 阅读 · 0 评论 -
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 · 259 阅读 · 0 评论 -
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 · 239 阅读 · 0 评论 -
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 · 201 阅读 · 0 评论 -
4-25 字符串
定义:string 变量名;赋值:string 变量名(字符串);string 变量名 (字符数量,字符);(字符数量个字符)变量名 = 字符串;等价于 变量名.assign("字符串");输入:cin>>变量名;输出:cout字符串的长度 length()变量名.length(); '\0'不在长度范围内字符串中的一个字符:s[ i ] 等价于原创 2016-08-04 20:24:15 · 345 阅读 · 0 评论 -
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 · 245 阅读 · 0 评论 -
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 · 263 阅读 · 0 评论 -
galaxy 原来的方法——超时(没有压缩路径)
因为没有压缩路径,因此访问每一个成员的根会十分的慢,因此十分容易超时(因为超时,所以不知道对不对……)#include #include #include using namespacestd; ifstreamfin("galaxy.in"); ofstreamfout("galaxy.out"); #definecin fin #definecou原创 2016-08-04 20:24:44 · 314 阅读 · 0 评论 -
高斯消元法解方程--gauss
5月15号的创新班,我们做了两道题,还讲了一个新知识——高斯消元法。 高斯消元法其实就是我们学校里学的加减消元法,也就是通过两条式子通过乘法使两条方程的有一个相同的项,然后两条方程相减(加)来消去未知数。 看个例子吧: 原理就是这样了。 但是,我们要怎么用编程实现高斯消元法呢? 我们看一下: 但是会有一些特殊情况,比如有多组解,无解,或者是在编程中出现的一些小问题。 所以我们先用一个数组存下整原创 2016-08-04 20:25:25 · 1052 阅读 · 0 评论 -
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 · 204 阅读 · 0 评论 -
创新班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 · 385 阅读 · 0 评论 -
创新班第一到四课的内容【组合数学】(补)
创新班的第一到四课,我都没有做总结,因为那时我觉得总结没什么用,还不如多点时间编程,但是我越来越发现,总结是挺有帮助的。那现在我就把创新班第一到四课的内容补上。 组合数学,说白了我们就只研究了排列组合与容斥原理。============================================================ 组合数学最主要,也是最常用到的,就是两个原理:加法原理与乘法原理。原创 2016-08-04 20:24:57 · 564 阅读 · 0 评论 -
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 · 281 阅读 · 0 评论 -
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 · 237 阅读 · 0 评论 -
爆炸化合物(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 · 976 阅读 · 0 评论 -
6-17 创新班第十课
首先,江老师评价了一下我们的博客,说我的tree那题没有用新学的方法做,所以我就在博客上贴了程序 在这里,江老师讲了两个很重要的概念: 1、静态和动态: 按照tree那题来举例:按照杨鸿飞的方法压缩路径就是属于静态,而用我们学的方法就是属于动态:静态:原创 2016-08-04 20:24:46 · 306 阅读 · 0 评论 -
创新班21课总结
创新班早上还是讲了salesman那3题,下午就讲了关于树的图论。 先是salesman,有3种做法: 第1种: 然后就一直按照123走,直到做完。但是如果每次都找一遍最大值,那就是超时的60分O(n?)算法了,但是我们还要进一步优化,那就是用胜者树来维护左边那一部分的最大值(这个我也搞了好久)。每次找到左边后就把左边的修改成-1。找到右边,就把找到的位置与当前位置之间的都插入进胜者树中。这样左边原创 2016-08-04 20:25:19 · 303 阅读 · 0 评论