数据结构

老师建议:可以使用STL的数据结构尽量全部都用STL。

  • 火车的进出站问题(爆搜, 递推, 动态规划, 卡特兰数)
  • 后缀表达式, 中缀表达式,前缀表达式;
  • 中缀表达式转后缀表达式, 后缀表达式转中缀表达式
  • 单调栈

队列

  • 双端队列(deque)
  • 双端队列优化SPFA

链表

链表的本质:相邻的元素相连接。

一般是给出两两元素之间的前后关系,要求恢复原来的序列。
表头是只出现一次的数字,那么表尾就是连接有none的数字。
例如下图:

邻接表的使用

【NOIP2017提高组初赛】(交朋友)根据社会学研究表明,人们都喜欢找和自己身高相近的人做朋友。 现在有 名身高两两不相同的同学依次走入教室,调查人员想预测每个人在走入教室的瞬间最想和已经进入教室的哪个人做朋友。当有两名同学和这名同学的身高差一样时,这名同学会更想和高的那个人做朋友。比如一名身高为 1.80 米的同学进入教室时,有一名身高为 1.79 米的同学和一名身高为1.81米的同学在教室里,那么这名身高为 1.80 米的同学会更想和身高为1.81米的同学做朋友。对于第一个走入教室的同学我们不做预测。 由于我们知道所有人的身高和走进教室的次序,所以我们可以采用离线的做法来解决这样的问题,我们用排序加链表的方式帮助每一个人找到在他之前进入教室的并且和他身高最相近的人。

我们可以把全部输入,之后离线操作;
针对于身高进行排序,建一个链表,这样的话,针对于每一个数字,那么他的答案就是他的左右两边的的人身高,所以,当我们找到此时要进来的人,之后找到他的答案,我们再把这个点删去(因为是倒序查找)。

重点:链表的维护。

并查集

Codeforce 741B 并查集+分组背包 代码和注意事项在文章的最后。

我的思路:

  1. 我们可以用并查集把所有的人分成K组;
  2. 因为题目中要求的是针对于一个组而言,我们只能全组选一个,或者是全组都选,或者是全组都不选,所以我们选用的是分组背包做题;
  3. 这样子的话又会和分组背包有一些不一样,因为分组背包是在每一个组里面至多选出一个数字,而没有选择整组的情况;
  4. 所以,我们可以在状态的转移的时候把整组转移的时候考虑到比较中。

hash 表

维护映射关系的数据结构
例子:给出若干个膜法师的编号,
一开始我们可以用一个很大很大的数组标记该位膜法师,但是这样的话数组的下标就过于庞大。
之后,我们就考虑优化,我们可以把该位膜法师的编号%一个大质数。

对于Hash碰撞问题的解决方法:

  • 考虑把质数变大。
  • 拉链法:……

UNordered函数的用法,可以查找该数字是否存在于一个序列中。

为什么要mod一个质数?
因为如果mod一个质数的话,模数重复的几率会大大减小,所以,我们考虑mod大质数。

下一节课讲线段树,
刘神说:线段树的动态开点一定要熟练掌握。


code

Codeforce 741B 并查集+分组背包

