HDU - 1257 最少拦截系统 (dp)
2017-11-26 15:24
344 查看
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1257
题意:中文题0.0
思路:dp【i】表示前i个高度最少需要多少个系统,a【i】表示第i个系统的当前高度(最矮高度),每次只需要顺序遍历a就可以知道需不需要新的系统,具体看代码
代码:
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1
using namespace std;
typedef long long LL;
typedef pair<LL, LL> P;
const int maxn = 1e5 + 5;
const int mod = 1e8 + 7;
int n;
int dp[maxn];
int a[maxn];
int main() {
while (~scanf ("%d",&n)){
memset(dp,0,sizeof(dp));
int k=0;
for (int i=1;i<=n;i++){
int x;
scanf ("%d",&x);
bool flag=0;
for (int j=1;j<=k;j++){
if (x<=a[j]){
dp[i]=dp[i-1];
a[j]=x;
flag=1;
break;
}
}
if (!flag){
dp[i]=dp[i-1]+1;
a[++k]=x;
}
}
printf ("%d\n",dp
);
}
return 0;
}
题意:中文题0.0
思路:dp【i】表示前i个高度最少需要多少个系统,a【i】表示第i个系统的当前高度(最矮高度),每次只需要顺序遍历a就可以知道需不需要新的系统,具体看代码
代码:
#include <bits/stdc++.h>
#define INF 0x3f3f3f3f
#define lson l, m, rt<<1
#define rson m+1, r, rt<<1|1
using namespace std;
typedef long long LL;
typedef pair<LL, LL> P;
const int maxn = 1e5 + 5;
const int mod = 1e8 + 7;
int n;
int dp[maxn];
int a[maxn];
int main() {
while (~scanf ("%d",&n)){
memset(dp,0,sizeof(dp));
int k=0;
for (int i=1;i<=n;i++){
int x;
scanf ("%d",&x);
bool flag=0;
for (int j=1;j<=k;j++){
if (x<=a[j]){
dp[i]=dp[i-1];
a[j]=x;
flag=1;
break;
}
}
if (!flag){
dp[i]=dp[i-1]+1;
a[++k]=x;
}
}
printf ("%d\n",dp
);
}
return 0;
}
相关文章推荐
- hdu 1257 最少拦截系统 (DP)
- HDU 1257 最少拦截系统 DP
- HDU 1257 最少拦截系统 DP -
- HDU 1257 最少拦截系统(贪心 || dp)
- HDU-1257 杭电 最少拦截系统——二分优化的DP算法(需回头理解)
- dp基础-2 N - Longest Ordered Subsequence POJ - 2533+ HDU - 1257最少拦截系统
- hdu 1257 最少拦截系统(简单dp+贪心)
- HDU 1257 最少拦截系统【贪心】【DP】
- HDU 1257 最少拦截系统(dp)
- HDU:1257 最少拦截系统(贪心+动态规划DP||LIS?)
- 【基础dp】HDU 1257 最少拦截系统
- HDU 1257 最少拦截系统【dp】
- 【HDU】-1257-最少拦截系统-(贪心||DP)
- HDU 1257 最少拦截系统 dp 最长上升子序列
- 【dp-LIS】HDU 1257 最少拦截系统 (LIS模板题)
- hdu 1257 最少拦截系统 dp
- HDU 1257 最少导弹拦截系统(DP)
- hdu 1257 最少拦截系统(dp)
- HDU 1257 最少拦截系统(LIS,DP,附宇神讲课笔记)
- HDU 1257 最少拦截系统 DP