题意:Jimmy打算每天沿着一条不同的路走,而且,他只能沿着满足如下条件的道路(A,B):存在一条从B出发回家的路径,比所有从A出发回家的路径都短,你的任务是计算有多少条不同的路径
从后往前找最短路,
对于每一步要更新之后走的位置值;
#include
#include
#include
#include
#include
using namespace std;
const...
分类:
其他好文 时间:
2014-08-09 09:07:27
阅读次数:
275
可以发现 当第i-1个比第i个高的时候 比第i-1个高的所有也一定比第i个高
于是可以用到动态规划的思想
令left[i]表示包括i在内比i高的连续序列中最左边一个的编号 right[i]为最右边一个的编号
那么有 当h[left[i]-1]>=h[i]]时 left[i]=left[left[i]-1] 从前往后可以递推出left[i]
同理 当h[right[i]+1]>=h[i]]时 right[i]=right[right[i]+1] 从后往前可递推...
分类:
其他好文 时间:
2014-08-05 09:39:49
阅读次数:
276
题目地址:HDU 4907
水题。。。不多说。。哈希后从后往前遍历一遍就行了、
代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
const int INF=0x3f3f3f3f;
int head[11000...
分类:
其他好文 时间:
2014-08-03 23:18:26
阅读次数:
246
题意:一段路上,给出n个慢跑者跑步的区间,给出k,要求让每个慢跑者都能看到k个广告,区间都是整数操作,也就是说一个广告只能放在一个整数上,求最小贴的广告数
思路:关于区间选点的问题。把所有区间按B从小到大排序(B相同时A从大到小排序),则如果出现区间包含的情况,小区间一定排在前面。所以贪心的策略就是,从后往前取k个点。因为只有从后面开始取点,满足的区间才最会最多,这样就能达到使用最少的点...
分类:
其他好文 时间:
2014-08-01 23:16:02
阅读次数:
205
POJ 2828题目大意是说有n个插入操作,每次把B插入到位置A,原来A以后的全部往后移动1,球最后的序列tree里保存的应该是这整个区间还有多扫个位置可以插入数据,那么线段树里从后往前扫描依次插入数据比如现在吧B插入到A位置,如果整个区间左侧还有>1; 6 7 if(x 2 #incl...
分类:
其他好文 时间:
2014-08-01 13:31:31
阅读次数:
177
题意:hzz一开始在0位置,然后hzz掷骰子,骰子为i,就往前走i步,当hzz位置大于等于n的时候结束,求掷骰子次数的期望有m个直达点 (x,y),走到x时可以直接到y求期望一般从后往前推当 i不等于任何一个x时dp[i]=seg(1/6*dp[i+k])+1否则dp[i]=dp[y] 1 #inc...
分类:
其他好文 时间:
2014-07-31 23:24:30
阅读次数:
159
题目地址:HDU 4901
这题没想到最后居然能够做出来。。。。
这题用了两次DP,先从前往后求一次异或的,再从后往前求一次与运算的。分别是
1:求异或的时候,定义二维数组huo[1000][1024],前者指第几位,后者是哈希的思想,若huo[x][y]=2则表示最右边的数为第x位时,异或值为y的出现了两次,需要再定义一个hash数组,来保存前面出现的所有情况,再找有多少位的时候,用has...
分类:
其他好文 时间:
2014-07-31 20:52:57
阅读次数:
227
题意:k份书稿分成m份,使得每份的和最小
思路:典型最大值最小化问题,使用贪心+二分。贪心的是每次尽量将元素往右边划分,二分查找最小的x满足m个连续的子序列和S(i)都不超过x。
因为输出的原因,在划分时就从后往前尽量划分。
#include
#include
#include
#include
using namespace std;
typedef long ...
分类:
其他好文 时间:
2014-07-31 13:29:27
阅读次数:
178
对于每个位置的馅饼数目只上一秒它本身和左右位置的最大馅饼数有关。。
也可将他看做数塔。。
从后往前找最大值。。
#include
#include
#include
#include
#include
using namespace std;
int s[11][100001];
int yy[11];
int e,f;
int maxn(int y,int u,int k...
分类:
其他好文 时间:
2014-07-30 12:15:53
阅读次数:
189
其实每一行的结果是二项式展开的系数,但是考虑到当给定的参数过大的时候,在求组合的过程中会出现溢出(中间过程要用到乘法),但是这样的算法的时间复杂度是O(N),所以在参数不太大的时候,还是不错的。
这里用迭代的方法来求,当然复杂度就高了,是O(N^2),这里主要说下迭代时候的技巧,即在一个列表(数组)里进行迭代,实现如此的操作,要求在求下一行的时候,要从后往前进行,若是从前向后,就把后面要用的变量...
分类:
编程语言 时间:
2014-07-29 14:35:28
阅读次数:
452