Codeforces 1304D. Shortest and Longest LIS】的更多相关文章

https://codeforces.com/contest/1304/problem/D #include<bits/stdc++.h> using namespace std; void solve(){ int n; string s; cin>>n; cin>>s; int Min[n]; int t = n; ;i<s.length();i++){ ,indx = i; if(s[i] == '<'){ while(s[i]=='<'){ l…
根据题目,我们可以找最短的LIS和最长的LIS,找最短LIS时,可以将每一个increase序列分成一组,从左到右将最大的还未选择的数字填写进去,不同组之间一定不会存在s[i]<s[j]的情况,保证满足题意,找最长LIS,可以找补集,将每个decrease序列分成一组,找到后取反即可 #include<bits/stdc++.h> using namespace std; #define lowbit(x) ((x)&(-x)) typedef long long LL; vec…
Codeforces Round #620 (Div. 2) D. Shortest and Longest LIS 题解: 贪心即可,对于最短序列,我们尽可能用可用的最大数字放入序列中,对于最长序列,我们尽可能用可用的最小数组放入序列即可,再处理序列时,当满足当前防止变化规律的符号直接防止,如果不满足则向后遍历直到遇到满足条件的符号,然后倒序放直到放完.eg. "><<>" 我们从大向小取,第一个为大于号所以直接填入,第二为小于号暂时不填,第三为小于号暂时不填…
看样例,>><>><,要构造 LIS 最短的,我们需要找最小链划分的方案,即包含最少的下降列 很容易想到把连续 < 的看成一段,比如样例就是 .|.|. .|.|. . 每一段内必须上升,考虑让它连续,然后让段末取当前没取过的最大值即可 要构造 LIS 最长的,同理,我们把连续 > 的堪称一段,比如样例就是 . . .|. . .|. 每段内必须下降,考虑让它连续,然后让段膜取当前没去过的最小值即可 #include <bits/stdc++.h>…
前置扯淡 %%@\(wucstido\),思路是在是巧妙---link Description 给一个长度为\(n\)由 \(<\) 和 \(>\)组成的字符串,表示序列中相邻位置的数的大小关系 求构造两种排列,使得其在满足上述条件的情况下的 \(LIS\) 分别最长\(/\)最短 Solution 直接考虑构造最短的排列,然后最长的同理(真的是把符号改改就可以了) 整个排列\(LIS\)的最小值在最长的一段\("<"\)中取得,然后我们考虑构造 先把整个排列逆序过来…
[Codeforces 1205B]Shortest Cycle(最小环) 题面 给出n个正整数\(a_i\),若\(a_i \& a_j \neq 0\),则连边\((i,j)\)(注意i->j的边和j->i的边看作一条.问连边完图的最小环长度 \(n \leq 10^5,0 \leq a_i \leq 10^{18}\) 分析 我们按位考虑.显然满足第i位为1的所有数两两之间都有边,构成一个完全图. 统计第i位为1的数,如果第i位为1的数超过2个,就直接输出3(这3个构成一个最小环…
题意 给定$n$个数,求最长上升子序列的方案数 根据数据范围要求是$O(n\log n)$ 朴素的dp方程式$f_i=max(f_j+1),a_i>a_j$,所以记方案数为$v_i$,则$v_i=v_i+v_j,(f_i=f_j+1)$,利用lis的$O(n\log n)$树状数组做法同时维护长度和方案数 从通酱博客里还看到更详尽的解释:stackoverflow 时间复杂度$O(n\log n)$ 代码 #include <bits/stdc++.h> using namespace…
D. Longest k-Good Segment 题目连接: http://www.codeforces.com/contest/616/problem/D Description The array a with n integers is given. Let's call the sequence of one or more consecutive elements in a segment. Also let's call the segment k-good if it conta…
D. Longest Subsequence 题目连接: http://www.codeforces.com/contest/632/problem/D Description You are given array a with n elements and the number m. Consider some subsequence of a and the value of least common multiple (LCM) of its elements. Denote LCM a…
http://codeforces.com/gym/101246/problem/H 题意:在二维平面上有n个点,从最左下角的点出发,每次走只能走在当前的点的右上角的点(xj > xi, yj > yi).问在走了最长路径的前提下有哪些点是可能被走到的,哪些点是必须被走到的. 思路:比赛的时候以为是图论的题目,结果可以转化为LIS求解,太强啦. 首先直接对坐标按照x从小到大进行排序,如果x相同,y从大到小排序.为什么y是从大到小排序呢?因为在后面我们只看y的大小来做LIS,即通过排序消掉了x维…