NYOJ201-作业题-(dp)
201-作业题
内存限制:64MB 时间限制:3000ms 特判: No
通过数:9 提交数:28 难度:3
题目描述:
小白同学这学期有一门课程叫做《数值计算方法》,这是一门有效使用数字计算机求数学问题近似解的方法与过程,以及由相关理论构成的学科……
今天他们的Teacher S,给他们出了一道作业题。Teacher S给了他们很多的点,让他们利用拉格朗日插值公式,计算出某严格单调函数的曲线。现在小白抄下了这些点,但是问题出现了,由于我们的小白同学上课时走了一下神,他多抄下来很多点,也就是说这些点整体连线不一定还是严格递增或递减的了。这可怎么处理呢。为此我们的小白同学制定了以下的取点规则:
1、取出尽可能多的满足构成严格单调曲线的点,作为曲线上的点。
2、通过拉格朗日插值公式,计算出曲线的方程
但是,他又遇到了一个问题,他发现他写下了上百个点。[- -!佩服吧],这就很难处理了(O_O).。由于拉格朗日插值公式的计算量与处理的点数有关,因此他请大家来帮忙,帮他统计一下,曲线上最多有多少点,以此来估计计算量。
已知:没有任何两个点的横坐标是相同的。
输入描述:
本题包含多组数据:
首先,是一个整数T,代表数据的组数。
然后,下面是T组测试数据。对于每组数据包含两行:
第一行:一个数字N(1<=N<=999),代表输入的点的个数。
第二行:包含N个数对X(1<=x<=10000),Y(1<=Y<=10000),代表所取的点的横纵坐标。
输出描述:
每组输出各占一行,输出公一个整数,表示曲线上最多的点数
样例输入:
2
2
1 2 3 4
3
2 2 1 3 3 4
样例输出:
2
2
解题过程:对点按横坐标排序后用两次dp求最长上升子序列和最长下降子序列,取最值。
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
#include<string>
#include<vector>
#include<iostream>
#include<cstring>
#define inf 0x3f3f3f3f
using namespace std;
#define ll long long int n;
int dp1[],dp2[];
int maxx1,maxx2;
int ans;
struct node
{
int x;
int y;
};
node a[]; bool cmp(node p1,node p2)
{
return p1.x<p2.x;
} int main()
{
int t;
scanf("%d",&t);
while(t--)
{
memset(dp1,,sizeof(dp1));
memset(dp2,,sizeof(dp2));
scanf("%d",&n);
for(int i=;i<n;i++)
scanf("%d%d",&a[i].x,&a[i].y);
sort(a,a+n,cmp);
ans=-;
for(int i=;i<n;i++)
{
maxx1=;maxx2=;
for(int j=;j<i;j++)
{
if( a[i].y > a[j].y && maxx1<dp1[j] )
maxx1=dp1[j];
if( a[i].y < a[j].y && maxx2<dp2[j] )
maxx2=dp2[j];
}
dp1[i]=maxx1+;
dp2[i]=maxx2+;
ans=max(ans,dp1[i]);
ans=max(ans,dp2[i]);
}
printf("%d\n",ans);
}
return ;
}
NYOJ201-作业题-(dp)的更多相关文章
- nyoj201 作业题
作业题 时间限制: 3000 ms | 内存限制: 65535 KB 难度: 3 描述 小白同学这学期有一门课程叫做<数值计算方法>,这是一门有效使用数字计算机求数学问题近似解的方 ...
- NYOJ201作业题
作业题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小白同学这学期有一门课程叫做<数值计算方法>,这是一门有效使用数字计算机求数学问题近似解的方法与过程, ...
- nyoj 作业题 dp
作业题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小白同学这学期有一门课程叫做<数值计算方法>,这是一门有效使用数字计算机求数学问题近似解的方法与过程, ...
- 【BZOJ-2732】集合选数 状压DP (思路题)
2734: [HNOI2012]集合选数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1070 Solved: 623[Submit][Statu ...
- bzoj 2734: [HNOI2012]集合选数 状压DP
2734: [HNOI2012]集合选数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 560 Solved: 321[Submit][Status ...
- BZOJ_2734_[HNOI2012]集合选数_构造+状压DP
BZOJ_2734_[HNOI2012]集合选数_构造+状压DP 题意:<集合论与图论>这门课程有一道作业题,要求同学们求出{1, 2, 3, 4, 5}的所有满足以 下条件的子集:若 x ...
- [HNOI2012]集合选数 --- 状压DP
[HNOI2012]集合选数 题目描述 <集合论与图论>这门课程有一道作业题,要求同学们求出\({1,2,3,4,5}\)的所有满足以 下条件的子集:若 x 在该子集中,则 2x 和 3x ...
- 【BZOJ-2734】集合选数 状压DP (思路题)
2734: [HNOI2012]集合选数 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1070 Solved: 623[Submit][Statu ...
- NYOJ 201 作业题
作业题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小白同学这学期有一门课程叫做<数值计算方法>,这是一门有效使用数字计算机求数学问题近似解的方法与过 ...
随机推荐
- C# .NET Web Api 保存Session
Global.asax中添加: public override void Init() { this.PostAuthenticateRequest += (sender, e) => Http ...
- jquery IE中加载xml
$.ajax({ url: 'xml/myXML.xml', dataType: ($.browser.msie) ? "text" : "xml", time ...
- RPC通信原理
什么是 RPCRPC(Remote Procedure Call Protocol)远程过程调用协议.通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算上的某个过程或函数,就像调用本地应 ...
- linux 打压缩包
tar命令 解包:tar zxvf FileName.tar 打包:tar czvf FileName.tar DirName gz命令 解压1:gunzip FileName.gz 解压2:gzip ...
- python时间日期字符串各种
python时间日期字符串各种 第一种 字符串转换成各种日期 time 库 # -*- coding: utf-8 -*- import time, datetime # 字符类型的时间 tss1 = ...
- Timer TimerTask schedule scheduleAtFixedRate
jdk 自带的 timer 框架是有缺陷的, 其功能简单,而且有时候它的api 不好理解. import java.util.Date; import java.util.Timer; import ...
- feign client 的简单使用(1)
依赖: <properties> <java.version>1.8</java.version> <feign-core.version>10.2.0 ...
- <table>导出excal
<table>导出excal 将<table>导出为excal文件,这里介绍两种方法. 1.直接写代码,拼接出excal文件的字符串,然后直接用a标签下载.本人没有是试过,在此 ...
- Vue.js——使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用
转自:https://www.cnblogs.com/keepfool/p/5665953.html 概述 上一篇我们介绍了如何使用vue resource处理HTTP请求,结合服务端的REST AP ...
- react-native android 和ios 集成 jpush-react-native 激光推送
安装 $ npm install jpush-react-native --save # jpush-react-native 版本以后需要同时安装 jcore-react-native $ npm ...