最少反链划分数 = 最长链.实现:每次找出所有极大元作为一个反链. 任意长度小于k * (k + 1) / 2的排列都能被划分为不多于k个单调序列.且这是一个紧的上界. 然后这题就可以切了. 题意:给定长为n的排列,设任长为n的排列都能被划分为不多于k个单调序列,把给定排列划分为不多于k个单调序列. 解:先求出k,然后求LIS,如果LIS >= k那么扔掉LIS递归.否则划分成反链即可.用链表实现. #include <bits/stdc++.h> , INF = 0x3f3f3f3f;…
[CF1097E]Egor and an RPG game(动态规划,贪心) 题面 洛谷 CodeForces 给定一个长度为\(n\)的排列\(a\),定义\(f(n)\)为将一个任意一个长度为\(n\)的排列划分成最少的上升和下降子序列的个数的最大值.现在你要把这个排列\(a\)划分成不超过\(f(S)\)个上升或者下降子序列. 题解 首先不难得出\(f(n)=k-1,k=min\{x|\frac{x(x+1)}{2}>n\}\),这个怎么构造可以自己想想. 那么设当前排列\(a\)的\(L…
最少拦截系统 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 11667    Accepted Submission(s): 4585 Problem Description 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度…
链接 题目描述 恶魔猎手尤迪安野心勃勃,他背叛了暗夜精灵,率领深藏在海底的娜迦族企图叛变.守望者在与尤迪安的交锋中遭遇了围杀,被困在一个荒芜的大岛上.为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去.到那时,岛上的所有人都会遇难.守望者的跑步速度为17m/s,以这样的速度是无法逃离荒岛的.庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点.守望者的魔法值恢复的速度为4点/s,只有处在原地休息状态时才能恢复. 现在已知守望者的魔法初值M,他所在…
二叉树的前序遍历.中序遍历.后序遍历 前序遍历 遍历顺序规则为[根左右] ABCDEFGHK 中序遍历 遍历顺序规则为[左根右] BDCAEHGKF 后序遍历 遍历顺序规则为[左右根] DCBHKGFEA 什么是时间复杂度和空间复杂度 时间复杂度 是指执行当前算法所消耗的时间 空间复杂度 是指执行当前算法需要占用多少内存空间 评价一个算法的效率主要是看它的时间复杂度和空间复杂度.然后有时候鱼和熊掌不可得兼,所以我们就需要从中去取一个平衡点 知道淘汰策略的哪些算法? lru算法如果让你实现你会选择…
原文链接https://www.cnblogs.com/zhouzhendong/p/CF1097E.html 题解 首先我们求出 $k = f(n) = \max\{x|\frac{x(x+1)}2\leq n\}$ . 具体构造方案是:(以 $n = 15$ 为例) 11 12 13 14 15          7 8 9 10        4 5 6        2 3       1 我们考虑如何构造. 求出当前序列的 LIS 长度(假设为 $len$).如果 $len\geq k…
题意:现给定一个字符集中一共Z个元素的环境,给出一个Z*Z的数组,表示从i到j之间的距离.给定两组字符串,分别问包含着两个字符串(给定的字符串为所求字符串的子序列不是子串)对应位的距离和值最小为多少?输出这两个字符串. 分析:该题的状态还是比较好开设的,设dp[i][j]表示a串的前i个字符和b串的前j个字符被包含后的最小开销,于是动态转移方程: dp[i][j] = min(dp[i][j], dp[i-1][j] + wa[sa[i]]);  其中wa数组表示某个字符与另外一个最小花费的字符…
题目传送门 传送点I 传送点II 题目大意 给定$n$个区间,问恰好删去其中$k$个,剩下的区间的并的最大总长度. 显然被包含的区间一定不优.再加上被包含的区间对计数不友好.直接把它删掉. 注意到题目说恰好,其实是骗人的.多删几个也不会影响(删太多了就有影响了). 按照右端点排序,然后用$f[i][j]$表示考虑前$i$个区间,已经选了删掉$j$个. 考虑转移,第一种情况是第$i$个区间不选,直接通过$i - 1$转移. 第二种情况是要选$i$.然后要计算贡献.这时考虑上一个选择的是什么? 如果…
After several latest reforms many tourists are planning to visit Berland, and Berland people understood that it's an opportunity to earn money and changed their jobs to attract tourists. Petya, for example, left the IT corporation he had been working…
又见拦截导弹 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 大家对拦截导弹那个题目应该比较熟悉了,我再叙述一下题意:某国为了防御敌国的导弹袭击,新研制出来一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.突然有一天,雷达捕捉到敌国的导弹来袭.由于该系统存在缺陷,所以如果想把所有的导弹都拦截下来,就要多准备几套这样的导弹拦截系统.但是由于该系统成本太高,所以为了降低成本,请你计算一下最少需要…
传送门 首先考虑怎么算 $f(n)$ (就是题目里面那个 $f(n)$) 发现可以构造一组序列大概长这样: ${1,3,2,6,5,4,10,9,8,7,15,14,13,12,11,...,n(n+1)/2,n(n+1)/2-1,n(n+1)/2-2...n(n+1)/2-(n-1),(n+1)(n+2)/2,(n+1)(n+2)/2-1.....}$ 然后发现这样构造的话,如果序列长度为 $k(k+1)/2$ ,那么至少需要分 $k$ 个数列 考虑证明这个即为上限,那么就是证明如果序列长度小…
四大常用算法:分治.贪心.回溯.动态规划 回溯算法是个"万金油".基本上能用跟动态规划.贪心解决的问题,都可以用回溯去解决.回溯算法相当于穷举搜索,穷举所有情况,然后得到最优解.不过回溯算法时间复杂度非常高,指数级的,只能解决小规模数据问题.对于大规模数据,执行效率就相当低. void backtracking(参数) { if (终止条件) { 存放结果; return; } for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) { 处理节点; backtrackin…
第18章---高度难题 1,-------另类加法.实现加法. 另类加法 参与人数:327时间限制:3秒空间限制:32768K 算法知识视频讲解 题目描述 请编写一个函数,将两个数字相加.不得使用+或其他算数运算符. 给定两个int A和B.请返回A+B的值 测试样例: 1,2 返回:3 答案和思路:xor是相加不进位.and得到每一个地方的进位.所以,用and<<1之后去与xor异或.不断递归. import java.util.*; public class UnusualAdd { pu…
Description 很久很久之前,森林里住着一群兔子.有一天,兔子们突然决定要去看樱花.兔子们所在森林里的樱花树很特殊.樱花树由n个树枝分叉点组成,编号从0到n-1,这n个分叉点由n-1个树枝连接,我们可以把它看成一个有根树结构,其中0号节点是根节点.这个树的每个节点上都会有一些樱花,其中第i个节点有c_i朵樱花.樱花树的每一个节点都有最大的载重m,对于每一个节点i,它的儿子节点的个数和i节点上樱花个数之和不能超过m,即son(i) + c_i <= m,其中son(i)表示i的儿子的个数,…
Codevs2075和2544是一道题,直接A过. 2075 yh女朋友的危机  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题解  查看运行结果     题目描述 Description 不知为什么,yh的女朋友们都掉入了一个深度为h的天坑.由于天坑太深,yh的女朋友们无法爬出去,于是她们决定用搭人梯的方式脱困.我们知道yh的每位女朋友从脚到肩膀的高度ai,以及肩膀到伸直手臂的距离bi.由k个人搭成的人梯的高度为a1+a2+…+ak+bk;当人梯…
一.语言是最重要的基本功   无论侧重于什么方面,只要是通过计算机程序去最终实现的竞赛,语言都是大家要过的第一道关.亚洲赛区的比赛支持的语言包括C/C++与JAVA.笔者首先说说JAVA,众所周知,作为面向对象的王牌语言,JAVA在大型工程的组织与安全性方面有着自己独特的优势,但是对于信息学比赛的具体场合,JAVA则显得不那么合适,它对于输入输出流的操作相比于C++要繁杂很多,更为重要的是JAVA程序的运行速度要比C++慢10倍以上,而竞赛中对于JAVA程序的运行时限却往往得不到同等比例的放宽,…
ACM课程学习总结报告 通过一个学期的ACM课程的学习,我学习了到了许多算法方面的知识,感受到了算法知识的精彩与博大,以及算法在解决问题时的巨大作用.此篇ACM课程学习总结报告将从以下方面展开: 学习ACM算法知识之前的具备的知识基础 学习过程及知识梳理 心得体会及收获 一,学习ACM算法知识之前具备的知识基础 在开始这一学期的课程之前,大一上学期及寒假期间我学习了C++标准库中的STL,了解了一些通用操作,各种类型的容器的特性,以及一些算法.关于算法,只学习了一些简单的遍历,递归.并未深入学习…
目录 课程预习 1.1 课程内容分为三个模块 1.2 换工作面临问题 1.3 课程特色 课时1:技术人职业发展路径 1.1 工程师发展路径 1.2 常见技术岗位划分 1.3 面试岗位选择 1.4 常见面试流程 1.5 面试前的准备工作 1.6 面试考察点 1.7 四类硬技能 课时2:计算机与网络基础 2.1 知识点汇总 2.1.1操作系统(加粗为重点) 2.1.2 网络知识(加粗为重点) 2.2 TCP详解 2.2.1 三次握手建联 2.2.2 四次挥手断连 2.3 设计模式详解 2.3.1 单…
这里是在网上找到的一片Android学习路线,希望记录下来供以后学习 1Java 基础 Java Object类方法 HashMap原理,Hash冲突,并发集合,线程安全集合及实现原理 HashMap 和 HashTable 区别 HashCode 作用,如何重载hashCode方法 ArrayList与LinkList区别与联系 GC机制 Java反射机制,Java代理模式 Java泛型 Synchronized原理 Volatile实现原理 方法锁.对象锁.类锁的意义和区别 线程同步的方法:…
目录 Codeforces 1097 D.Makoto and a Blackboard(DP 期望) E.Egor and an RPG game(思路 LIS Dilworth定理) F.Alex and a TV Show(bitset) G.Vladislav and a Great Legend(斯特林数 树形DP) H. Codeforces 1097 比赛链接 咕咕了一个月...终于闲的没事想起补了... ABC代码没在本地(而且懒),就不放了... (然而当时C题FST了真是想.…
又回来了.. A - Gennady and a Card Game 好像没什么可说的了. #include<bits/stdc++.h> using namespace std; char gc() { static char buf[100000],*p1,*p2; return (p1==p2)&&(p2=(p1=buf)+fread(buf,1,100000,stdin))?EOF:*p1++; return getchar(); } template<class…
116-跳跃游戏 给出一个非负整数数组,你最初定位在数组的第一个位置. 数组中的每个元素代表你在那个位置可以跳跃的最大长度. 判断你是否能到达数组的最后一个位置. 注意事项 这个问题有两个方法,一个是贪心和 动态规划. 贪心方法时间复杂度为O(N). 动态规划方法的时间复杂度为为O(n^2). 我们手动设置小型数据集,使大家阔以通过测试的两种方式.这仅仅是为了让大家学会如何使用动态规划的方式解决此问题.如果您用动态规划的方式完成它,你可以尝试贪心法,以使其再次通过一次. 样例 A = [2,3,…
orz一开始想不画图做这个题(然后脑袋就炸了,思维能力有待提高) 我的做法是动态规划+贪心+构造 首先把题目给的树变成一个可行的情况,同时weight最小 这个可以通过动态规划解决 dp[x]表示以x为结点的子树,它的最小weight是多少 接着我们就只需要考虑每条边增加多少就可以了,这里可以用贪心的做法 ddfs(int x, int fa, int v) 这里v是表示给x结点最大多少增量,然后慢慢加就可以,返回没用掉的增量 其实这个做法有点奇怪,应该有更简便的做法(我觉得可以直接贪心做) #…
于是紧接着又发了第二篇. 关于这次去完纪中以后的感想,写完后总觉得少了些什么,因此就发一篇小目标集合来凑数补充一下吧. Part I:图论 这方面我去之前就是很有自信,事实证明像基础的最短路.生成树什么的都还没有忘,在纪中打比赛的时候也把树链剖分.lca和tarjan捡起来了. 然鹅……我的网络流,怕是忘到蓬莱仙山去了( ̄ェ ̄;). 图论基本是最依靠数学建模的一种算法,近来很多图论算法都要求和其他算法组合应用,因此只会写基础的代码是不够的.各种优化.不同的形式以及一些奇怪的拓展都要再多熟练. 改…
全文包含 12000+ 字.30 张高清图片,预计阅读时间为 40 分钟,强烈建议先收藏再仔细阅读. 作者 | 李威 整理 | 公众号:五分钟学算法 个人博客 | https://www.cxyxiaowu.com 来源 | https://www.liwei.party/ 下面的动画以 「力扣」第 704 题:二分查找 为例,展示了使用这个模板编写二分查找法的一般流程. 以下"演示文稿"展示了本文所要讲解的主要内容,您可以只看这部分的内容,如果您还想看得更仔细一点,可以查看"…
最长上升子序列解决问题: 有N个数,求出它最长的上升子序列并输出长度. 在题里不会讲的这么直白,这个算法往往会与其他的算法混在一起使用. 在这篇文章中不会出现其他的例题,为了让大家更好的理解,我只会对模板进行讲解.(谢谢大家的理解) 1-朴素算法(时间复杂度炒鸡炒鸡高) 首先,我们先列出一些无序的数进行观察,例如:1 7 4 2 3 6 8 9 (共8个数). 我们通过观察很快可以发现在这个序列中最长的上升序列时1,2,3,6,8,9,长度为6,我们可以把每种情况都遍历一遍,我们现在从1开始,当…
去年换工作的时候, 面试了一下 Google (这里说的是 Google 中国哈), 来了个 Google 面试六轮游, 结果是没通过.…
基本情况 本人系非985非211普通本科生一枚,有实习有项目经历但成绩普通,在面试前刷了很多面经.面试题,这里也把自己的分享下,做个回报好了,顺便攒攒人品,一到这种时候人就迷信起来了. 面试是以视频面试的形式进行的,在牛客网里进行,界面我就不贴了,没截图. 首先是面试的基本流程,刚开始是自我介绍.随后面试官会问你一些基本问题.接下来就是根据你的简历啊.前面说的内容啊来问一些针对性的问题,然后会问很多基本知识,像是计算机网络.操作系统.编译原理这些. 一面 面我的面试官是做 iOS 的,就没问我…
Best Time to Buy and Sell Stock Total Accepted: 14044 Total Submissions: 45572My Submissions Say you have an array for which the ith element is the price of a given stock on day i. If you were only permitted to complete at most one transaction (ie, b…
POJ 3659 Cell Phone Network / HUST 1036 Cell Phone Network(最小支配集,树型动态规划,贪心) Description Farmer John has decided to give each of his cows a cell phone in hopes to encourage their social interaction. This, however, requires him to set up cell phone tow…