随笔分类 -  算法题&leetcode

摘要:画图,每个给出点都有对应区间;先sort,再尽量靠右选;很常见的套路了..//注意不要越界(0,L) struct Q //复习结构{ double l,r; Q(double _l,double _r):l(_l),r(_r){} bool operator < (const Q &a) cons 阅读全文
posted @ 2018-10-05 19:19 Erio 阅读(184) 评论(0) 推荐(0) 编辑
摘要:贪心部分的理论依据:前i个数可以凑出1~sum[i]的所有整数。 证明:第二类数学归纳,n=1时成立,假设n=k之前所有项都成立,当n=k+1时。sum[k+1]=sum[k]+a[k+1]。只需证明能凑出sum[k]+1~sum[k+1]间的整数即可。设1≤p≤a[k+1],sum[k]+p=su 阅读全文
posted @ 2018-10-05 19:18 Erio 阅读(136) 评论(0) 推荐(0) 编辑
摘要:题目要求k>=最大度数;观察,颜色数量和度数的关系,得颜色数=最大度数+1(偶数)//最大度数(奇数) 可以满足染色关系一个点和周围的点的颜色数加起来最大为它的度数+1; k=所有点中最大的度。如果最大入度是偶数,则k+1。证明:当最大度数为奇数n,设点u所连n个点,点u为1,n-1个点不一样,1个 阅读全文
posted @ 2018-10-05 19:16 Erio 阅读(260) 评论(0) 推荐(0) 编辑
摘要:和cf的打分有点像啊 因为一共只有三道题,所以每个人的得分最多有8种可能性。把这8种可能性都算出来,存在数组里,排好序备用排名就是一个天然的链表,给出了扫描的顺序扫描时,维护两个变量:前一个player的最大得分 recd 和他的ID recdID扫描到每个player时,从大到小遍历他的8种得分, 阅读全文
posted @ 2018-10-05 19:14 Erio 阅读(374) 评论(0) 推荐(0) 编辑
摘要:逆序做,逆序输出 紫书上的描述有点问题 感觉很经典 ans.push_back(2); a.insert(a.begin(),a[n-1]); a.erase(a.end()-1); a.push_back(k);vector 的操作 没有证明这样做的复杂度要求... 阅读全文
posted @ 2018-10-05 19:13 Erio 阅读(289) 评论(0) 推荐(0) 编辑
摘要:类似煎饼,先把1放到1,之后是子问题 (先放到前一半,再放到开头,两次操作)(任何位置,最多一次就可以放到前一半)) 阅读全文
posted @ 2018-10-05 19:10 Erio 阅读(311) 评论(0) 推荐(0) 编辑
摘要:首先根据题意,既然0能变1,问号能变任何。那么不能变成T串的情况只能是S串中的1大于T串中1的个数。 然后考虑能够成为T串的情况。首先,不相同的0和不相同的1首先进行置换,因为这样置换只需进行一次操作,比其它任何情况都优。交换次数为diff0 diff1中小的那个次,之后借由?再有2*(diff0 阅读全文
posted @ 2018-10-05 19:07 Erio 阅读(150) 评论(0) 推荐(0) 编辑
摘要:细节值得注意 注意vector<string>是可以直接sort的! 阅读全文
posted @ 2018-10-05 19:06 Erio 阅读(154) 评论(0) 推荐(0) 编辑
摘要:连通器向左向右扫描两次即可每一段有水的连通区域,高度必须相同,且不超过最低天花板高度if(p[i] > level) level = p[i]; 被隔断,要上升(隔断后,之前的就不变了,之后的从p【i】开始) if(s[i] < level) level = s[i]; h[i] = level;左 阅读全文
posted @ 2018-10-05 19:03 Erio 阅读(209) 评论(0) 推荐(0) 编辑
摘要:思维 创造条件使一轮比赛之后仍满足1号打败至少一半,并剩下至少一个t' 紫书上的思路很清晰阶段1,3保证黑色至少消灭1半 #include<cstdio> #include<vector> using namespace std; const int maxn = 1024 + 5; char ta 阅读全文
posted @ 2018-10-05 19:01 Erio 阅读(142) 评论(0) 推荐(0) 编辑
摘要:某个序列找到唯一元素后,判断被分成的两边的序列即可问题在于找到唯一元素连续序列,重复元素的问题;感觉很有一般性 查找相同元素用map,last,next存上一个相同元素的位置复杂度计算有点思考;记录last,next,那么对于一个元素,判断是否独立O(1)从头开始查找,最坏情况T(n)=T(n-1) 阅读全文
posted @ 2018-10-05 19:00 Erio 阅读(160) 评论(0) 推荐(0) 编辑
摘要:注意理解题意,不是排列种类,而是下一个排序出现的时间滑动窗口,具体见代码,写了很多注释(紫书的思路1理解有点麻烦...)注:可以画一个轴来方便理解 阅读全文
posted @ 2018-10-03 22:06 Erio 阅读(265) 评论(0) 推荐(0) 编辑
摘要:思路:枚举点t,寻找满足条件的点t'; 计sum[i]为前i项合,平均值即为sum[t]-sum[t'-1]/t-t'+1 设(Pi=(i,Si),表示点在s中的位置,那么就可以画出坐标图,问题就转化为斜率最大; 于是画图分析。 几个点之间只有上凸下凸两种情况,取3个点为符合条件(t-t'>=L)的 阅读全文
posted @ 2018-10-03 13:04 Erio 阅读(196) 评论(0) 推荐(1) 编辑
摘要:常用的化简方法(高中就常用了): p^(e+1)-1/p-1= [ p^(e+1) -p + (p-1) ]/ (p-1) = p*(p^e-1)/(p-1) + 1 (也可以直接分解p^e-1) 常用的思路:反面验证 比如本题,求偶数(试探后发现不太好求),则推出奇数条件 再看本题。要想让σ(n) 阅读全文
posted @ 2018-09-26 23:39 Erio 阅读(165) 评论(0) 推荐(0) 编辑
摘要:cf235B 一道有意思的题。(据说是美少女(伪)计算机科学家出的,hh) 根据题目要求,就是求ni^2的和。 而n^2=n*(n-1)+n; n*(n-1)=C(n,2)*2; 所以∑ai^2=∑ai+2*∑C(n,2) 化为求连续长度大于2的序列个数;这样好像还是不太好直接做 设dp【i】=以i 阅读全文
posted @ 2018-09-25 23:58 Erio 阅读(198) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示
🚀
回顶
收起