J - FatMouse's Speed
p的思路不一定要到最后去找到ans;也可以设置成在中间找到ans;比如J - FatMouse's Speed 这个题,如果要是让dp[n]成为最终答案的话,即到了i,最差的情况也是dp[i-1],就很难去保存路径,但是如果换一个思路,让dp[i]必须去参与,如果无法与前面的结合,那么就新开一个。
最后路径是保存的逆序的,那么开一个stack就可以解决。
//显然这个题是要维护两个变量的最长上升子序列
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstring>
#include <fstream>
#include <stack> using namespace std;
//ifstream fin("a.txt");
struct node{
int weight,speed,num;
}a[];
bool cmp(node a,node b)
{
if(a.weight==b.weight)
return a.speed>b.speed;
else return a.weight<b.weight;
}
struct Node{
int cnt,now,pre;
}dp[];
int pre[];
int main()
{
int x,y;int i=;
while(cin>>x>>y)
{
a[i].weight=x;a[i].speed=y,a[i].num=i;i++;
}
sort(a+,a+i,cmp);
dp[].cnt=;
for(int j=;j<=i-;j++)
{
dp[j].cnt=;
for(int k=j-;k>=;k--)
{
if(a[j].speed<a[k].speed&&a[j].weight>a[k].weight)
{
if(dp[j].cnt<dp[k].cnt+)
{
dp[j].cnt=dp[k].cnt+;
dp[j].pre=k;
dp[j].now=a[j].speed;
}
}
}
}
int ans=;
int m=i-;
for(int j=;j<=i-;j++)
{
if(ans<dp[j].cnt)
{
ans=dp[j].cnt;
m=j;
}
} cout <<ans<<endl; stack <int> s;
s.push(a[m].num);ans--;
while(ans--)
{
s.push(a[dp[m].pre].num);
m=dp[m].pre;
}
while(!s.empty())
{
cout << s.top()<<endl;
s.pop();
}
return ;
}
J - FatMouse's Speed的更多相关文章
- J - FatMouse's Speed dp
题目链接: https://vjudge.net/contest/68966#problem/J 找最长子串并且记录路径. TLE代码: #include<iostream> #inclu ...
- FatMouse's Speed——J
J. FatMouse's Speed FatMouse believes that the fatter a mouse is, the faster it runs. To disprove th ...
- FatMouse's Speed
J - FatMouse's Speed DP的题写得多了慢慢也有了思路,虽然也还只是很简单的DP. 因为需要输出所有选择的老鼠,所以刚开始的时候想利用状态压缩来储存所选择的老鼠,后面才发现n太大1& ...
- HDU 1160 FatMouse's Speed(要记录路径的二维LIS)
FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- HDU 1160 FatMouse's Speed (DP)
FatMouse's Speed Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Su ...
- FatMouse's Speed(HDU LIS)
FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- FatMouse's Speed 基础DP
FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- zoj 1108 FatMouse's Speed 基础dp
FatMouse's Speed Time Limit: 2 Seconds Memory Limit:65536 KB Special Judge FatMouse believe ...
- HDU 1160:FatMouse's Speed(LIS+记录路径)
FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
随机推荐
- WinForm之窗体应用程序
WinForm之窗体应用程序 基本简单数据库操作(增删改查) using System; using System.Collections.Generic; using System.Windows. ...
- textarea输入框限制字数
<textarea onkeyup="checkLen(this)"></textarea> <div>您还可以输入 <span id=& ...
- mac+php+nginx+laravel配置启动
首先保证mac安装php,nginx,composer 根据laravel中文文档进行安装 http://laravelacademy.org/post/6665.html 直接指向 composer ...
- VMware workstation 14 Pro下载、安装及激活码
虚拟机安装 1.百度搜索VMware应用程序 2.功能介绍 3.下载完成 4.开始安装 双击应用程序开始安装 5.点击“下一步” 6.勾选“我接受” 选择“下一步” 7.安装文件的选择:1.默认安装路 ...
- oracle数据导入导出数据与编码格式不正确
1.导入dmp文件 imp ZHCG/ZHCG@ORCL file=E:\20160902.1007.dmp full=y 2.导出数据 exp system/manager@ORCL file ...
- C++关于运算符的注意事项
1.函数调用也是一种特殊的运算符,对运算对象的个数不作限制. 2.几元运算符,是基于作用的对象的数量. 3.不同类型的运算对象进行运算,可能会出现类型转换,一般情况下小整数类型会被转换成较大的整数类型 ...
- (C/C++学习笔记) 五. 常变量(只读变量)和宏
五. 常变量(只读变量)和宏 ● 常变量 常变量 #include <iostream.h> //预处理文件 int main() { const d ...
- 依赖倒置(DIP)、控制反转(IOC)和依赖注入(DI)
原文: https://blog.csdn.net/briblue/article/details/75093382 写这篇文章的原因是这两天在编写关于 Dagger2 主题的博文时,花了大量的精力来 ...
- CentOS7配置crate集群
一:编辑配置文件: 1.1配置文件: vim /etc/crate/crate.yml 1.2编辑crate.yml 的集群名称在166行附近: cluster.name: crate-xxx 1.3 ...
- 10个HTML5美化版复选框和单选框
单选框Radiobox和复选框checkbox在网页中也十分常见,虽然它没有按钮的交互性强,但是如果能把它们像按钮那样美化一下,那也是非常不错的.本文收集了10个相对比较漂亮的美化版单选框和复选框,希 ...