Codeforces 1105C Ayoub and Lost Array (计数DP)
<题目链接>
题目大意:
有一个长度为 n 的数列的未知数列,数列的每一个数的值都在区间 [l,r] 的范围内。现在问你能够构成多少个这样的数组,使得数组内的所有数的和能够被 3 整除。
解题分析:
类似于这种数据量大的计数问题,要不就是数学推公式,要不就是dp。
根据所有数之和能被3整除的性质,我们将所有数用%3的余数表示,推出状态转移方程:$$ dp[i][j+k]=dp[i-1][j]*num[k] $$
$dp[i][j]$表示:前$i$项之和余$j$的方案数。
这篇博客讲解的比较详细 >>>
#include <bits/stdc++.h>
using namespace std; typedef long long ll;
#define N int(2e5+7)
const int mod = 1e9+;
ll dp[N][]; int main(){
int n,l,r;
scanf("%d%d%d",&n,&l,&r);
int num0,num1,num2; //得到余数分别为0,1,2的数的个数
num0=r/-(l-)/;
num1=(r-+)/-(l-+)/;
num2=r-l+-num0-num1;
dp[][]=num0; //初始化dp第一项
dp[][]=num1;
dp[][]=num2;
for(int i=;i<=n;i++){
dp[i][]=((dp[i-][]*num0)%mod+(dp[i-][]*num1)%mod+(dp[i-][]*num2)%mod)%mod;
dp[i][]=((dp[i-][]*num0)%mod+(dp[i-][]*num1)%mod+(dp[i-][]*num2)%mod)%mod;
dp[i][]=((dp[i-][]*num0)%mod+(dp[i-][]*num1)%mod+(dp[i-][]*num2)%mod)%mod;
}
printf("%d\n",dp[n][]);
}
2019-02-22
Codeforces 1105C Ayoub and Lost Array (计数DP)的更多相关文章
- Codeforces Round #533 (Div. 2) C. Ayoub and Lost Array 【dp】
传送门:http://codeforces.com/contest/1105/problem/C C. Ayoub and Lost Array time limit per test 1 secon ...
- C. Ayoub and Lost Array cf dp
C. Ayoub and Lost Array time limit per test 1 second memory limit per test 256 megabytes input stand ...
- CodeForces - 1093F:Vasya and Array (DP&计数)
题意:N,K,L,以及给定长度为N的序列,表示其对应的颜色,-1表示还没有涂色,现在让你去涂色,使得最后没有大于等于L的连续的同色的情况. 思路:我们用dp[i][j]表示第i个位置颜色为j的合法方案 ...
- C. Ayoub and Lost Array(DP)
(又是被队友带着上分的一场--) 题目链接:http://codeforces.com/contest/1105/problem/C 题目大意:给你n,l,r.每一个数都是在l,r范围之内,然后问你这 ...
- codeforces 361 D. Levko and Array(dp+二分)
题目链接:http://codeforces.com/contest/361/problem/D 题意:最多可以修改K次数字,每次修改一个数字变成任意值,C=max(a[i+1]-a[i]):求操作之 ...
- Codeforces 1105C: Ayoub and Lost Array(递推)
time limit per test: 1 second memory limit per test: 256 megabytes input: standard input output: sta ...
- CodeForces 176B Word Cut (计数DP)
Word Cut Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Submit St ...
- 【计数dp】Array Without Local Maximums
参考博客:[CF1068D]Array Without Local Maximums(计数DP) [题意] n<=1e5 dp[i][j][k]表示当前第i个数字为j,第i-1个数字与第i个之间 ...
- Codeforces 176B【计数DP】
题意: 给你两个串s1,s2和一个K, 有一种操作是在一个串切开然后交换位置, 问s1有多少种方法经过K次这样的操作变成s2: 思路: (从来没接触过计数DP...还是太菜...参考了[大牛blog] ...
随机推荐
- 【python】spark+kafka使用
网上用python写spark+kafka的资料好少啊 自己记录一点踩到的坑~ spark+kafka介绍的官方网址:http://spark.apache.org/docs/latest/strea ...
- hdu4966 最小树形图+虚根
/* 辛辛苦苦调试半天, 过了样例,竟然没有ac!! 网上对比了ac代码,感觉添加一个虚根就能ac 但是想不明白为什么 */ /* 第二天想了下,知道了为什么wa:因为从等级0连到其他课程等级i的不止 ...
- FFmpeg 常用指令集合
不精确裁剪视频 # -ss 指定从什么时间开始 # -t 指定需要截取多长时间 # -i 指定输入文件 ffmpeg -ss 00:00:00 -t 00:00:30 -i test.mp4 -vco ...
- python接收邮件
# -*- coding: utf-8 -*- import poplib import email from email.parser import Parser from email.header ...
- 饮冰三年-人工智能-Python-13Python基础之运算符与数据类型
1:算数运算符 + - * / ** % // 2: 成员运算符 in not in name = """张三""" if "张& ...
- 在 Python 中使用 JSON
在 Python 中使用 JSON 本教程将会教我们如何使用 Python 编程语言编码和解码 JSON.让我们先来准备环境以便针对 JSON 进行 Python 编程. 环境 在我们使用 Pytho ...
- DDD实践:领域事件
要求:修改good表,添加 organization 基础定义 用于引发和调度事件的延迟方法 AddDomainEvent Domain\SeedWork\Entity.cs public abstr ...
- VS2017远程调试C#或 Visual Studio 中的 Visual Basic 项目
来源:远程调试C#或 Visual Studio 中的 Visual Basic 项目 若要调试已部署在另一台计算机的 Visual Studio 应用程序,安装和在其中部署您的应用程序的计算机上运行 ...
- 解开一个疑惑,为什么LVS开放的端口,使用netstat或ss命令,不能查找到其监听的端口呢?
RT, 这个疑问,本周一直在心里,今天找到一个说法. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 另外LVS规则算是内核方法,用netstat -ntulp也显 ...
- 从oracle到mysql
过去四年一直是使用oracle,现在要开始使用mysql了,对于使用中发现的不同之处,我在此记录 mysql在linux下表名区分大小写,windows下表名不区分大小写 mysql没有number类 ...