随笔分类 - dp-区间dp
摘要:#include<bits/stdc++.h> using namespace std; const int maxn=1e6+5; const int INF=1e9+5; int n,m,k,w,tot,minn=INF,mark; int f[1005][1005],a[1005],b[101
阅读全文
摘要:有一个长度为n的整数序列,两个游戏者A和B轮流取数,A先取。每次玩家只能从左端或者右端取任意数量的数,但不能两边都取。所有数都被取走视为游戏结束,然后统计每个人取走的数之和,作为各自的得分。两个人采取的策略都是让自己得分尽可能高,并且两个人都很机智,求A得分-B得分后的结果。 输入格式 输入包含多组
阅读全文
摘要:有一根长度为L(L<1000)的棍子,还有n(n<50)个切割点的位置(按照从小到大排 列)。你的任务是在这些切割点的位置处把棍子切成n+1部分,使得总切割费用最小。每次 切割的费用等于被切割的木棍长度。 例如,L=10,切割点为2, 4, 7。如果按照2, 4, 7的顺序, 费用为10+8+6=2
阅读全文
摘要:输入两个长度分别是n和m(n,m<=5000)的颜色序列,要求按顺序合并成同一个序列,即每次可以把一个序列开头的颜色放到新序列的尾部。 例如,两个颜色序列GBBY和YRRGB,至少有两种合并结果:GBYBRYRGB和YRRGGBBYB。对于每种颜色来说其跨度L(c)等于最大位置和最小位置之差。例如,
阅读全文
摘要:Bessie喜欢在手机上下游戏玩,然而她蹄子太大,很难在小小的手机屏幕上面操作。 她被她最近玩的一款游戏迷住了,游戏一开始有n个正整数,(2<=n<=262144),范围在1-40。在一步中,贝西可以选相邻的两个相同的数,然后合并成一个比原来的大一的数(例如两个7合并成一个8),目标是使得最大的数最
阅读全文
摘要:细节被坑惨 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e6+5; 4 const int INF=1e9+7; 5 int n,ans,dp[305][305]; 6 template <class t>vo
阅读全文
摘要:f(i,j)=min(f(i-1,k)+f(k+1,j)+ai-1*ak*aj) k表示被抽取的数 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<vector> 5 #include<queue> 6
阅读全文
摘要:f(i,j)=f(i+1,j-1)+2 or max(f(i,k)+f(k+1,j)) 1 #include<iostream> 2 #include<cstdio> 3 #include<algorithm> 4 #include<vector> 5 #include<queue> 6 #incl
阅读全文
摘要:1.石子归并 非常朴素,顺着推即可 w [ i ] [ j ] 表示把第i堆到第j堆的石子和到一起的最后一步的代价 f [ i ] [ j ] = min{f [ i ] [ k ] + f [ k+1 ] [ j ] + w[ i ] [ j ] | i <= k < j , i <= j} 2.
阅读全文
摘要:题面 有可能最大值是负数,要初始化f为极小值 要特别处理第一位与空格匹配的情况 分清i,j(wa了无数次QAQ) 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=1e6+5; 4 const int INF=1e9+
阅读全文
摘要:N位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的K位同学排成合唱队形。 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K,他们的身高分别为T1,T2,…,TK 则他们的身高满足T1<...<Ti>Ti+1>…>TK(1≤i≤K) 你的任务是,已知所有N位同学
阅读全文

浙公网安备 33010602011771号