题目大意:给定一个长度为 N 的序列,每个位置有一个权值,现选出一些点,满足相邻的 M 个点中至多有 Q 个点被选择,求选出点权的最大值是多少。 题解:若没有相邻的限制,这道题类似于子集和问题,即:背包问题。考虑相邻的限制,对于每个点可以记录下一个状态,代表以这个点结束,向前 M 个点的选择情况,0 ...
分类:
其他好文 时间:
2019-05-02 23:07:43
阅读次数:
175
//
// main.cpp
// hiho1044
//
// Created by Fangpin on 15/4/28.
// Copyright (c) 2015年 FangPin. All rights reserved.
//
#include
#include
#include
using namespace std;
int n,m,q;
int dp[1005][...
分类:
其他好文 时间:
2015-04-29 15:10:45
阅读次数:
117
链接:https://leetcode.com/problems/house-robber/
这道理可以看做是状态压缩,每两个数字看做是一行,状态有3个,故需要F[N][3]的数组,F[i][j]就表示第i行状态j时rob的money。
具体状态压缩可以看我这两篇blog: 算法练习系列—hiho1048 状态压缩一(铺地砖) 算法练习系列—hiho1044 状态压缩二(捡垃圾)
#inc...
分类:
其他好文 时间:
2015-04-01 20:03:09
阅读次数:
166
题目地址:http://hihocoder.com/problemset/problem/1044
算法思路:此题可以看做是铺地砖的变形,没有明显的行数和状态,但是我们可以自己将其中的行和状态给扣出来。其中第一行就是N个数的中前(0,1,2…M-1), 第二行就是(2,3..M)…一直到最后一行为(N-M…N)。每一行的状态个数即为2^M-1(即这M个位置要么填写1,要么填写0)。此时可用...
分类:
编程语言 时间:
2015-03-08 21:36:21
阅读次数:
187