方法一: 二分我们可以知道 最长上升子序列的 最后一个数的值是随序列的长度而递增的 (呃呃呃 意会意会) 然后我们就可以二分找值了(并更新)//By SiriusRen#include #include #include using namespace std;int n,...
转载 2016-09-25 14:34:00
42阅读
2评论
如果数组元素较大,需要离散化。 cpp include include include include include include include include include include include define ALL(x) (x).begin(), (x).end() defin
转载 2019-07-10 22:36:00
40阅读
2评论
The Prince moves along the sequence: 1 –> 7 –> 5 –> 4 –> 8 –> 3 –> 9 (Black arrows), while theP
原创 2022-10-19 16:16:19
38阅读
lis的时候呢,我想n^2的做法是很简单的,二分的话除了最长不上升或最长不下降子序列不好之外(毕竟要注意细节)于是从中发现了,lis真正的序列也是十分不好求出的尤其是字典序最大的不上升序列了,什么的很难的,当时好像打了hash,玄学找起点,优先队列维护。等等,可能不是很好的思路吧。 但是
转载 2019-01-08 16:53:00
35阅读
题目: Constructing Roads In JGShining's Kingdom Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 244
转载 2017-02-14 17:11:00
32阅读
2评论
题是水题,学习一下用树状数组LIS。 先离散化一下,注意去重;然后就把a[i]作为下标,dp[i]作为值,max作为维护的运算插进树状数组即可。 如果是上升子序列,询问(a[i] - 1);如果是不下降子序列,询问(a[i])。
原创 2021-07-15 15:39:36
205阅读
题目:http://poj.org/problem?id=1631 LIS即可,我使用了树状数组。 代码如下:
转载 2018-02-28 21:02:00
41阅读
2评论
最近在做单调队列,发现了最长上升子序列O(nlogn)的求法也有利用单调队列的思想。 最长递增子序列问题:在一列数中寻找一些数,这些数满足:任意两个数a[i]和a[j],若id[len],则直接加入到d的末尾,且len++;(利用性质2) 否则,在d中二分查找,找到第一个比x小的数d[k],并d[k...
原创 2021-07-16 15:00:09
776阅读
最长上升子序列长度#include #include using namespace std; const int MAXN=5001; int s[MAXc, char *argv[]) { int n,i,x,l,r,mid; int top=0; s[0]=-1; sca
原创 2023-07-07 13:30:06
19阅读
1.题目链接。说了很多,但是一句话可以概括。在平行线的之间有一些线段,取一组线段使得任意两条不相交,最多有多少条这样
原创 2022-07-01 10:16:47
45阅读
https://vjudge.net/problem/UVA-10534 题意:给定一个长度为n的整数序列,一个最长子序列(不一定连续),使得该序列的长度为2k+1,前k+1个数严格递增,后k+1个数严格递减。 思路: 先正着一遍LIS,再反着一遍LIS。 当然求法是得采用O(nlogn)的
转载 2017-05-30 16:53:00
102阅读
2评论
随着医院的发展及信息技术在医院的广泛应用,医院信息化走上了一个新的发展阶段,集成化医院信息系统的建设是现在医院信息化建设的目标,检验信息系统是医院信息系统集成最关键的系统之一,它不仅服务于检验科,更服务于病人,还在电子病历、体检系统、输血系统、手麻、院感等多个业务中得到普遍应用。
原创 3月前
64阅读
/* https://vijos.org/p/1028 */ #include<iostream> #include<cstdio> #include<cstring> #define rep(i,x,y) if ((x)<=(y)) for (register int i=(x);i<=(y);i ...
转载 2021-09-06 09:49:00
59阅读
2评论
F - LIS on Tree(LIS&DFS)题目传送门题意:给定一棵树,所有结点到根结点的LISLISLIS长度。思路:显然根据LISLISLIS的贪心思想,我们可以对其在树上进行操作,与普通的LISLISLIS不同的是,一开始我们可以将存放LISLISLIS的数组进行初始化为infinfinf,这样每次只需要进行二分操作就行了,省去了直接添加到数组末尾的那一步。由于不同L...
原创 2022-01-22 14:50:37
44阅读
F - LIS on Tree(LIS&DFS) 题目传送门 题意:给定一棵树,所有结点到根结点的LISLISLIS长度。 思路:显然根据LISLISLIS的贪心思想,我们可以对其在树上进行操作,与普通的LISLISLIS不同的是,一开始我们可以将存 放LISLISLIS的数组进行初始化为infinfinf,这样每次只需要进行二分操作就行了,省去了直接添加到数组末尾的那一步。由于 不同L...
原创 2021-08-10 09:22:11
112阅读
Problem Description In computer science, the longest increasing subsequence problem is to find a subsequence of a given sequence in which the subseque
转载 2017-06-02 09:14:00
98阅读
2评论
代码#include<cstdio>#include<cstring>#define MAXN 40005int arr[MAXN],ans[MAXN],len;int binary_search(int i){ int left,right,mid; left=0,right=len; while(left<right){ ...
原创 2021-07-12 17:45:38
157阅读
原dp[i]代表以i结尾的LIS的长度 现在dp[i]代表长度为i的LIS的最小元素 dp一定为一个递增数组 遍历a,当a[i]比当前LIS的最后一个数字还大,则长度++ 否则就二分查找dp数组中第一个>=a[i]的数值,并把它改为a[i] #include <bits/stdc++.h> usin
转载 2021-02-22 11:46:00
160阅读
2评论
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5087 题意: 第二长的最长递增序列的长度 分析: 用step[i]表示以i结尾的最长上升序列的长度,dp[i]表示到i的不同的最长的子序列的个数 然后最后推断最长的子序列的个数是否大于1是的话输出Ma
转载 2016-04-12 16:38:00
101阅读
2评论
题意 "题目链接" Sol 刚开始的思路是$f[i][j]$表示到第$i$位,LIS长度为$j$的方案。 然而发现根本不能转移,除非知道了之前的状态然后重新dp一遍。。 题解,,,挺暴力的把,直接把LIS过程中的单调栈当成一个状态压进去了。。 自己真是不长记性,明明已经被这个单调栈坑过一次了。。
原创 2021-06-04 23:34:29
109阅读
  • 1
  • 2
  • 3
  • 4
  • 5