摘要: 传送门:https://vjudge.net/contest/349835#problem/A 题意 长度为n的序列代表每个房间的灯泡需求,k为每个月新获得的灯泡,从左往右找当手头的灯泡>=房间的需求时为房间更换灯泡,若没有房间满足则留着下一个月用,q次询问,回答在第i个月装修了多少个房间,手头上的 阅读全文
posted @ 2020-01-03 19:57 艾尔夏尔-Layton 阅读(180) 评论(0) 推荐(0) 编辑
摘要: #include<iostream> #include<algorithm> using namespace std; const int maxn=5e5+10; typedef long long ll; int n,m; struct node{ ll ls,rs,ms,s; }a[maxn< 阅读全文
posted @ 2020-01-02 16:27 艾尔夏尔-Layton 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个长度为n的序列,计算得他们的和是S,异或和是P,你可以往序列中加入三个数,最后令S==2*P成立。 思路1:因为一个数异或上自己就是0,则先加一个P,则变成 S+P 和 0 ,再加一个 S+P,因为0异或任何数=任何数,所以就变成了2*(S+P)和S+P,满足题意。 思路2:若S<2P 阅读全文
posted @ 2019-12-31 11:35 艾尔夏尔-Layton 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个长度为n的序列,求一个连续的子序列使得该子序列的最大元素-最小元素>=该子序列的长度(称为好序列),找不到输出NO,找到就输出YES和序列的下标l和r。 思路:结论就是如果一个序列满足条件,则必定有两相邻元素差的绝对值>=2。故遍历一下,若每两个元素都不满足就一定不满足。 证明:若有一 阅读全文
posted @ 2019-12-31 10:49 艾尔夏尔-Layton 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 本学习笔记参考于https://www.runoob.com/python/python-functions.html和https://blog.csdn.net/scott198510/article/details/98198312 https://blog.csdn.net/HCYHanson 阅读全文
posted @ 2019-11-21 20:47 艾尔夏尔-Layton 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 题目: 4-1 程序存储问题 (90 分) 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度,计算磁带上最 阅读全文
posted @ 2019-11-17 21:48 艾尔夏尔-Layton 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 动态规划 本人对动态规划的理解:我认为动态规划其实就是搜索的一种,但更加优美,速度更高。递归的方式就是老师说的备忘录,其实就是记忆化深搜,但本质上就是通过状态转移进行递推,所以能通过迭代的方式求解,当前问题的最优解依赖于子问题的最优解,于是当最小子问题初始化出答案后就可以一步一步往当前问题递推。妙啊 阅读全文
posted @ 2019-11-01 11:30 艾尔夏尔-Layton 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 恢复内容开始 动态规划 三道题,第一道就比较简单,从上到下或者从下到上都可以 递归方程:dp[i][j]=max(dp[i-1][j],dp[i-1][j-1])+a[i][j]; 在dp中,定义很重要,这里的dp【i】【j】表示从最顶端走到第i行第j列的最大和,所以在最底层维护一下答案就行 代码: 阅读全文
posted @ 2019-10-21 22:38 艾尔夏尔-Layton 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 分治法本质上就是将大问题分解成小问题,小问题的解可以合并成问题的解。 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。 我的感想:就像初中课文《走一步,再走一步》,当问题巨大的时候不断分成几个小问题就行,希望我在编程时能实际用上! 二结伴编程的感想 两个人编程,一个为主代码手 阅读全文
posted @ 2019-10-14 23:20 艾尔夏尔-Layton 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 普通二分查找 1 int bs(int L,int R,int x) 2 {//在l到r区间上查找x,找不到就返回-1 3 int l=L,r=R; 4 while(l<=r){ 5 int m=l+r>>1; 6 if(a[m]==x){ 7 return m; 8 } 9 else if(a[m 阅读全文
posted @ 2019-09-23 14:42 艾尔夏尔-Layton 阅读(806) 评论(0) 推荐(0) 编辑