三校联训 【NOIP模拟】寻找
题面
“我有个愿望,我希望穿越一切找到你。”
这是个二维平面世界,平面上有n个特殊的果实,我从(0,0)点出发,希望得到尽量多的果实,但是出于某种特殊的原因,我的运动方式只有三种(假设当前我在(x,y)):
1、我可以走到(x+1,y)
2、我可以走到(x,y+1)
3、我可以走到(x+1,y+1)
现在我需要你的帮助,帮我找出我最多能够得到多少个果实。
对于70%的数据1<=n<=1000
对于100%的数据1<=n<=100000,-10^9<=x,y<=10^9
题解:
我是沙雕地把它离散化按x排序,在求y的LIS,利用树状数组优化。
#include <bits/stdc++.h>
using namespace std;
struct haha{
int x;
int y;
}lala[],fin[],tmp[];
bool cmp(haha x,haha y)
{
if(x.x==y.x) return x.y<y.y;
return x.x<y.x;
}
bool cmp2(haha x,haha y)
{
if(x.y==y.y) return x.x<y.x;
return x.y<y.y;
}
int n;
inline int lowbit(register int x)
{
return x&(-x);
}
int c[];
inline void add(register int x,register int v)
{
while(x<=n){
c[x]=max(c[x],v);
x+=lowbit(x);
}
return;
}
inline int ask(int x)
{
register int res=;
while(x>){
res=max(res,c[x]);
x-=lowbit(x);
}
return res;
}
int f[];
int main()
{
cin>>n;
int num=;
for(register int i=;i<=n;i++){
int a,b;
scanf("%d%d",&a,&b);
if(a<||b<){
continue;
}
lala[++num].x=a;
lala[num].y=b;
}
n=num;
sort(lala+,lala++n,cmp);
for(register int i=;i<=n;i++){
tmp[i]=lala[i];
tmp[i].x=i;
}
sort(tmp+,tmp++n,cmp2);
tmp[].y=;
for(register int i=;i<=n;i++){
fin[i]=tmp[i];
if(tmp[i].y==tmp[i-].y){
fin[i].y=fin[i-].y;
}
else{
fin[i].y=i;
}
}
sort(fin+,fin++n,cmp);
for(register int i=;i<=n;i++){
int now=fin[i].y;
int found=ask(now);
int op=found+;
f[i]=op;
add(now,op);
}
register int maxn=;
for(register int i=;i<=n;i++){
maxn=max(maxn,f[i]);
}
cout<<maxn;
}
/*
8
0 1
1 0
1 5
2 5
3 4
3 1
5 1
5 4
*/
三校联训 【NOIP模拟】寻找的更多相关文章
- 三校联训 小澳的葫芦(calabash) 题解
题面:小澳的葫芦[ 题目描述]小澳最喜欢的歌曲就是<葫芦娃>.一日表演唱歌,他尽了洪荒之力,唱响心中圣歌.随之,小澳进入了葫芦世界.葫芦世界有 n 个葫芦,标号为 1~ n. n 个葫芦由 ...
- NOI.AC NOIP模拟赛 第三场 补记
NOI.AC NOIP模拟赛 第三场 补记 列队 题目大意: 给定一个\(n\times m(n,m\le1000)\)的矩阵,每个格子上有一个数\(w_{i,j}\).保证\(w_{i,j}\)互不 ...
- 【入门OJ】2003: [Noip模拟题]寻找羔羊
这里可以复制样例: 样例输入: agnusbgnus 样例输出: 6 这里是链接:[入门OJ]2003: [Noip模拟题]寻找羔羊 这里是题解: 题目是求子串个数,且要求简单去重. 对于一个例子(a ...
- NOIP模拟赛 篮球比赛2
篮球比赛2(basketball2.*) 由于Czhou举行了众多noip模拟赛,也导致放学后篮球比赛次数急剧增加.神牛们身体素质突飞猛进,并且球技不断精进.这引起了体育老师彩哥的注意,为了给校篮球队 ...
- NOIP模拟 17.8.18
NOIP模拟17.8.18 A.小菜一碟的背包[题目描述]Blice和阿强巴是好朋友但萌萌哒Blice不擅长数学,所以阿强巴给了她一些奶牛做练习阿强巴有 n头奶牛,每头奶牛每天可以产一定量的奶,同时也 ...
- NOIP模拟 17.8.16
NOIP模拟17.8.16 A 债务文件名 输入文件 输出文件 时间限制 空间限制debt.pas/c/cpp debt.in debt.out 1s 128MB[题目描述]小 G 有一群好朋友,他们 ...
- noip模拟23[联·赛·题]
\(noip模拟23\;solutions\) 怎么说呢??这个考试考得是非常的惨烈,一共拿了70分,为啥呢 因为我第一题和第三题爆零了,然后第二题拿到了70分,还是贪心的分数 第一题和第二题我调了好 ...
- noip模拟12[简单的区间·简单的玄学·简单的填数]
noip模拟12 solutions 这次考试靠的还是比较好的,但是还是有不好的地方, 为啥嘞??因为我觉得我排列组合好像白学了诶,文化课都忘记了 正难则反!!!!!!!! 害没关系啦,一共拿到了\( ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
随机推荐
- C# 获取系统信息
public string GetMyOSName() { //获取当前操作系统信息 OperatingSystem MyOS = Envir ...
- python类装饰器即__call__方法
上一篇中我对学习过程中的装饰器进行了总结和整理,这一节简单整理下类装饰器 1.类中的__call__方法: 我们在定义好一个类后,实例化出一个对象,如果对这个对象以直接在后边加括号的方式进行调用,程序 ...
- java @Value注解 和 @Data注解
@Value注解 service层代码 @Service public class HelloServiceImpl implements HelloService { @Autowired priv ...
- Idea如何生成JPA的相关model,以及运行JPA项目的时候启动错误
1.如何生成JPAmodel 按照顺序执行下面的步骤 为指定的项目添加JPA的配置,这样之后生成的model就会在指定的项目内 选择JPA之后默认不用操作直接添加 没有Persistence的可以在w ...
- 套接字之select系统调用
select是IO多路复用的一种方式,用来等待一个列表中的多个描述符的可读可写状态: SYSCALL_DEFINE5(select, int, n, fd_set __user *, inp, fd_ ...
- Mysql 中需不需要commit
摘自:https://blog.csdn.net/zzyly1/article/details/81003122 mysql在进行增删改操作的时候需不需要commit,这得看你的存储引擎, 如果是不支 ...
- 排序算法总结(java实现)
排序算法 介绍:排序分为内部排序和外部排序,内部排序指在内存中进行的排序过程:外部排序指在外存中进行排序的过程,但是此过程建立在多次访问内存的基础上(分成一段段利用内部排序进行排序). 以下排序均属于 ...
- leetcode-easy-trees-102. Binary Tree Level Order Traversal-YES
mycode 98.56% # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x ...
- 浏览器端-W3School-HTML:HTML DOM Meta 对象
ylbtech-浏览器端-W3School-HTML:HTML DOM Meta 对象 1.返回顶部 1. HTML DOM Meta 对象 Meta 对象 Meta 对象代表 HTML 的 一个 & ...
- kotlin之字符串模板
所谓字符串模板就是在字符串中添加若干个占位符,内容会在后期指定,也就是说,用模板可以设置字符串动态的部分,模板使用美元符号$设置如i=$i 中 的$i就是一个占位符,其中4后面的i是变量,随着i的变化 ...