学大伟业 Day 3 培训总结】的更多相关文章

第一天培训,讲的基本算法,东西很多.还有些数论,图论,数据结构and some small tricks 一.输入输出技巧 //输入输出技巧 /* scanf.printf:速度快,需要记忆不同数据类型的格式化字符串 cin.cout:简单,在某些情况下较慢 getchar:读入一个字符 puts/gets/cin.getline(a,100)如果a是大小为100的字符数组/getline(cin,a)如果a是一个string:输出/输入一个字符串 */ #include<iostream>…
今天接着昨天的继续讲数据结构 今天先是 分块 在统计问题中,尤其是序列问题,经常涉及到区间的操作,比如修改一段区间的元素,询问某个区间的元素的信息. 如果每次都对一整个区间的每一个元素进行操作的话,那可能就很笨重,所以怎么快速地统计某一段区间的信息就成为了问题所在. 我们考虑把整个序列分成若干个区间,每一个区间称为一个“块”,这样,修改或者询问的每一个区间都能被表示为若干个连续的整块和若干个单个元素的拼接. 对于连续的整块,我们直接询问或者修改这个整块的信息即可,对于单个的元素我们暴力遍历一遍.…
今天讲数据结构 先从mzx大佬的ppt摘抄一段: 数据结构是计算机存储.组织数据的方式.数据结构是指相互之间存在一种或多种特定关系的数据元素的集合. 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率.数据结构往往同高效的检索算法和索引技术有关.(摘自百度百科) 简单来说,我们可以把数据的集合视为一个数组,即数组的元素就是我们所存储的数据, 同时,我们再用一系列指针(在OI中一般不用指针而用下标来代替)维护这些数据之间的关系,使得我们能够更方便地管理我们所需要用到的数据. 数据结构很多…
今天讲的字符串: 不多说,直接看题 一.表达式求值 题目大意: 输入一行一个表达式,计算其答案 表达式包含非负整数.加减乘除.括号 两种做法 ·栈 ·表达式树 这里更推荐表达式树,因为栈是先压进去,逆序操作.在进行逆序操作时即从右往左计算,实际应该是从左往右计算,所以会出现计算不符合顺序的问题.从而出现错误. 而表达式树则又称为“表达式目录树”,以数据形式表示语言级代码,它是一种抽象语法树或者说是一种数据结构.——摘自百度百科 可见,每个父节点都是一种运算符,子节点为数字.运算时从底层向上层依次…
一.dp 动态规划的本质 是一种思想.通过对原问题划分成子问题,寻找子问题之间的联系,通过求解子问题得出原问题的解.与贪心不同的是,动归是深谋远虑,考虑全局最优解:而贪心则目光短浅,只考虑局部最优解. 子问题 对应 状态 子问题之间的联系 对应 状态转移 边界子问题 对应 边界状态(状态转移的边界) 边界子问题:其结果不依赖其他子问题 求解动态规划类题目的要点 定义状态 寻找状态转移方程 边界状态 值得一提的是 动态规划中边界状态是可以由状态定义轻松得出 边界不能忽略. 动态规划的分类 按照常用…
今天讲的全是dp... 不多废话,先看一道经典的模板LIS(最长不下降子序列) 一.LIS 给定一个长度为N的数列,求最长上升子序列 例:1 7 2 8 3 4 答案:1 2 3 4 代码: #include <bits/stdc++.h>//突然想用万能库 using namespace std; ; int n, data[maxn], dp[maxn], from[maxn];//方案 void output(int x) { if(!x) return ; output(from[x]…
学大伟业Day1解题报告 张炳琪 一.   时间分配 T1:30分钟  T2: 60分钟  T3:100分钟 二.答题情况及错因 T1:100         T2:55             T3:0 T1:刚开始想枚举的方法,后来发现时间复杂度好像是对的,就那样写了 T2:对数据范围判断不准确,刚开始打算用set盼重怕炸空间,后来又改成了数组结果改错了 T3:看到题目知道是树形dp,然后推了一个多小时的转移方程,写了一张多纸,没推出来 在有大题不会的情况下,要先保证能拿到的分拿到,不然做不…
期望得分:100+100+20=220 实际得分:100+100+20=220 (好久没有期望==实际了 ,~\(≧▽≦)/~) 对于 a........a 如果 第1个a 后面出现的第1个b~z 是右端点,且在第2个a之前,那么有贡献 如果 第2个a 前面出现的第1个b~z 是左端点,且在第1个a之后,那么有贡献 最后的贡献/2 #include<cstdio> #include<cstring> #define N 100001 using namespace std; cha…
T1 叉叉 题目名称 叉叉 程序文件名 cross 输入文件名 cross.in 输出文件名 cross.out 每个测试点时限 1秒 内存限制 128MB 测试点数目 10 每个测试点分值 10 是否有部分分 无 试题类型 传统 题目描述 现在有一个字符串,每个字母出现的次数均为偶数.接下来我们把第一次出现的字母a和第二次出现的a连一条线,第三次出现的和四次出现的字母a连一条线,第五次出现的和六次出现的字母a连一条线...对其他25个字母也做同样的操作. 现在我们想知道有多少对连线交叉.交叉的…
期望得分:30+100+0=130 实际得分:30+100+20=150 忍者钩爪 (ninja.pas/c/cpp) [问题描述] 小Q是一名酷爱钩爪的忍者,最喜欢飞檐走壁的感觉,有一天小Q发现一个练习使用钩爪的好地方,决定在这里大显身手. 场景的天花板可以被描述为一个无穷长的数轴,初始小Q挂在原点上.数轴上有N个坐标为整数的圆环供小Q实现钩爪移动.具体操作为:小Q可以将钩爪挂到圆环上,进而荡到关于圆环坐标轴对称的位置.例如小Q在3,圆环在7,则小Q可以通过该圆环移动到11. 现在一个问题难倒…