nyoj201 作业题
作业题
- 描述
-
小白同学这学期有一门课程叫做《数值计算方法》,这是一门有效使用数字计算机求数学问题近似解的方法与过程,以及由相关理论构成的学科……
今天他们的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的过程,动态转移方程 DP [ i ] = MAX ( DP [ i ] , DP [ i - 1 ] + 1),代码:
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
#define MAX(a,b) a>b?a:b
struct Node
{
int x,y;
};
Node map[1050];
int cmp(Node a,Node b)
{
if(a.x!=b.x)
return a.x<b.x;
}
int DP[1050],DP1[1050];
int main()
{
int T,N;
scanf("%d",&T);
while(T--)
{
scanf("%d",&N);
for(int i=0;i<N;i++){
scanf("%d%d",&map[i].x,&map[i].y);
DP[i]=1;DP1[i]=1;
}
sort(map,map+N,cmp);
for(int i=N-2;i>=0;i--)
for(int j=i+1;j<N;j++)
{
if(map[j].y>map[i].y)
DP[i]=MAX(DP[i],DP[j]+1);
if(map[j].y<map[i].y)
DP1[i]=MAX(DP1[i],DP1[j]+1);
}
printf("%d\n",MAX(*max_element(DP,DP+N),*max_element(DP1,DP1+N)));
}
return 0;
}
nyoj201 作业题的更多相关文章
- NYOJ201作业题
作业题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小白同学这学期有一门课程叫做<数值计算方法>,这是一门有效使用数字计算机求数学问题近似解的方法与过程, ...
- [ python ] 字符串的操作及作业题
字符串的操作方法 capitalize() : 首字母大写 s1 = 'my heart will go on' print(s1.capitalize()) # 首字母大写 # 执行结果: # My ...
- nyoj 作业题 dp
作业题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小白同学这学期有一门课程叫做<数值计算方法>,这是一门有效使用数字计算机求数学问题近似解的方法与过程, ...
- NYOJ 201 作业题
作业题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 小白同学这学期有一门课程叫做<数值计算方法>,这是一门有效使用数字计算机求数学问题近似解的方法与过 ...
- 作业题:闰年 if((year%4==0&&year%100!=0)||year&400==0)
作业题:闰年 if((year%4==0&&year%100!=0)||year&400==0)
- python27期day14:有参装饰器、多个装饰器装饰一个函数、递归、作业题
1.有参装饰器:给装饰器添加一个参数.来控制装饰器的行为. @auth(参数) auth里层的函数名 = auth(参数) 被装饰的函数名 = auth里层的函数名(被装饰的函数名) 被装饰的函数名( ...
- python27期day13:闭包、装饰器初始、标准版装饰器、作业题
1.闭包: 保护数据安全.保护数据干净性. 2.闭包的定义:在嵌套函数内.使用非全局变量(且不使用本层变量) 将嵌套函数返回 闭包的目的:要接受被装饰的函数和被装饰函数需要的参数3.闭包举例子: de ...
- python27期day12:推导式、内置函数、高阶函数、匿名函数、作业题
1.推导式:做一些有规律的数据结构 列表推导式: 普通循环模式: [加工后的变量 for 循环] 示例一:print([i for i in range(1,51)]) 结果:[1, 2, 3, 4, ...
- python27期day11:f-strings格式化、迭代器、生成器、作业题。
1.建议小写f: name = "宝元"age = 18sex = "男"msg = F"姓名:{name},性别:{age},年龄:{sex}&qu ...
随机推荐
- android学习——GestureDetector.OnGestureListener 详解
Android Touch Screen 与传统Click Touch Screen不同,会有一些手势(Gesture),例如Fling,Scroll等等.这些Gesture会使用户体验大大提升.An ...
- Tomcat全攻略
内容: 一:简单介绍 二:安装及配置 三:应用 四:综述 參考资料 关于作者 相关内容: TCP/IP 介绍 TCP/IP 介绍 !== End Related dW Content Area --& ...
- Java当中的运算符
一.关于Java当中运算符的分类 算术运算符:+,-,*,/.%(是取余运算符读莫).++.-- 关系运算符:>.<.>=.<=.!=(不等).==(等于) 布尔运算符:!(非 ...
- DefaultResouceLoader的设计
它是什么 DefaultResourceLoader是Spring中的ResourceLoader的默认实现类,也是AbstractApplicationContext的父类,它也可以单独使用,用来从 ...
- VMware Virtual Machine安装报错解决1
安装完VMware virtual machine 后,再进行 "create a new virtual machine"最后点击"Finish"时,报如下错 ...
- 小学生之Log4j使用教程
以前都是把所有日志都输出到一个文件下面,今天有个同事问想把某个包下的日志输出到 指定的地方,于是就在网上查了一些资料,总结一下,以免以后用到. 一.log4j是什么? Log4j是一个开源的日志记录 ...
- tmux environment keep
Shell 下 tmux 不能保持 PATH 变量,解决方法如下: 添加如下配置信息到 ~/.tmux.conf 中即可. set-option -ga update-environment PATH ...
- <div> 如何布局两个标签的布局
想做一个div的曾背景颜色是黄绿色,内部有<a>标签. 代码如下: <div align="center" style=" width: 900px;h ...
- 64位系统 IIS不支持 Excel导入的问题
64位系统不支持读取excel的问题: 应用程序池-常规选项 启用32应用程序 启用23应用程序是为了保证32应用程序能够正常运行
- abstract修饰符,具体类与抽象类的区别
abstract修饰符 abstract可以修饰类,表示一个抽象类,注意:抽象类和具体类唯一的区别:类不能创建对象,而具体类是可以创建对象的 1.具体类有构造方法,抽象类也有构造方法 2.具体类可以有 ...