前两天自学了一点点最短路..看起来很简单的样子... 就去kuangbin的专题找了最简单的一道题练手..然后被自己萌萌的三重for循环超时虐的不要不要的~ 松弛虽然会但是用的十分之不熟练... 代码~ #include<stdio.h> #include<string.h> #include<al
分类:
其他好文 时间:
2016-02-04 19:06:20
阅读次数:
143
1到6的卡分别各有有限制的张数,问能不能恰好分,总张数不能超过20000. 很明显是多重背包问题,上去果写了个三重循环,然后就T了,重新打开背包九讲,找到了多重背包的二进制拆分优化,把其中一维n的复杂度简化为logn的复杂度。 二进制拆分优化:就是1,2,4,2^k(满足和小于分解数最大的k),二进...
分类:
其他好文 时间:
2015-11-01 17:48:07
阅读次数:
146
题目大意:有n根长度的为a1,a2....an的棒子,如果棒子可以组成三角形,求这些棒子能组成的三角形的最大周长? 这一题,一般人只能想到三重循环,当然我们是CS专业的,不能这样想,其实这题可以用DP(其实也不算DP),就是用o(n^2)的时间算出所有两根棒子的...
分类:
其他好文 时间:
2015-09-26 09:13:47
阅读次数:
174
初始化:f[i][i]置成i,其余为0三重循环用f[i][j]+f[k][k]更新f[i][j]最后用一个三重循环更新ans数组,记得提前置成最大值var w:array[0..105]of longint; f,sum:array[0..105,0..105]of lo...
分类:
其他好文 时间:
2015-09-17 23:01:19
阅读次数:
204
思路:最暴力的想法,用一个三重循环去遍历,这道题给出的时间是2秒,而且cf的服务器肯定很好,所以时间上应该是没有压力的,但我心里一直没底,总感觉会超时。
在这里,看了大牛们的代码,学了一个新思路,对于一个三重循环,可以找出他们两两之间有什么关系,用pair, strcut保存下来,题目里的m是4000,远远小于n...
分类:
其他好文 时间:
2015-08-31 11:56:12
阅读次数:
146
1.首先我们看一段代码: for(int i=0;i<1000;i++){ for(int j=0;j<100;j++){ for(int k=0;k<10;k++){ testFunct...
分类:
移动开发 时间:
2015-08-25 14:04:31
阅读次数:
168
该题其实是个DP,可能数据比较水,队友排序后从大的开始取都过了。。
我们来说说正解,一开始其实我已经写出来了,只是有一个地方导致了一直在输出一个不是数字的值,赛后才发现是我用memset对一个double类型的数组清-1的原因 ,改了一下就对了 。 直接开一维数组,用二进制表示集合的方法来表示哪些木棍被选取了 。 很简单的状态压缩DP 。
我用的记忆化搜索,该题还可以用三重循环地推...
分类:
其他好文 时间:
2015-08-02 21:37:14
阅读次数:
124
题意:x^z+y^z+xyz=k,给定k求出满足该式子的x,y有多少种。(x1,k
分析:
一看就是卡时间的题,这种题一般方法是枚举,但是要先分析一下数据的关系,把枚举的变量的数据范围缩小到可接受的程度;另外二分在这种题里是常用的方法。
本题要复杂一点,有三个变量都要枚举。首先z作为幂,而k
然后是做法:因为有三个变量,如果用上面估算得到的范围来枚举,三重循环还是会超时,这就要求我们用效率...
分类:
其他好文 时间:
2015-07-27 23:04:46
阅读次数:
199
三重循环肯定TLE,所以采用“折半枚举”的方法+二分查找来提高速度,不同的是需要保存两个下标用来判定是否有重复元素。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int N = 1...
分类:
其他好文 时间:
2015-07-17 17:58:13
阅读次数:
94
题意:求最大的子矩阵
分析:直接用最大字矩阵的公式做超时了。换个思路,这题跟上一题1506有关系,先以每层为底算出每个元素能到达的最大的高度,然后就跟1506一样了。这里求高度和求面积两处地方用到了dp暂存数据。求高度用二重循环,然后每层为底求面积要二重循环加上外层就是三重循环,但是由于用了dp保存中间结果,所以这个三重循环不会超时。dp[j]表示当前层第j列能到达的最大的高度,状态转移:1.a...
分类:
其他好文 时间:
2015-06-23 10:17:21
阅读次数:
113