首页 > 其他分享 >P3205 [HNOI2010] 合唱队

P3205 [HNOI2010] 合唱队

时间:2023-12-06 21:11:41浏览次数:42  
标签:19650827 合唱队 sum 元素 HNOI2010 P3205 右端 ll 左端

原题链接

导入

1.对于一个给定的序列,最后一个加进来的元素不是最左端就是最右端,如果是最左端,那么代表去掉最左端的序列中最后一个加进来的元素比最左端小,最右端同理。
2.对于一个给定的序列,可能的排序结果无非两类,一类是以最左端的元素结尾的,一类是以最右端的元素结尾的。因此设\(sum[i][j][k],k\in \{0,1\}\)为序列\([i,j]\)的可能排列数,其中k=0时代表最后一个元素是最左端,k=1时代表最后一个元素是最右端。

提醒

一定要训练用直接dp的方法做而不是用递归!

代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll sum[2002][2002][2]={0};
int main()
{
    ll n;
    scanf("%lld",&n);
    ll a[2005]={0};
    for(int i=1;i<=n;i++)scanf("%lld",&a[i]);
    for(ll i=1;i<=n-1;i++) if(a[i]<a[i+1])sum[i][i+1][0]=sum[i][i+1][1]=1;

    for(ll k=2;k<=n;k++)
        for(ll i=1;i+k<=n;i++)
        {
            if(a[i]<a[i+1])sum[i][i+k][0]=(sum[i][i+k][0]+sum[i+1][k+i][0])%19650827;
            if(a[i]<a[i+k])sum[i][i+k][0]=(sum[i][i+k][0]+sum[i+1][k+i][1])%19650827;
            if(a[i+k]>a[i])sum[i][i+k][1]=(sum[i][i+k][1]+sum[i][k+i-1][0])%19650827;
            if(a[i+k]>a[i+k-1])sum[i][i+k][1]=(sum[i][i+k][1]+sum[i][k+i-1][1])%19650827;
        }
    printf("%lld\n",(sum[1][n][0]+sum[1][n][1])%19650827);
    return 0;
}

标签:19650827,合唱队,sum,元素,HNOI2010,P3205,右端,ll,左端
From: https://www.cnblogs.com/pure4knowledge/p/17880540.html

相关文章

  • P1091 合唱队形题解(普及/提高−) 题解
    题目传送门这道题是一个很经典的动态规划。因为合唱队形的身高是从低——高——低来排的,所以就可以利用分治的思想将队形分成两个部分:低——高是最长上升子序列;高——低是最长下降子序列。这道题其实可以用二分查找来优化,可是这题n≤100,没有必要优化,需优化题详见P1020导弹拦截......
  • [HNOI2010] 平面图判定-平面图性质、带权并查集/2-sat
    [HNOI2010]平面图判定-平面图性质、带权并查集/2-sathttps://www.luogu.com.cn/problem/P3209题意:给一张\(n\)个点,\(m\)条边的哈密顿图,并且哈密顿回路已知,问是否是平面图,\(T\)组询问。\(1\leqT\leq100,1\leqn\leq200,1\leqm\leq10^4\)。转换挺奇妙的。极大平面......
  • [DS记录] P3203 [HNOI2010] 弹飞绵羊
    (题目传送门)虽然是\(\rmLCT\)板子,但用来做分块入门如果没有修改操作,可以\(O(n)\)求出每个点的答案对于每个块里的点,预处理出它跳出这个块的步数,那么查询时就可以\(O(1)\)跳过这些块,查询的复杂度\(O(\sqrt{n})\)修改一个点时,也就是\(O(B)\)暴力修改即可令\(B=\sqrt{......
  • luogu P3203 [HNOI2010] 弹飞绵羊 题解
    题目传送门:P3203[HNOI2010]弹飞绵羊题意\(n\)个数,满足\(i<a_i≤N+1\),\(m\)次下面两种操作修改一个数\(a_i\)从\(x\)开始跳,\(x=a_x\),几次能够跳出序列\(n\leq2*10^5,m<10^5\)分析数据范围比较大,单纯搜索模拟肯定会T,那么考虑每次让他跳一段就......
  • P3205 [HNOI2010]合唱队
    P3205[HNOI2010]合唱队区间DP——取一端思:根据题意我们发现,每次排队的时候,会出现两种情况当前排入的人(即初始队列最后一人)比初始队列中前一个人矮,排到最左边当前排入的人(同上)比初始队列中前一个人高,排到最右边可从初始队列最后一人切入。设置状态:\(f[l][r][0/1]\)......
  • 「背包DP」合唱队形
    本题为3月16日23上半学期集训每日一题中A题的题解题面题目描述金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈......
  • P3205 [HNOI2010]合唱队(区间dp+方案数)
    P3205[HNOI2010]合唱队-洛谷|计算机科学教育新生态(luogu.com.cn)这道题大区间包括小区间,每加一个人都会让区间更大;考虑区间DP:对于区间[i~j],这段区间最新......
  • P1091 合唱队形
    题意:有n名学生在成一排。然后为了站成中间高两边矮的合唱队列,问最少不要几个人? 思路:就是最长上升子序列裸用。当然是先把顺方向和逆方向的最长上升子序列找到。然后......
  • SPOJ SP32058 R6PL - Harbinger vs Sciencepal
    链接难度:\(\texttt{17/21}\)\(T\)组数据。有\(n\)组,每组有\(2\)个数\(x,y\),问把每组的一个数分配到一组另一个数分配到另一组两组数字和差的绝对值最小是多少。......
  • P1091 合唱队形
    P1091合唱队形题意:给出一个长度为\(n\)的序列,要求从中删去一些数字,假设剩下的新的\(a\)数组,要求存在\(a[1]<a[2]<...<a[i]>a[i+1]>...a[k]\)。求删去的......