链接

题意:

给出你一个长度为n的序列,你可以对其操作使得这个序列发生变化,问一共有多少种?

  • 对于连续的i-1,i,i+1,这三个数如果满足 ai−1!=aia_{i-1}!=a_{i}ai−1​!=ai​并且ai!=ai+1a_{i}!=a_{i+1}ai​!=ai+1​ 那么我们就可以将aia_iai​删掉。

分析:

明显看出利用DP来解决组合数学问题。
那么我们认为第iii位置,表示到i有dp[i]种方案数。
那么他会从那种状态转移过来那?
首先dp[i]是继承dp[i-1],这一点是一定的,其次他还可以通过删除前一个元素,就是看看i-2,i-1,i是否符合前面说的条件,那么dp[i]+=dp[i-2],
还有就是除了前面一个,我们也想知道删除前面一个或者多个,那么我们用前缀维护即可,但是前缀维护到同时出现同一个数。

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> pii;
typedef unsigned long long ull;#define x first
#define y second
#define sf scanf
#define pf printf
#define PI acos(-1)
#define inf 0x3f3f3f3f
#define lowbit(x) ((-x)&x)
#define mem(a,x) memset(a,x,sizeof(a))
#define rep(i,n) for(int i=0;i<(n);++i)
#define repi(i,a,b) for(int i=int(a);i<=(b);++i)
#define repr(i,b,a) for(int i=int(b);i>=(a);--i)
#define debug(x) cout << #x << ": " << x << endl;const int MOD = 998244353;
const int mod = 1e9 + 7;
const int MAX = 2e5 + 10;
const int dx[] = {0, 1, -1, 0, 0};
const int dy[] = {0, 0, 0, 1, -1};
const int dz[] = {1, -1, 0, 0, 0, 0 };
int day[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};void init()
{}
ll qpow(ll a, ll b, ll p)
{ll ans = 1;while(b){if(b & 1) ans = ans * a % p;a = a * a % p;b >>= 1;}return ans;
}string str;
ll n,m,s;
ll a[MAX],dp[MAX],b[MAX],sum[MAX];
void solve()
{cin>>n;dp[0]=1;ll j=0,num=0,k=1;for(int i=1;i<=n;i++){cin>> a[i];dp[i]=dp[i-1];/// 继承上一状态if(a[i]==a[i-1]) j= i-1;///上一个 一对相等的位置,if(i>2&&a[i]!=a[i-1]&&a[i-1]!=a[i-2])///满足条件{dp[i]=(dp[i]+dp[i-2])%MOD;}if(b[a[i]]==0) num++;///来了一个新元素b[a[i]]++;while(k<i-2 && num>=3){b[a[k]]--;if(b[a[k]]==0)num--;k++;}if(j<k) dp[i]+=sum[k-1]-sum[j];dp[i]=(dp[i]%MOD+MOD)%MOD;sum[i]=(sum[i-1]+dp[i])%MOD;}cout<<dp[n]<<endl;}int main()
{init();ll t = 1;///scanf("%lld", &t);while(t--){solve();}return 0;
}

ARC 128D - Neq Neq(dp+组合数学+思维)相关推荐

  1. ARC 123 D - Inc, Dec - Decomposition (思维构造+DP)

    链接 题意: 给出A序列,让你构造出B,C序列要求满足: Bi+Ci=AiB_i+C_i=A_iBi​+Ci​=Ai​ B序列递增 C序列递减 使得∑∣Bi∣+∣Ci∣\sum |B_i|+|C_i| ...

  2. 【题解】AtCoder ARC128D - Neq Neq

    题意:有 NNN 个球排成一行,编号为 111 到 NNN . 第 iii个球上写着一个数AiA_iAi​. 你可以执行下列操作任意多次: 选三个相邻的位置 xxx, yyy, zzz (1≤x< ...

  3. CodeForces - 336D Vasily the Bear and Beautiful Strings(dp+组合数学)

    题目链接:点击查看 题目大意:给出一个 01 字符串,规定求值的过程如下: 每次选择末尾的两个数字: 如果为 0 0 ,那么替换成一个 1 否则替换成一个 0 循环往复,直至只剩一个数字位置,剩下的数 ...

  4. ZOJ - 4114 Flipping Game(dp+组合数学)

    题目链接:点击查看 题目大意:给出一个长度为 n 的 01 字符串表示 n 个灯泡的状态,1 为点亮,0 为熄灭,现在需要进行 k 轮操作,每轮操作可以选择恰好 m 个位置,将灯泡的状态置反,现在给出 ...

  5. 【BZOJ 3294】 3294: [Cqoi2011]放棋子 (DP+组合数学+容斥原理)

    3294: [Cqoi2011]放棋子 Description Input 输入第一行为两个整数n, m, c,即行数.列数和棋子的颜色数.第二行包含c个正整数,即每个颜色的棋子数.所有颜色的棋子总数 ...

  6. Codeforces 1408 D. Searchlights(优化DP、思维)

    整理的算法模板合集: ACM模板 传送门 DP的思想,因为题目中有两个维度,数据达到了1e6,所以我们直接开二维数组显然不太恰当,而且我们的答案不好选取,我们可以使用一个技巧,开一维数组,用DP的下标 ...

  7. codeforces 808 E. Selling Souvenirs (dp+二分+思维)

    题目链接:http://codeforces.com/contest/808/problem/E 题意:最多有100000个物品最大能放下300000的背包,每个物品都有权值和重量,为能够带的最大权值 ...

  8. 2021牛客多校5 - Double Strings(dp+组合数学)

    题目链接:点击查看 题目大意:给出两个字符串 sss 和 ttt,要求 "一段相同的前缀" + "一个不同的字符(满足s[i]<t[j])"+ " ...

  9. HDU - 4248 A Famous Stone Collector(dp+组合数学)

    题目链接:点击查看 题目大意:给出 n 种不同种类的石子,每种石子的个数是 a[ i ] 个,记 sum 为石子的总数,问用 k ∈ [ 1 ,  sum ] 个石子组成的不同排列组合有多少种 题目分 ...

最新文章

  1. 树——二叉搜索树的实现
  2. day2 字符编码、列表、元组、字符串操作、字典
  3. 每天一道LeetCode-----找到所有被某个字符包围的另一个字符
  4. hash table(完全散列实现的哈希表)
  5. php预处理_如何用预处理让 PHP 更先进
  6. GitHub上12k Star的《Java工程师成神之路》中终于开放阅读了!
  7. python excel案例导入jira_Python操作Jira库常用方法解析
  8. Siri 自动拨打 911、Google 建筛查网站、IBM 测药物成分,国际抗疫在行动!
  9. JavaScript实现按字典排序进行md5加密, 以及个人在小程序也可以实现
  10. node-sass安装失败完美解决方法
  11. C# 双目摄像头测试软件
  12. Scratch3.0(一)初识Scratch3.0
  13. diskpart建立新卷
  14. Beamer Introduction
  15. android 系统 迷你pc,Remix mini:一款真正运行安卓系统的电脑
  16. MSI(Message Signaled Interrupt)/MSI-X
  17. 有一种风险让期权交易员如坐针毡——谨慎管理 “大头针风险”
  18. 兴趣变高薪副业,知名插画师走尺带你感受插画的魅力
  19. 如何在WhatsApp中引用某人
  20. [附源码]Nodejs计算机毕业设计木棉堂水果电商平台Express(程序+LW)

热门文章

  1. msm8996平台的一些debug方法
  2. ueditor编辑器上传图片的显示问题
  3. 天翼云服务器硬盘怎么挂载,用s3fs挂载天翼OOS到服务器
  4. 阿里巴巴算法岗编程题:菜鸟仓库
  5. python绘制正态分布图_用python制作正态分布图
  6. Android如何实现APP自动更新
  7. IBM发展过程中给我们带来什么启示?
  8. UI设计初学者必备的工具以及学习路线(附思维导图)
  9. Zero-shot Learning零样本学习 论文阅读(五)——DeViSE:A Deep Visual-Semantic Embedding Model
  10. 流行的权限管理 gem devise的定制