摘要:
题意:给n个数(n<=200000),每个数的绝对值不超过(10^6),有m个查询(m<=200000),每次查询区间[a,b]中连续的没有相同数的的最大长度。 析:由于n太大,无法暴力,也承受不了O(n*n)的复杂度,只能是O(nlogn),首先是用f[i] 表示每个数 i 为左端点,向右可以最多 阅读全文
摘要:
题意:给定每一点离他最远的点,问是这个森林里有多少棵树。 析:并查集,最后统计不同根结点的数目即可。 代码如下: 阅读全文
摘要:
题意:给定n个优惠券,每张都有一定的优惠区间,然后要选k张,保证k张共同的优惠区间最大。 析:先把所有的优惠券按左端点排序,然后维护一个容量为k的优先队列,每次更新优先队列中的最小值,和当前的右端点, 之间的距离。优先队列只要存储右端点就好。 代码如下: 阅读全文
摘要:
题意:。。。 析:随机判断就即可,每次把不正确的删除,经过几次后就基本剩不下了。 代码如下: 阅读全文
摘要:
题意:给定n个人的m个对话,问能不能找一个方式使得满足,上下楼层人名不同,并且自己不提及自己。 析:首先预处理每一层能有多少个user可选,dp[i][j] 表示第 i 层是不是可以选第 j 个user。最后再输出即可。 代码如下: 阅读全文
摘要:
题意:。。。 析:每次都是有三种放法,1,2,3,根柱子,所以就是3^n次方。 代码如下: 阅读全文
摘要:
题意:。。 析:2^n-i 代码如下: 阅读全文
摘要:
题意:。。。 析:由于能最后一个是特殊的,所以前n-1个都是不变的,只是减少了最后一个盘子的次数,所以根据上一个题的结论 答案就是dp[n-1] + 2。 上一题链接:http://www.cnblogs.com/dwtfukgv/p/6283879.html 代码如下; 阅读全文
摘要:
题意:。。 析:dp[i] 表示把 i 个盘子搬到第 3 个柱子上最少步数,那么产生先把 i-1 个盘子搬到 第3个上,再把第 i 个搬到 第 2 个上,然后再把 i-1 个盘子, 从第3个柱子搬到第1个上,再把第 i 个盘子,搬到第3个上,再把第i-1个盘子从第1个柱子上搬到第3个上,所以总起来就 阅读全文
摘要:
题意:中文题。 析:在没有第四个柱子时,把 n 个盘子搬到第 3 个柱子时,那么2 ^ n -1次,由于多了一根,不知道搬到第四个柱子多少根时是最优的, 所以 dp[i] 表示搬到第4个柱子 i 个盘子时,步数最少,dp[i] = min{ dp[j] + (1<<i-j) - 1}。 也可以找规律 阅读全文
摘要:
题意:给定一个字符串,求出它最少可分成几个回文串。 析:dp[i] 表示前 i 个字符最少可分成几个回文串,dp[i] = min{ 1 + dp[j-1] | j-i是回文}。 代码如下: 阅读全文
摘要:
题意:。。。 析:求周期就是这两个分数的最小公倍数,可以先通分,再计算分子的最小倍数。 代码如下: 阅读全文
摘要:
题意:... 析:我们可以知道,a1+a2=b1,那么我们可以枚举a1,那么a2就有了,并且a1+a3=b2,所以a3就有了,我们再从把里面的剩下的数两两相加,并从b数组中去掉, 那么剩下的最小的就是a4,然后依次可以求出a5,a6....由于a最大才是5000,并且保证有唯一解,那么找到一个就直接 阅读全文
摘要:
题意:田忌赛马,问你田忌最多能赢多少银子。 析:贪心,绝对贪心的题,贪心策略是: 1.如果田忌当前的最快的马能追上齐王的,那么就直接赢一局 2.如果田忌当前的最慢的马能追上齐王的,那么就直接赢一局 3.如果田忌当前的最慢的马不能超过齐王的,那么就输一局,并把齐王最快的干掉 通过以上策略,就是田忌赢的 阅读全文
摘要:
题意:某人要考试,有n天考m个科目,然后有m个科目要考试的时间和要复习多少天才能做,问你他最早考完所有科目是什么时间。 析:二分答案,然后在判断时,直接就是倒着判,很明显后出来的优先,也就是一个栈。 代码如下: 阅读全文
摘要:
题意:某人去旅游,记录了一共吃了多少顿饭,早中晚,但是有可能缺少,问你最少缺少了多少顿。 析:每把三个数排序,然后再一一对比,肯定是以最大数为主,其他两个肯定是缺少了。 代码如下: 阅读全文
摘要:
题意:给定n和k表示,狗要在任意连续两天散步次数要至少为k,然后就是n个数,表示每天的时间,让你增加最少次数使得这个条件成立。 析:贪心,策略是从开始到最后暴力,每次和前面一个相比,如果相加不够k,那么就给当前加上差。 代码如下: 阅读全文
摘要:
题意:你手中有10元的钱,还有一个r元的零钱,要买一个价格为k的物品,但是你要求不找零钱,求最少要买多少物品。 析:直接暴力,最多买10个物品就够了1-10. 代码如下: 阅读全文
摘要:
转载地址:http://blog.csdn.net/morewindows/article/details/6709644/ 堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。 二叉堆的定义 二叉堆是完全二叉树或者是近 阅读全文
摘要:
题意:给定n,求三个不同的数满足,2/n = 1/x + 1/y + 1/z。 析:首先1是没有解的,然后其他解都可以这样来表示 1/n, 1/(n+1), 1/(n*(n+1)),这三个解。 代码如下: 阅读全文