点击打开题目链接

本题目是考察  最长递增子序列的  有n^2     n(logn)  n^2  会超时的

下面两个方法的代码  思路  可以百度LIS  LCS

dp里面存子序列

n(logn)   代码

<span style="font-size:18px;">#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
#define N 500000
using namespace std; int road[N],dp[N],n,len; int two_part(int *a,int L,int R, int aim) //二分法找更新的位置
{
int zz;
if(len==1&&dp[1]==0) return 1;
while(L<=R)
{
int mid=(L+R)/2;
if(aim>a[mid]&&aim<a[mid+1]) return mid+1;
else if(aim>a[mid]) L=mid+1;
else if(aim<a[mid]) R=mid-1;
}
if(aim<=dp[1]) return 1; //目标数字比第一个数小则更新dp[1]
return ++len; //找不到则在末尾更新
}
int ans()
{
int i;
for(i=1; i<=n; i++) //把每个数字在dp数组中更新
{
int wz=two_part(dp,1,len,road[i]);
dp[wz]=road[i];
// print();
}
return len;
} int main()
{
int t=1;
while(scanf("%d",&n)!=EOF)
{
int i;
len=1;
memset(road,0,sizeof(road));
memset(dp,0,sizeof(dp));
for(i=1; i<=n; i++)
{
int ra,rb;
scanf("%d%d",&ra,&rb);
road[ra]=rb;
}
int answer=ans();
// printf("%d\n",ans());
printf("Case %d:\n",t++);
if(answer==1) printf("My king, at most %d road can be built.\n\n",answer);
else printf("My king, at most %d roads can be built.\n\n",answer);
}
return 0;
}</span>
<span style="font-size:18px;">
</span>

n^2代码

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
#define N 500000
using namespace std; int road[N],dp[N],n; //int two_part(int *a,int L,int R, int aim)
//{
// while(L<=R)
// {
// int mid=(L+R)/2;
// if(aim==a[mid]) return mid;
// else if(aim>mid)
// {
// L=mid+1;
// }
// else
// {
// R=mid-1;
// }
// }
// return -1;
//} int ans()
{
int sum=0;
int i,j;
for(i=0;i<n;i++)
{
j=0;
while(1)
{
if(road[i]<dp[j]||!dp[j])
{
dp[j]=road[i];
break;
}
j++;
}
}
for(i=0;i<n;i++)
if(dp[i]) sum++;
return sum;
} int main()
{
while(scanf("%d",&n)!=EOF)
{
int i;
memset(road,0,sizeof(road));
memset(dp,0,sizeof(dp));
for(i=0;i<n;i++)
{
int ra,rb;
scanf("%d%d",&ra,&rb);
road[ra]=rb;
}
int answer=ans();
// printf("%d\n",ans());
if(answer==1) printf("My king, at most %d road can be built.\n\n",answer);
else printf("My king, at most %d roads can be built.\n\n",answer);
}
return 0;
}

Constructing Roads In JGShining's Kingdom的更多相关文章

  1. Constructing Roads In JGShining's Kingdom(HDU1025)(LCS序列的变行)

    Constructing Roads In JGShining's Kingdom  HDU1025 题目主要理解要用LCS进行求解! 并且一般的求法会超时!!要用二分!!! 最后蛋疼的是输出格式的注 ...

  2. [ACM] hdu 1025 Constructing Roads In JGShining's Kingdom (最长递增子序列,lower_bound使用)

    Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  3. HDU 1025 Constructing Roads In JGShining's Kingdom(二维LIS)

    Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  4. hdu--(1025)Constructing Roads In JGShining's Kingdom(dp/LIS+二分)

    Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  5. Constructing Roads In JGShining's Kingdom(HDU 1025 LIS nlogn方法)

    Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  6. hdu 1025:Constructing Roads In JGShining's Kingdom(DP + 二分优化)

    Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  7. HDOJ(HDU).1025 Constructing Roads In JGShining's Kingdom (DP)

    HDOJ(HDU).1025 Constructing Roads In JGShining's Kingdom (DP) 点我挑战题目 题目分析 题目大意就是给出两两配对的poor city和ric ...

  8. hdu-1025 Constructing Roads In JGShining's Kingdom(二分查找)

    题目链接: Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others)     Memory Li ...

  9. HDU 1025 Constructing Roads In JGShining's Kingdom[动态规划/nlogn求最长非递减子序列]

    Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65 ...

  10. HDU 1025:Constructing Roads In JGShining's Kingdom(LIS+二分优化)

    http://acm.hdu.edu.cn/showproblem.php?pid=1025 Constructing Roads In JGShining's Kingdom Problem Des ...

随机推荐

  1. win10 配置pylucene

    参考文章 http://lxsay.com/archives/269 Windows 10 64 Bit 编译安装 PyLucene 6.2, 6.4 或 6.5 POSTED ON 2017-02- ...

  2. Utuntu 和 window共享文件

    由于自己想用服务器跑代码,数据集和模型一般都在本机电脑上,用实验室服务器需要拷贝数据或者,在服务器上重新下载数据很麻烦 都在局域网内可以实现文件共享,代码和数据都在本地,共享给服务器,只需要使用服务器 ...

  3. C++精华笔记

    牛客微信推送的C++笔记:2016-12-12   14:23:26 1.C++不仅支持面向对象,也可以像C一样支持面向过程. 2.OOP三大特性:封装 继承 多态 3.函数重载依据:函数类型and形 ...

  4. nopCommerce从无到有01-初探nopCommerce

    nopCommerce框架的基本结构: 该结构可以参考DDD(领域驱动设计)模式. (注:上图源自他人文章,具体出处不祥,在此引用,感谢原创) nopcommerce官方地址:http://www.n ...

  5. QQ空间g_tk、bkn加密参数算法

    g_tk是腾讯在QQ空间这一领域使用的密文,有写数据包或者url参数中需要加入你计算出的g_tk才能成功! 下面是通过浏览器抓包工具抓取 访问该js内容找出 QZONE.FrontPage.getAC ...

  6. Linux Kernel Maintainers

    http://en.wikipedia.org/wiki/Ingo_Molnár http://zh.wikipedia.org/wiki/英格·蒙內 Ingo Molnár Ingo Molnár, ...

  7. 生产追溯系统-Wifi+传感器,实现计数器以及监控机器是否停止

    物联网听上去是一个高大上的词儿,还有什么大数据.云.智能制造等等,今天我也往这方面稍微靠一靠,这篇文章主要介绍的是通过 wifi 模块与传感器组合,实现感应计数器,应用场景主要如下: 1.统计 SMT ...

  8. WPF popup控件的使用

    <Window x:Class="WPFPopup.RuntimePopup"     xmlns="http://schemas.microsoft.com/wi ...

  9. echart地图下钻

    需求:展示中国地图,鼠标点击显示对应的省份 在echart的github上下载需要的 地图文件China.js,各个省份的json文件 遇到的问题:直接在浏览器打开报错,跨域问题,用webstrom打 ...

  10. 高速排序及优化(Java版)

    高速排序(Quicksort)是对冒泡排序的一种改进. 高速排序由C. A. R. Hoare在1962年提出. 一次高速排序具体过程: 选择数组第一个值作为枢轴值. 代码实现: package Qu ...