【t081】序列长度(贪心做法)】的更多相关文章

Time Limit: 1 second Memory Limit: 128 MB [问题描述] 有一个整数序列,我们不知道她的长度是多少(即序列中整数的个数),但我们知道在某些区间中至少有多少个整数,用区间 [ai,bi,ci]来描述它,[ai,bi,ci]表示在该序列中处于[ai,bi]这个区间的整数至少有ci个.现在给出若干个这样的区间, 请你求出满足条件的最短序列长度是多少.如果不存在则输出 -1. [输入格式] 第一行包括一个整数n(n<=1000),表示区间个数: 以下n行每行描述这…
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 有一个整数序列,我们不知道她的长度是多少(即序列中整数的个数),但我们知道在某些区间中至少有多少个整数,用区间 [ai,bi,ci]来描述它,[ai,bi,ci]表示在该序列中处于[ai,bi]这个区间的整数至少有ci个.现在给出若干个这样的区间, 请你求出满足条件的最短序列长度是多少.如果不存在则输出 -1. [输入格式] 第一行包括一个整数n(n<=1000),表示区间个数: 以下n行每行描述这…
构建seq2seq模型,并训练完成后,我们只要将源句子输入进训练好的模型,执行一次前向传播就能得到目标句子,但是值得注意的是: seq2seq模型的decoder部分实际上相当于一个语言模型,相比于RNN语言模型,decoder的初始输入并非0向量,而是encoder对源句子提取的信息.因此整个seq2seq模型相当于一个条件语言模型,本质上学习的是一个条件概率,即给定输入\(x\),学习概率分布\(P(y|x)\).得到这个概率后,对应概率最大的目标句子\(y\)就是模型认为的最好的输出.我们…
JDOJ 1929: 求最长不下降序列长度 JDOJ传送门 Description 设有一个正整数的序列:b1,b2,-,bn,对于下标i1<i2<-<im,若有bi1≤bi2≤-≤bim 则称存在一个长度为m的不下降序列. 现在有n个数,请你求出这n个数的最长不下降序列的长度 Input 第一行为一个整数n (n < 104) 第二行有n个整数,数与数之间使用空格间隔 Output 输出一行,一个整数,最长不下降序列的长度 Sample Input 14 13 7 9 16 38…
1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 4987  Solved: 1732[Submit][Status][Discuss] Description 对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ax 2 < … < axm).那么就称P为S的一个上升序列.如果有…
https://www.luogu.org/problemnew/show/P1020 (原题链接) 第一问就是求最长不上升子序列的长度,自然就想到了c++一本通里动态规划里O(n^2)的算法,但题目明确说明“为了让大家更好地测试n方算法,本题开启spj,n方100分,nlogn200分每点两问,按问给分”,自然是要写O(nlogn)的算法才能AC哦. 对于这种nlogn的算法,只能求出长度,不能求出具体的序列.这种算法实现过程如下: 我们定义len为到目前为止最长不上升子序列的长度,d[l]表…
1046: [HAOI2007]上升序列 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3723  Solved: 1271[Submit][Status][Discuss] Description 对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ax2 < … < axm).那么就称P为S的一个上升序列.如果有多…
Description 对于一个长度为n的非负整数序列b_1,b_2,...,b_n,定义这个序列的能量为:f(b)=max{i=0,1,...,n}((b_1 xor b _2 xor...xor b_i)+(b_{i+1} xor b_{i+2} xor...xor b_n))其中xor表示按位异或(XOR),给定一个长度为n的非 负整数序列a_1,a_2,...,a_n,请计算a的每个前缀的能量值. Input 第一行包含一个正整数n(n<=300000),表示序列a的长度. 第二行包含n…
题意 链接:https://vjudge.net/problem/HDU-6586 给你一个字符串和k,还有每个字符出现次数的限制,求一个长度为k的字典序最小的满足限制的子序列. 思路 先构造出序列自动机,顺带把num(i,j)(下标为i后面的字符为j的个数)求出来. 题目要求字典序最小,我们就贪心的对每一位每次从a~z枚举,check是否满足. check(x,y,t):第x位放字符y且第x-1位是原串的下标t所表示的字符.要满足以下几点: 用过的字符y的数量+1<=r[y] t后面要有j字符…
题目描述 对于一个给定的序列a1, -, an,我们对它进行一个操作reduce(i),该操作将数列中的元素ai和ai+1用一个元素max(ai,ai+1)替代,这样得到一个比原来序列短的新序列.这一操作的代价是max(ai,ai+1).进行n-1次该操作后,可以得到一个长度为1的序列. 我们的任务是计算代价最小的reduce操作步骤,将给定的序列变成长度为1的序列. 输入格式 第一行为一个整数n( 1 <= n <= 1,000,000 ),表示给定序列的长度. 接下来的n行,每行一个整数a…
题目描述 现在有一个长度为n的数组A,另外还有一个整数k.数组下标从1开始. 现在你需要把数组的顺序重新排列一下使得下面这个的式子的值尽可能小. ∑|A[i]−A[i+k]| 特别的,你也可以不对数组进行重新排列. Input 单组测试数据. 第一行包含两个整数n,k (2≤n≤3*10^5, 1≤k≤min(5000,n-1)). 第二行包含n个整数 A[1],A[2],...,A[n] (-10^9≤A[i]≤10^9). Output 输出答案占一行. Input示例 3 2 1 2 4…
最近php7的消息铺天盖地, 忍不住想尝试下.星期天看了下语法, 写个小脚本练下手: 这个脚本读取fasta 文件, 输出序列的长度和GC含量: <?php $fasta = "test.fasta"; $meta = array(); $meta = parse_fasta($fasta); write_res($meta); function parse_fasta($fasta) { $meta = array(); $file_handle = fopen($fasta,…
设si为该序列的异或前缀和,则显然相当于求Σmax{sj+sj^si} (i=1~n,j=0~i).从高位到低位考虑,如果该位si为1,无论sj怎么填都是一样的:如果该位si为0,则sj该位应尽量为1.考虑对每个x预处理出满足si&x=x的最小i.这样贪心时就很好办了.这可以类似前缀和(或者说就是dp)的预处理. 使用类似的方法可以(n+v)log做选两个数使其or最大的问题. #include<iostream> #include<cstdio> #include<…
IncDec序列 题目描述: 给定一个长度为 n 的数列 a1,a2,…,an,每次可以选择一个区间[l,r],使下标在这个区间内的数都加一或者都减一. 求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种. 输入格式: 第一行输入正整数n. 接下来n行,每行输入一个整数,第i+1行的整数代表ai. 输出格式: 第一行输出最少操作次数. 第二行输出最终能得到多少种结果. 数据范围: 0<n≤10^5, 0≤ai<21474836480≤ai&…
题目传送门 题目描述 小C有一个N个数的整数序列,这个序列的中的数两两不同.小C每次可以交换序列中的任意两个数,代价为这两个数之和.小C希望将整个序列升序排序,问小C需要的最小代价是多少? 输入输出格式 输入格式: 第一行,一个整数N. 第二行,N个整数,表示小C的序列. 输出格式: 一行,一个整数,表示小C需要的最小代价. 输入输出样例 输入样例#1: 复制 6 8 4 5 3 2 7 输出样例#1: 复制 34 说明 数据范围: 对于30%的数据,1<=N<=10: 对于全部的数据,1&l…
题目: 题目背景 161114-练习-DAY1-AHSDFZ T2 题目描述 有 N 辆列车,标记为 1,2,3,…,N.它们按照一定的次序进站,站台共有 K 个轨道,轨道遵从先进先出的原则.列车进入站台内的轨道后可以等待任意时间后出站,且所有列车不可后退.现在要使出站的顺序变为 N,N-1,N-2,…,1,询问 K 的最小值是多少.…
序列   数据存储方式  数据结构 python 列表.元组.字典.集合.字符串 序列: 一块用于存放多个值的连续内存空间,并且按一定顺序排列,可以通过索引取值 索引(编号): 索引可以是负数 从左到右从0开始 从右到左从-1开始 切片 列表名[起始值:结束值:步长] 起始值从0开始 结束值需要获得位+1 步长位0不用写 序列相加 序列1 + 序列2 = 序列1序列2 只能是同类型的序列相加 列表+列表 元组+元组 字符串+字符串 序列乘法 序列 * 乘数 = 重复N次的序列 把序列的内容重复N…
题意: m次询问,问下标最小字典序的长度为x的LIS是什么 n<=10000, m<=1000 思路: 先nlogn求出f[i]为以a[i]开头的LIS长度 然后贪心即可,复杂度nm 我们正常求LIS处理出的low[i]为长度为i的LIS结尾最小元素,f[i]为以a[i]结尾的LIS长度 为了迎合题目要求,我们从数组结尾开始求最长下降子序列,得到的f[i]为以结尾开头的,以a[i]结尾的最长下降子序列,等效于以a[i]开头的LIS 其中为了不手写二分调半天..使用了lower_bound,此时…
LINK:序列 考虑前20分 容易想到爆搜. 考虑dp 容易设\(f_{i,j,k,l}\)表示前i个位置 选了j对 且此时A选择了k个 B选择了l个的最大值.期望得分28. code //#include<bits/stdc++.h> #include<iostream> #include<cstdio> #include<ctime> #include<cctype> #include<queue> #include<deq…
len() 求序列的长度 print(len("beimenchuixue")) print(len([1, 2, 3])) __len__ 对象中实现这个方法,则 len() 方法调用对象中 __len__方法 class BeiMenChuiXue: def __init__(self, name): self.name = name def __len__(self): return len(self.name) if __name__ == '__main__': name =…
376. 摆动序列 题目 如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为 摆动序列 .第一个差(如果存在的话)可能是正数或负数.仅有一个元素或者含两个不等元素的序列也视作摆动序列. 例如, [1, 7, 4, 9, 2, 5] 是一个 摆动序列 ,因为差值 (6, -3, 5, -7, 3) 是正负交替出现的. 相反,[1, 4, 7, 2, 5] 和 [1, 7, 4, 5, 5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零. 子…
这个是动态的,所以要用线段树维护.代码里有注释因为ls敲成lsum,rs敲成rsum查错查了好久.. #include <set> #include <map> #include <cmath> #include <ctime> #include <queue> #include <stack> #include <cctype> #include <cstdio> #include <string>…
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1046 我们先求出对于每一个数字作为开头的LCS的长度f[i],最长的f[i]为mxlen. 对于每一个询问,我们选取答案,从第1个开始选.假设当前已经选到了第x个答案,我们只需要一直往后面找到第一个f[k]且f[k]+x>mxlen,它就是第x+1个答案. 这样时间复杂度就是$O(nm)$的,感觉玄学卡过…… #include<cstdio> #include<cstrin…
题意 题目如题,输入序列只包含小写字母,数据范围0<k<=len<=500000. 例: 输入:helloworld 输出:ellld 题解 使用单调栈.当已删掉n-k个字符,输出栈中元素和剩余序列.否则当完成遍历一遍序列,输出栈底k个元素.时间复杂度O(n). 我的思考 之前的思路是按序遍历26个字母,并遍历原序列的子区间(beg,end)其中beg是上一次找到的字符的下一个,end是不至于凑不够k的结尾处.写好并超时了.时间复杂度大概是O(k ·logn ·26). 大概想的优化是排…
声明: 正如标题所说,只是求长度,应对题目要求,请自行判断,用错代码概不负责! 本蒟蒻的代码可能有错,有错误还请各位dalao请指出 运用了upper_bound()和lower_bound()函数 upper_bound()查找第一个大于目标的数的地址 lower_bound()查找第一个大于等于目标的数的地址 请注意,注释上面的才是这个注释所对应的代码. 1 #include<bits/stdc++.h> 2 using namespace std; 3 int y[100]; 4 int…
A sequence X_1, X_2, ..., X_n is fibonacci-like if: n >= 3 X_i + X_{i+1} = X_{i+2} for all i + 2 <= n Given a strictly increasing array A of positive integers forming a sequence, find the length of the longest fibonacci-like subsequence of A.  If on…
考虑某个点产生的贡献: 如果i左边是一个比它小的数x,那有两种情况: 1.x的左边的数y大于i,肯定要把x合并到i,i的贡献++ 2.x的左边的数y小于i,那肯定要把x合并到y,而这时候递归地来考虑,总有一天y或更左边的一个数是要合并到i上的,i的贡献++ 如果i左边的数x比它大,那就把i合并到x,不是考虑这个点的时候需要计算的 对于右边是同理的 也就是说,每个点的贡献就是它相邻左右两边<它的个数 如果有相等的话,我们这两个要么把左边的合并到右边,要么右边的合并到左边,所以在统计左右的时候一边允…
题解 真的没有想到是单调栈啊. 回想起被单调栈支配的恐惧 最优情况一定是小的数去合并 尽量多的数,所以可以维护一个递减的单调栈. 如果加入的数比栈首小, 就直接推入栈. 如果加入的数大于等于栈首, 必须要合并栈首,因为栈首两边都是大的数, 要选择小的那个进行合并, 需要进行$st[top - 1] 与 x$判断大小. 最后留下来的递减数列逐个合并就可以了 代码 #include<cstring> #include<cstdio> #include<algorithm>…
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1852 [题目大意] 给你N对数A1,B1……An,Bn.要求你从中找出最多的对, 把它们按照一种方式排列,重新标号1,2,..,k.能满足对于每一对i<j,都有Ai>Bj. [题解] 对于排序的问题,如果i必须要在j前面, 那么有A[i]>B[j],且B[i]>=A[j],相加得A[i]+B[i]>A[j]+B[j], 因此按A+B从大到小排序后最优, 我们先将A…
LCIS Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 9713    Accepted Submission(s): 4215 Problem Description Given n integers.You have two operations:U A B: replace the Ath number by B. (index…