#include<bits/stdc++.h>
using namespace std;const int nn=1003;int n, m, W;
int w[nn], b[nn], fa[nn];
vector<int> c[nn];
int sum1[nn], sum2[nn];/*表示的是每一组的重量总和以及价值总和*/
int vis[nn], cnt=0;
int f[nn];inline int read()
{int x=0,f=1; char ch=getchar();while(ch>'9'||ch<'0'){if(ch=='-') f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0'; ch=getchar();}return x*f;
}int gf(int x)
{if(fa[x]==x) return x;return fa[x]=gf(fa[x]);
}int main()
{n=read(), m=read(), W=read();for(int i=1;i<=n;++i)   w[i]=read(), fa[i]=i;for(int i=1;i<=n;++i) b[i]=read();for(int i=1;i<=m;++i){int x=read(), y=read();int xx=gf(x), yy=gf(y);if(xx==yy)    continue;fa[xx]=yy;}for(int i=1;i<=n;++i){int x=gf(i);if(vis[x])   c[vis[x]].push_back(i), sum1[vis[x]]+=w[i], sum2[vis[x]]+=b[i];else vis[x]=++cnt, c[vis[x]].push_back(i), sum1[vis[x]]+=w[i], sum2[vis[x]]+=b[i];}memset(f,0xcf,sizeof(f));/*所有的状态都是不合法的状态*/f[0]=0;for(int i=1;i<=cnt;++i)for(int j=W;j>=0;--j){if(j>=sum1[i]) f[j]=max(f[j], f[j-sum1[i]]+sum2[i]);/*需要考虑不合法的状态表示选择一整个区间*/for(int k=0;k<c[i].size();++k){if(c[i].size()==1)  break;/*如果是只有一个人的话,那么他在上面的时候就已经被更新过了,所以这一步就可以被省略。*/if(j>=w[c[i][k]])f[j]=max(f[j], f[j-w[c[i][k]]]+b[c[i][k]]); }}int ans=0;for(int j=0;j<=W;++j)ans=max(ans, f[j]);printf("%d\n",ans);return 0;
}

注意事项:注意在整组转移的时候要考虑当前的容积是否可以容纳下整个组,否则的话他就会继承下去,影响后面的选择。

可以思考一个小问题会不会有可能f[i]被一整个组以及该组中的一个人同时更新?

可以被证明:在组员人数超过一个的情况下是不可能会出现这种问题的。

因为当组员人数超过1个人时, 整个组和组中每一个成员的终点是一样的,但是因为他们的价值各不相同,所以他们的起点必然不一样(这里区分的是整个组和成员,而不是区别于成员和成员),所以就不需要考虑是否会有重复遍历的情况。

听课记录(09/22)相关推荐

  1. AstrOrz Player 0.72v 国庆最新版本(2012/09/22)更新无期限版本获取方式!(2013/02/14)

    配合杜比家庭影院v4 Dolby Home Theater v4 和DTS音效可以达到最佳效果! 下载地址:点击打开链接 AstrOrz Player 0.72v (2012/09/22) 1.可以直 ...

  2. 中学计算机课使用登记册,中学信息技术听课记录.doc

    文档介绍: 中学信息技术听课记录,初二信息技术听课记录,信息技术听课记录,初中信息技术听课笔记,高中语文听课记录20篇,信息技术flash听课记录,七年级信息技术听课,听课记录信息技术表格,初二信息听 ...

  3. 高中计算机课听课记录表,中学信息技术听课记录.doc

    中学信息技术听课记录.doc 听课记录表听课记录表(一)(一) 实习学校实习学校_ _xxxxxx 九年制学校九年制学校 实践基地任课教师实践基地任课教师 xxxxxx 班 级 八.一 时 间 201 ...

  4. 小学听课计算机笔记范文,小学教师听课记录精选10篇【最新】.pdf

    小学教师听课记录精选10篇[最新] 小学教师听课记录精选 小学语文听课记录教学 一.导入新课: 这节课我们继续学习-- (齐读课题 二.复习旧知: 1. 这些词语还认识吗?(钓鱼.从未见过.允许.遵守 ...

  5. Blockchain:《Blockchain applications in insurance》Deloitte—德勤区块链技术研究报告正文版—听课记录

    Blockchain:<Blockchain applications in insurance>Deloitte-德勤区块链技术研究报告正文版-听课记录 目录 Implications启 ...

  6. 计算机应用基础的听课记录,听课记录-计算机应用基础

    听课记录-计算机应用基础-Excel 2003的条件格式的应用 3.单击"条件格式"对话框中的"格式"按钮,弹出"单元格格式"对话框,设置字 ...

  7. 中小学计算机听课记录表,小学数学听课记录范文表格

    小学数学听课记录范文表格,以下是大学网小编精心整理的相关内容,希望对大家有所帮助! 小学数学听课记录范文表格 篇一 执教者 丁衡江 听课教师 年级班级 五年级 学科 数学 课题 轴对称 课型 新课 教 ...

  8. 2018.09.22 上海大学技术分享 - An Introduction To Go Programming Language

    老实说笔者学习 Go 的时间并不长,积淀也不深厚,这次因缘巧合,同组的同事以前是上海大学的开源社区推动者之一,同时我们也抱着部分宣传公司和技术分享的意图,更进一步的,也是对所学做一个总结,所以拟定了这 ...

  9. 小学五年级计算机听课记录表,小学五年级语文教师听课记录

    上课或者接受培训时,记录在笔记本或其他地方的上课的重难点.要点.提纲等,叫做听课笔记.小学五年级语文教师听课记录内容如下. 小学五年级语文教师听课记录 一.激趣导入 1. 教师板画鲸,激发学生学习兴趣 ...

  10. 计算机基础课程听课记录,听课记录-计算机应用基础

    听课记录-计算机应用基础-Excel 2003的条件格式的应用 编号: 保管年限: 五年 流水号: 课程名称 课 题 授课班级 <计算机应用基础> §Excel 2003的条件格式的应用 ...

最新文章

  1. 通过Windows10上的VS Code打开远端Ubuntu上的项目操作步骤
  2. 投资房地产,甘当'接盘侠'才能赚到钱?
  3. ES6常用新特性---笔记一
  4. ASP.NET中使用Global.asax文件
  5. HiveSQL运行优化参数配置
  6. Netty中的那些坑
  7. C++实现自动发邮件代码,这个是用网易邮箱的。
  8. C++/C--unordered_map常见用法详解
  9. linux 内容替换 注释,为让 Linux 代码注释更加和谐 有人提议用“拥抱”替换 F**k...
  10. Linux高级实用命令
  11. 使用tcgetattr函数与tcsetattr函数控制终端-转
  12. python之定制多种彩虹色爱心
  13. 校园网编写linux网络认证,个人心得:校园网linux锐捷认证ruijie(xrgsu)使用及xrgsu下载...
  14. VASSISTX在vs里面应用的快捷键
  15. MATLAB 比较好入门书籍有哪些推荐
  16. 基于微信小程序的网上购物系统的设计与实现.pdf
  17. 三类医疗器械进销存软件-医药供应链系统
  18. 51单片机8位数码管时钟c语言,51单片机8位数码管电子时钟(完结)
  19. C语言实现的获取文件夹内文件名
  20. 与引导文件系统/vmfs/devices..的备用设备之间的连接已丢失,主机配置更改将不会保存到持久存储中...

热门文章

  1. 台大郭彦甫教授Matlab讲解笔记(一)
  2. 纯CSS3实现常见的时间进度线(竖立方向)
  3. 生物信息学中重要的评价竞赛
  4. SaaS是什么,目前主流的国内SAAS平台提供商有哪些?
  5. Fortran矩阵运算
  6. UT-Exynos4412开发板三星ARM四核旗舰开发平台android4.0体验-11有线网络功能调试
  7. Unity XR Interaction Toolkit研究
  8. spring AOP依赖配置大全
  9. C语言:memcpy的用法
  10. 低通采样定理 matlab,基于matlab的低通抽样定理仿真