题目大意

这题建议大家先看看原题是怎么描述的,在看看我讲的中文题面,本来我打算直接翻译的,但是考虑到文字太多,还是算了

原题链接:D. Optical Experiment

我描述的中文题意:

题意化简之后就是一个矩形,上下两边各有 n(1≤n≤106) 个点,每个上边的点只会和下边的一个点相连,构成一条线段,那么就有了 n 条线段,现在问:这 n 条线段中,最多有多少线段,他们两两相交?输出这个最大的线段数量

做法分析

把矩形上边的点依次重新编号(从小到大),下边对应线段的点编上相同的号

假设 m 条线段两两相交,那么这 m 条线段在上边的编号必然是递增的,在下边的编号必然是递减的

那么问题转化成了在下边求一个最长下降的子序列,必须用 nlogn 的做法

PS:这题的关键是题意的转化以及对线段的重新编号,好题!出题人隐藏的太深!

参考代码

Optical Experiment

 1 #include <cstring>
 2 #include <cstdio>
 3 #include <iostream>
 4 #include <map>
 5
 6 using namespace std;
 7
 8 const int N=1000006;
 9
10 map <int, int> ihash;
11 int n, s[N], t[N], f[N], len[N], ans;
12
13 int main()
14 {
15     scanf("%d", &n);
16     for(int i=0; i<n; i++)
17     {
18         scanf("%d", &s[i]);
19         ihash.insert(make_pair(s[i], i+1));
20     }
21     int ans=0;
22     for(int i=0; i<n; i++)
23     {
24         scanf("%d", &t[i]);
25         t[i]=ihash[t[i]];
26     }
27     memset(f, 0, sizeof f);
28     f[0]=1, len[1]=t[0], ans=1;
29     for(int i=1; i<n; i++)
30     {
31         int Min=len[f[i-1]];
32         if(t[i]<Min) len[++ans]=t[i], f[i]=f[i-1]+1;
33         else
34         {
35             int L=1, R=ans;
36             while(L<R)
37             {
38                 int mid=(L+R)>>1;
39                 if(len[mid]<t[i]) R=mid;
40                 else L=mid+1;
41             }
42             if(len[L]<t[i]) L--;
43             L++;
44             len[L]=t[i];
45             f[i]=f[i-1];
46         }
47     }
48     printf("%d\n", ans);
49     return 0;
50 }

题目链接 &  AC通道

CodeForces Manthan 2011 D. Optical Experiment

转载于:https://www.cnblogs.com/zhj5chengfeng/archive/2013/05/10/3072203.html

CodeForces Manthan 2011 D. Optical Experiment(动态规划)相关推荐

  1. Codeforces Beta Round #10 D. LCIS 动态规划

    D. LCIS 题目连接: http://www.codeforces.com/contest/10/problem/D Description This problem differs from o ...

  2. Codeforces 979E Kuro and Topological Parity - 动态规划 - 组合数学

    题目传送门 传送点 题目大意 给定$n$个标号依次为$1, 2, \cdots, n$的点,其中一些点被染成一些颜色,剩下的点没有染色.你需要添加一些有向边并将剩下的点染色,满足有向边从编号小的一端指 ...

  3. codeforces 1197D. Yet Another Subarray Problem 动态规划

    题意 :给你n个数,还有m和k,让你找一个区间使这个公式的值最大   其中⌈x⌉是对x向上取整,l和r是所选的区间的左右下标. 思路 :定义一个dp[i][j],表示第i个数作为右端点,区间长度对m取 ...

  4. 解题报告(十八)数论题目泛做(Codeforces 难度:2000 ~ 3000 + )

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量的题解和代码,题目难度不一 ...

  5. CodeForces - 1208F Bits And Pieces(SOSdp+贪心)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的序列,求出贡献最大的三元对:(i,j,k)(i,j,k)(i,j,k),满足 i<j<ki<j<ki<j<k ...

  6. Manthan, Codefest 19 (open for everyone, rated, Div. 1 + Div. 2) F. Bits And Pieces sosdp预处理超集

    传送门 文章目录 题意: 思路: 题意: n≤1e6,ai≤2e6n\le1e6,a_i\le2e6n≤1e6,ai​≤2e6 思路: 由于(aj&ak)(a_j \And a_k)(aj​& ...

  7. 图像处理与计算机视觉资源汇总——论文+代码+教材+视频等等

    历时一个多月,终于用业余时间把这些资料整理出来了,总算了却了一块心病,也不至于再看着一堆资料发愁了.以后可能会有些小修小补,但不会有太大的变化了.万里长征走完了第一步,剩下的就是理解和消化了.借新浪i ...

  8. 计算机视觉与模式识别方面的代码code

    UIUC的Jia-Bin Huang同学收集了很多计算机视觉方面的代码,链接如下: https://netfiles.uiuc.edu/jbhuang1/www/resources/vision/in ...

  9. latex自动生成中文目录_texpad: 中文输出+自动参考文献生成(bib+bst)

    写在前面:本文仅记录自己在家无聊,接触了下LaTeX. 本文是在MAC下使用Texpad+MacTeX,进行LaTeX编辑, a.输出中文问题,此问题参考自:texpad中如何使用中文?(mac OS ...

最新文章

  1. HTML5 跨文档消息传输
  2. Oracle数据库迁移后变慢,迁移数据之后,读取数据库变得很慢
  3. Trie Tree 实现中文分词器
  4. 选中的磁盘具有mbr分区表。在efi_如何使用老毛桃winpe的Bootice工具备份VHDX文件MBR分区表?...
  5. (原) Data Blocks, Extents, and Segments
  6. iOS学习笔记15-设计模式之 适配器模式
  7. mysql常用的yu语句_mysql常用sql语句
  8. 懒人神器——新手必备的图片后期处理软件
  9. 数学分析(卓里奇)学习笔记001
  10. 测试计划工作的目的是什么?
  11. Google Java Style Guide
  12. html作品使用说明,使用说明html模板
  13. 资讯类App主流框架(一)
  14. AOP术语、SpringAOP
  15. 我国超级计算机历代,《决战崛起——中国超算强国之路》作品研讨会召开
  16. 一篇文章让你从JAVA零基础入门`OOP`编程12.19
  17. Java内存马攻防实战——攻击基础篇
  18. js实现简单好玩儿的放大镜个人讲解
  19. C#迭代器的详细用法
  20. 2022年安全员-B证试题及模拟考试

热门文章

  1. [论文阅读][ICP变种] Generalized-ICP
  2. leetcode—— 401. 二进制手表(使用到将数字转换为字符)
  3. 你在 或者不在 需要逻辑回归来算 | 协和八
  4. 06-用两个栈实现队列
  5. python发动机曲轴连杆动力学计算
  6. 安卓系统双屏异显_Android实现双屏异显
  7. anaconda创建新环境_【创建社会主义新农村】怀城街道:转变整治理念 农村人居环境换新颜...
  8. bh1750采集流程图_基于MSP430和CC2530的温室大棚数据采集系统设计
  9. mysql utf 8bm4 没用_不要在 MySQL 中使用“utf8”,請使用“utf8mb4”
  10. java 检测表情符号_java – 检测String中的字符是否是表情符号(使用Android)