洛谷 P2362 围栏木桩
题目描述
某农场有一个由按编号排列的n根木桩构成的首尾不相连的围栏。现要在这个围栏中选取一些木桩,按照原有的编号次序排列之后,这些木桩高度成一个升序序列。所谓的升序序列就是序列中的任何一个数都不小于它之前的任何一个数。试编写程序从这个围栏中选取合适的木桩使得选出的木桩个数t最大,并求出选取出t根木桩的方案总数c。
输入输出格式
输入格式:
文件中的第一行只有一个数m,表明随后有m个问题的描述信息。每个问题的描述信息格式为n h1,h2,h3,…,hn(其中hi(i=1,2,3,…,n)表示第i根木桩的高度。)
输出格式:
依次输出每个问题中t和c的解。每行输出一个问题的解。
输入输出样例
3
9 10 1 9 8 7 6 3 4 6
3 100 70 102
6 40 37 23 89 91 12
4 1
2 2
3 3
说明
m\le 5,n\le 20,h_i\le 150m≤5,n≤20,hi≤150
序列dp
dp入门中。。
#include <cstring>
#include <cstdio>
int max(int a,int b) {return a>b?a:b;}
int Max,m,f[],h[],ans[];
int main()
{
scanf("%d",&m);
for(int n;m--;)
{
scanf("%d",&n);
int Max=;
memset(f,,sizeof(f));
memset(ans,,sizeof(ans));
for(int i=;i<=n;i++)
scanf("%d",&h[i]),f[i]=,ans[i]=;
for(int i=;i<=n;i++)
{
for(int j=i-;j>=;j--)
{
if(h[i]>=h[j])
{
if(f[i]<f[j]+)
{
f[i]=f[j]+;
ans[i]=ans[j];
}
else if(f[i]==f[j]+)
ans[i]++;
}
}
}
int Ans=;
for(int i=;i<=n;i++)
{
if(f[i]==Max) Ans+=ans[i];
else if(f[i]>Max)
{
Max=f[i];
Ans=ans[i];
}
}
printf("%d %d\n",Max,Ans);
}
return ;
}
洛谷 P2362 围栏木桩的更多相关文章
- 洛谷P2362 围栏木桩----dp思路
在翻dp水题的时候找到的有趣的题0v0 原文>>https://www.luogu.org/problem/show?pid=2362<< 题目描述 某农场有一个由按编号排列的 ...
- AC日记——围栏木桩 洛谷 P2362
围栏木桩 思路: DP: 代码: #include <bits/stdc++.h> using namespace std; #define maxn 2001 int n,m,ai[ma ...
- 洛谷1578:[WC2002]奶牛浴场——题解
https://www.luogu.org/problemnew/show/P1578#sub 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建 ...
- [WC2002][洛谷P1578]奶牛浴场
洛谷题解里那个人可真是话多呢. 题目描述 由于John建造了牛场围栏,激起了奶牛的愤怒,奶牛的产奶量急剧减少.为了讨好奶牛,John决定在牛场中建造一个大型浴场.但是John的奶牛有一个奇怪的习惯,每 ...
- 洛谷1640 bzoj1854游戏 匈牙利就是又短又快
bzoj炸了,靠离线版题目做了两道(过过样例什么的还是轻松的)但是交不了,正巧洛谷有个"大牛分站",就转回洛谷做题了 水题先行,一道傻逼匈牙利 其实本来的思路是搜索然后发现写出来类 ...
- 洛谷P1352 codevs1380 没有上司的舞会——S.B.S.
没有上司的舞会 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description Ural大学有N个职员,编号为1~N.他们有 ...
- 洛谷P1108 低价购买[DP | LIS方案数]
题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则.要想被认为是伟大的投资者,你必须遵循以下的问题建议:“低价购买:再低价购买”.每次你购买一支股票,你必须用低于你上次购买它的价格购买它 ...
- 洛谷 P2701 [USACO5.3]巨大的牛棚Big Barn Label:二维数组前缀和 你够了 这次我用DP
题目背景 (USACO 5.3.4) 题目描述 农夫约翰想要在他的正方形农场上建造一座正方形大牛棚.他讨厌在他的农场中砍树,想找一个能够让他在空旷无树的地方修建牛棚的地方.我们假定,他的农场划分成 N ...
- 洛谷P1710 地铁涨价
P1710 地铁涨价 51通过 339提交 题目提供者洛谷OnlineJudge 标签O2优化云端评测2 难度提高+/省选- 提交 讨论 题解 最新讨论 求教:为什么只有40分 数组大小一定要开够 ...
随机推荐
- iOS中判断基础字符(大小写、数字等的判断)
函数:isdigit 用法:#include 功能:判断字符c是否为数字 说明:当c为数字0-9时,返回非零值,否则返回零. 函数:islower 用法:#include 功能:判断字符c是否为小写英 ...
- CreateEx
virtual BOOL CreateEx( DWORD dwExStyle, LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyle ...
- Spring-SpringMVC-Mybatis实例
源码下载:https://pan.baidu.com/s/1kUK7qYj 提取码:3mgb 最近在学习SSM框架,先讲一下这三大框架都有什么作用. SpringMVC: 它用于web层,相当于 ...
- PHP实用小程序(三)
<HTML> <HEAD> <TITLE>给数组增加元素</TITLE> </HEAD> <? $Cities[] = "& ...
- PHP中正则表达式学习及应用(四)
正则表达式在PHP中的应用 1.匹配功能 2.替换功能 3.分割功能 例如: <?php $str="addsds{title}hfksjd{author}hfjdkjd{conn}j ...
- 阻塞调用ShellExecute函数
SHELLEXECUTEINFO si;ZeroMemory(&si, sizeof(si));si.cbSize = sizeof(si);si.fMask = SEE_MASK_NOCLO ...
- Lightoj1122 【数位DP】
题意: 给你m个数,让你在里面挑n个组合,保证位数相差不超过2,求能够组合多少种情况: 思路: dp[i][j]代表第i个结尾为j的方案数. #include<bits/stdc++.h> ...
- 多线程Demo1 了解
首先演示一下主线程的阻塞 // DYFViewController.m // 623-01-阻塞多线程 // // Created by dyf on 14-6-23. // Copy ...
- C语言提高代码效率的几种方法
一段完美的代码不仅在于找到一个给定的问题的解决方案,但在它的简单性,有效性,紧凑性和效率(内存).设计的代码比实际执行更难.因此,每一个程序员当用C语言开发时,都应该保持这些基本的东西在头脑中.本文向 ...
- 执行gulp build报错
问题与分析 在执行gulp build报错如下: D:\coding\Resume\Resumes>gulp build gulp build[5628]: src\node_contextif ...