2014年7月30日
摘要: 还是最长上升子序列。。。本题是求队列中任一士兵都能从左边或者右边看到队伍外;即某一士兵左边为上升子序列,右边为下降子序列。求两个序列和,再用总数减去; 1 #include 2 #include 3 #include 4 #include 5 #define maxn 1005 6 usin... 阅读全文
posted @ 2014-07-30 18:20 gfc 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 两个都是最长上升子序列,所以就放一起了1631 因为长度为40000,所以要用O(nlogn)的算法,其实就是另用一个数组c来存储当前最长子序列每一位的最小值,然后二分查找当前值在其中的位置;如果当前点不能作为当前最长子序列的最大值,则更新找到值为两者间的较小值。2533 就是一个裸的最长上升子序列... 阅读全文
posted @ 2014-07-30 17:50 gfc 阅读(150) 评论(0) 推荐(0) 编辑
摘要: dp-背包开始用普通dp写了一发发现没法确定最大时间。。。后来看到大牛机智的写法,嗯。。。dp表示当前状态能否成立;然后从条件最好的状态开始遍历,直到这个状态成立然后退出遍历。具体的看代码吧。。。 1 #include 2 #include 3 #include 4 #include 5 u... 阅读全文
posted @ 2014-07-30 16:12 gfc 阅读(215) 评论(0) 推荐(0) 编辑
摘要: dp 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 struct node { 8 int x,y,h; 9 void init (int nx,int ny,int nh){1... 阅读全文
posted @ 2014-07-30 11:39 gfc 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 动态规划题意可以理解为两个人同时从最左点出发,沿着两条不同的路径走到最右点(除了起点和终点每个点走且仅走一次)状态 dp[i][j]指当前两人分别走到i,j点。且设i>j;则有:dp[i+1][i]=min (dp[i+1][i],dp[i][j]+dist[i][i+1]); dp[i+1]... 阅读全文
posted @ 2014-07-30 09:49 gfc 阅读(382) 评论(0) 推荐(0) 编辑