Vijos 1111 小胖的水果 LCS】的更多相关文章

描述 xuzhenyi到大同水果店去买水果,但老板huyichen告诉他每次只能买一种,但是xuzhenyi想吃两种,于是在讨价还价之后,huyichen说只要xuzhenyi能把他想要的两种水果合并成一种,就能成功.你能帮他吗? 格式 输入格式 输入文件包含两个要组合的水果名字.所有的名字最多有100个字母.(有若干行) 输出格式 对每一组测试数据,打印出一个最短的组合长度. 样例1 样例输入1 apple peach ananas banana pear peach 样例输出1 8 7 6…
题目链接: https://vijos.org/p/1111 题目大意: 多组数据,给两个字符串s1,s2,求把s1,s2拆开从前往后合并后最短是多少 apple + peach = appleach ananas  + banana = bananas pear + peach = pearch 题目思路: [动态规划] 先求最长公共子序列,f[i][j]表示s1匹配到第i位,s2匹配到第j位的最多重叠字母数. 最终答案=len(s1)+len(s2)-f[len(s1)][len(s2)]…
第一次看到这题怎么也不会想到是并查集题目…星期五第一次看到这题,到今天做出来,实在是废了好多功夫.看了很多人的解题都有same和diff数组,我也写了,后来发现不对啊两个数组的话find函数怎么写呢?hash也很久没写了,导致自己测试的时候有两个点没过是因为hash弄错了. 我的程序里f[x]= same[x] (x<=max) = diff[x-max] (x>max) 总算,最后还是通过了.又是一道想不到思路就写不出的题.据说这题和食物链很像,那么食物链就是我的下一个目标~总感觉并查集是有…
小胖守皇宫 描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全天候看守,在不同的宫殿安排看守所需的费用不同. 可是xuzhenyi手上的经费不足,无论如何也没法在每个宫殿都安置留守侍卫. 帮助xuzhenyi布置侍卫,在看守全部宫殿的前提下,使得花费的经费最少. 格式 输入格式 输入文件中数据表示一棵树,描述如下: 第1行 n,表示树中…
Description Smith在P市的邮政局工作,他每天的工作是从邮局出发,到自己所管辖的所有邮筒取信件,然后带回邮局.他所管辖的邮筒非常巧地排成了一个m*n的点阵(点阵中的间距都是相等的).左上角的邮筒恰好在邮局的门口. Smith是一个非常标新立异的人,他希望每天都能走不同的路线,但是同时,他又不希望路线的长度增加,他想知道他有多少条不同的路线可走.[任务描述]你的程序需要根据给定的输入,给出符合题意的输出: 输入包括点阵的m和n的值: 你需要根据给出的输入,计算出Smith可选的不…
每个区间拆成r和l-1两个端点,若之内有偶数个1,则这两个端点对应的前缀的奇偶性必须相同,否则必须相反. 于是可以用带权并查集维护,每个结点储存其与其父节点的奇偶性是否相同,并且在路径压缩以及Union时进行分类讨论即可. 由于n太大,要对两个端点进行离散化. #include<cstdio> #include<algorithm> using namespace std; int fa[10010]; bool rel[10010]; int findroot(int x){ i…
树形DP 树形DP:建立在树上的动态规划 一般有两种传递方式:根→叶或叶→根 前者出现在换根DP中,一般操作是求出某一个点的最优解,再通过这一个点推知其他点的最优解. 后者是树形DP的常见形式,一般树形DP都是在叶子向根转移上. 一般状态都是f[x][...]表示x的子树中如何如何 POJ_3342_Party at Hali-Bula_树形DP 题目大意:没有上司的舞会,不存在选了连续两个点的情况,求最多选多少人. 题解:最裸的树形DP,直接状态,f[i][0]表示没选这个点,子树中最多选了多…
第一遍做 #include<iostream> #include<cstdlib> #include<cstdio> #include<cstring> using namespace std; int n,m; ]; ]; ]; int find(int x) { if(x==fa[x])return x; int ff=fa[x]; fa[x]=find(ff); rela[x]=(rela[x]+rela[ff])%; return fa[x]; }…
题目描述 huyichen世子事件后,xuzhenyi成了皇上特聘的御前一品侍卫. 皇宫以午门为起点,直到后宫嫔妃们的寝宫,呈一棵树的形状:某些宫殿间可以互相望见.大内保卫森严,三步一岗,五步一哨,每个宫殿都要有人全天候看守,在不同的宫殿安排看守所需的费用不同. 可是xuzhenyi手上的经费不足,无论如何也没法在每个宫殿都安置留守侍卫. 帮助xuzhenyi布置侍卫,在看守全部宫殿的前提下,使得花费的经费最少. 输入格式 输入文件中数据表示一棵树,描述如下: 第1行 nn,表示树中结点的数目.…
点击打开题目 树形DP 显然会想到某个点放或不放守卫来定义状态,但在不放的情况下,需要分类讨论是父亲放还是一个儿子放,于是定义以下状态: f[root][0]表示自己不放,父亲也不放 f[root][1]表示自己放 f[root][2]表示自己不放,父亲放 则状态转移方程为: f[root][0]+=min(f[son][0],f[son][1])(如果所有儿子都不放,则f[root][0]应加上s=min(f[son][1]-f[son][0])) f[root][1]+=min(f[son]…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1006 参考博客 :http://blog.csdn.net/yysdsyl/article/details/4226630 引进一个二维数组c[][],用c[i][j]记录X[i]与Y[j] 的LCS 的长度,b[i][j]记录c[i][j]是通过哪一个子问题的值求得的,以决定搜索的方向.我们是自底向上进行递推计算,那么在计算c[i,j]之前,c[i-1][j-1],c…
题意: 给两个水果名,要求他们的LCS部分只输出1次,其他照常输出,但是必须保持原来的顺序! 思路: 求LCS是常规的,但是输出麻烦了,要先求LCS,再标记两串中的所有LCS字符,在遇到LCS字符时,先输串1的,再输串2的,然后输该字符,以保证每个LCS字符输出前,两串中该字符前面的字符全部已输出. //#pragma comment(linker,"/STACK:102400000,102400000") #include <iostream> #include <…
题目链接: https://vijos.org/p/1496 题目大意: 给你n(n<24)根火柴棍,你可以拼出多少个形如“A+B=C”的等式?("+"和"="各自需要两根火柴棍) 如果A≠B,则A+B=C与B+A=C视为不同的等式(A.B.C>=0) n根火柴棍必须全部用上 题目思路: [枚举] 其实这题很水,n最大才24,扣掉+和=就只有20,直接枚举就行. 稍微算一下就知道每个数最大不会超过1111 两层for枚举每个数,判断是否用尽火柴即可. /…
题意:给定一个字符串,问删除一些字符,使得它成为一个最长回访串,如果有多个,输出字典序最小的那个. 析: 我们可以把原字符串反转,然后求两个串的LCS,就得到最长回文串,不过要注意一些细节. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <c…
题意:给定两行字符串,让你找出一个最短的序列,使得这两个字符串是它的子串,并且求出有多少种. 析:这个题和LCS很像,我们就可以利用这个思想,首先是求最短的长度,不就是两个字符串长度之和再减去公共的么.那么有多少种呢? 同样也是分两种情况讨论,如果s1[i-1] == s2[j-1] 那么种类数肯定和 ans[i-1][j-1]一样了,没有变化,再就是如果不相等怎么算呢? 难道也是ans[i][j] = Max(ans[i-1][j], ans[i][j-1])吗,其实并不是,如果两种方法数相等…
11-11. 在LINQ中调用数据库函数 问题 相要在一个LINQ 查询中调用数据库函数. 解决方案 假设有一个任命(Appointment )实体模型,如Figure 11-11.所示, 我们想要查询某周给定的一天里的所有appointment. Figure 11-11. An Appointment entity with the start and end times for appointments 如果我们想要找出所有周四的appointment, 我们不能在where子句里,使用运…
LCS引论 在这篇博文中,博主要给大家讲一个算法----最长公共子序列(LCS)算法.我最初接触这个算法是在高中学信息学竞赛的时候.那时候花了好长时间理解这个算法.老师经常说,这种算法是母算法,即从这种算法中能衍生出许许多多的子算法.是的,博主在大二的算法导论考试中,就被LCS衍生的子算法"坑"了.当时一道动态规划题目,大概是要写一列书中放置书架的问题.博主联想到了LCS,但是最后还是只是用暴力求解法解出了那道题目,甚是遗憾.在这里,我也对此算法做一个详解. 优化子结构 首先,我们来看…
http://www.lydsy.com/JudgeOnline/problem.php?id=1061 https://vijos.org/p/1825 直接上姜爷论文... #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long ll; const int N = 1013; const int M = 40003; const int…
转自:http://segmentfault.com/blog/exploring/ LCS 问题描述 定义: 一个数列 S,如果分别是两个或多个已知数列的子序列,且是所有符合此条件序列中最长的,则 S 称为已知序列的最长公共子序列. 例如:输入两个字符串 BDCABA 和 ABCBDAB,字符串 BCBA 和 BDAB 都是是它们的最长公共子序列,则输出它们的长度 4,并打印任意一个子序列. (Note: 不要求连续) 判断字符串相似度的方法之一 - LCS 最长公共子序列越长,越相似. Ju…
题目描述 Description 水果姐今天心情不错,来到了水果街. 水果街有n家水果店,呈直线结构,编号为1~n,每家店能买水果也能卖水果,并且同一家店卖与买的价格一样. 学过oi的水果姐迅速发现了一个赚钱的方法:在某家水果店买一个水果,再到另外一家店卖出去,赚差价. 就在水果姐窃喜的时候,cgh突然出现,他为了为难水果姐,给出m个问题,每个问题要求水果姐从第x家店出发到第y家店,途中只能选一家店买一个水果,然后选一家店(可以是同一家店,但不能往回走)卖出去,求每个问题中最多可以赚多少钱. 输…
1. 问题描述 子串应该比较好理解,至于什么是子序列,这里给出一个例子:有两个母串 cnblogs belong 比如序列bo, bg, lg在母串cnblogs与belong中都出现过并且出现顺序与母串保持一致,我们将其称为公共子序列.最长公共子序列(Longest Common Subsequence, LCS),顾名思义,是指在所有的子序列中最长的那一个.子串是要求更严格的一种子序列,要求在母串中连续地出现.在上述例子的中,最长公共子序列为blog(cnblogs, belong),最长公…
Given two strings,  a and , b find and print the total number of ways to insert a character at any position in string a such that the length of the Longest Common Subsequence of characters in the two strings increases by one. Input Format The first l…
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求LCS,转移同时维护f[i][j].s为当前状态字典序最小最优解 f[n][n].s的前半部分一定是回文串的前半部分(想想就行了) 当s的长度为奇时要多输出一个(因为这样长度+1,并且字典序保证最小(如axyzb  bzyxa,就是axb|||不全是回文串的原因是后半部分的字典序回文串可能不是最小,多…
背景 B酱为NOIP 2014出了一道有趣的题目, 可是在NOIP现场, B酱发现数据规模给错了, 他很伤心, 哭得很可怜..... 为了安慰可怜的B酱, vijos刻意挂出来了真实的题目! 描述 已知多项式方程: $$a_0+a_1x+a_2x^2+...+a_nx^n=0$$ 求这个方程在[1, m]内的整数解(n 和 m 均为正整数). 输入格式 输入共 n+2 行. 第一行包含 2 个整数 n.m,每两个整数之间用一个空格隔开. 接下来的 n+1 行每行包含一个整数,依次为$a_0,a_…
描述 小\(A\)和小\(B\)决定利用假期外出旅行,他们将想去的城市从\(1\)到\(N\)编号,且编号较小的城市在编号较大的城市的西边,已知各个城市的海拔高度互不相同,记城市\(i\)的海拔高度为\(H_i\),城市\(i\)和城市\(j\)之间的距离\(d(i,j)\)恰好是这两个城市海拔高度之差的绝对值,即\(d(i,j) = |H_i - H_j|\). 旅行过程中,小$A$和小$B$轮流开车,第一天小$A$开车,之后每天轮换一次.他们计划选择一个城市$S$作为起点,一直向东行驶,并且…
http://www.lydsy.com/JudgeOnline/problem.php?id=2541 https://vijos.org/p/1366 loli秘制大爆搜_(:з」∠)_坑了好久啊QAQ一上午花了2h+写这道题,最后WA了2个点,调了一下午多. 在矩形一条边上的所有位置都是等效的,所以把每个矩形的四条边拆开,表示为点.每个点只会连出去一条边,暴力找边建图,最后跑堆优dij. 时间复杂度\(O(n^2)\)(附带大常数16一脸不可过?不过最后竟然过了) 一开始认为有环爆搜不可做…
http://www.lydsy.com/JudgeOnline/problem.php?id=1065 https://vijos.org/p/1826 好难的题啊TWT ∈我这辈子也想不出来系列~ 题解详见2009年的论文徐源盛<对一类动态规划问题的研究>. 这道题我第一眼一脸懵逼... 然后持续懵逼... 最后看论文里的题解 我再来重复一下(论文绝对比我讲得详细QAQ) 首先\(R(i)=C_i+k\sum_\limits{j=1}^wR(p_j)\) 如果是单纯的一棵树,那么从孩子传到…
先要搞明白:最长公共子串和最长公共子序列的区别.    最长公共子串(Longest Common Substirng):连续 最长公共子序列(Longest Common Subsequence,LCS):不必连续   实在是汗颜,网上做一道题半天没进展: 给定一个字符串s,你可以从中删除一些字符,使得剩下的串是一个回文串.如何删除才能使得回文串最长呢?输出需要删除的字符个数. 首先是自己大致上能明白应该用动态规划的思想否则算法复杂度必然过大.可是对于回文串很难找到其状态和状态转移方程,换句话…
给定两个串,均由最小字母组成.求这两个串的最大公共字串LCS(Longest Common Substring). 使用动态规划解决. #include <iostream> #include <vector> #include <cstring> #include <algorithm> using namespace std; #define MAX 100 int LCS(string left, string right){ int imax = -…
切水果游戏曾经是一款风靡手机的休闲游戏,今天要介绍的就是一款网页版的切水果游戏, 由JavaSript和HTML5实现,虽然功能和原版的相差太大,但是基本的功能还是具备了,还是模仿的挺逼真,有一定的JavaSript水平的朋友,可以看看源代码,相信你的JavaSript水平会有很大的提升. /**  * this file was compiled by jsbuild 0.9.6  * @date Fri, 20 Jul 2012 16:21:18 UTC  * @author dron  *…