Codeforces 909 C. Python Indentation (DP+树状数组优化)
题目链接:Python Indentation
题意:
Python是没有大括号来标明语句块的,而是用严格的缩进来体现。现在有一种简化版的Python,只有两种语句:
(1)'s'语句:Simple statements. 相当于一般语句。(2)'f'语句:For statements. 相当于for循环,并且规定它的循环体不能为空。
然后给你一段没有缩进的Python程序,共n行(n <= 5000)。问你添加缩进后,有多少种合法且不同的Python程序。
题解:题目解析
DP过去,如果第i个位置是'f'的话,dp[i][j]只加到dp[i+1][j+1]上,如果是‘s’则可以加到从dp[i][0,j]的所有数上。区间假发可以用树状数组优化,把复杂度降到(n×n×log(n))。这道题让我发现long long操作要比int慢一倍左右,还有MOD操作是真滴慢,遇到MOD操作可以用if降低时间。
#include<bits/stdc++.h>
using namespace std;
const int MAX_N = 5e3+;
const int MOD = 1e9+;
char vec[MAX_N];
int dp[MAX_N][MAX_N];
void add(int pos,int x,int num)
{
if(num<) num+=MOD;
for(;x<MAX_N;x+=(x&-x))
{
dp[pos][x]=dp[pos][x]+num;
if(dp[pos][x]>=MOD) dp[pos][x]-=MOD;
}
}
int sum(int pos,int x)
{
int ans = ;
for(;x>;x-=(x&-x))
{
ans=ans+dp[pos][x];
if(ans>=MOD) ans-=MOD;
}
return ans;
}
int main()
{
int N,M,T;
while(cin>>N)
{
memset(dp,,sizeof(dp));
for(int i=;i<=N;i++)
{
cin>>vec[i];
}
dp[][] = ;
for(int i=;i<=N;i++)
{
for(int j=;j<=i;j++)
{
int t = sum(i,j);
if(vec[i] == 'f')
{
add(i+,j+,t);
add(i+,j+,-t);
}
else
{
add(i+,,t);
add(i+,j+,-t);
}
}
}
int ans = ;
for(int i=;i<=N;i++)
{
ans = ans+sum(N,i);
if(ans>=MOD) ans-=MOD;
}
cout<<(ans+MOD)%MOD<<endl;
}
return ;
}
Codeforces 909 C. Python Indentation (DP+树状数组优化)的更多相关文章
- Codeforces 909C Python Indentation:树状数组优化dp
题目链接:http://codeforces.com/contest/909/problem/C 题意: Python是没有大括号来标明语句块的,而是用严格的缩进来体现. 现在有一种简化版的Pytho ...
- Codeforces 946G Almost Increasing Array (树状数组优化DP)
题目链接 Educational Codeforces Round 39 Problem G 题意 给定一个序列,求把他变成Almost Increasing Array需要改变的最小元素个数. ...
- 2015南阳CCPC C - The Battle of Chibi DP树状数组优化
C - The Battle of Chibi Description Cao Cao made up a big army and was going to invade the whole Sou ...
- 【eJOI2020】考试(dp & 树状数组优化)
Description \(n\) 个正整数排成一列,每个位置 \(i\) 有一个初始值 \(A_i\) 以及目标值 \(B_i\). 一次操作可以选定一个区间 \([l, r]\),并将区间内所有数 ...
- Codeforces 1085G(1086E) Beautiful Matrix $dp$+树状数组
题意 定义一个\(n*n\)的矩阵是\(beautiful\)的,需要满足以下三个条件: 1.每一行是一个排列. 2.上下相邻的两个元素的值不同. 再定义两个矩阵的字典序大的矩阵大(从左往右从上到下一 ...
- bzoj 3594: [Scoi2014]方伯伯的玉米田 dp树状数组优化
3594: [Scoi2014]方伯伯的玉米田 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 314 Solved: 132[Submit][Sta ...
- FZU2236 第十四个目标 dp+树状数组优化
分析:这种题烂大街,n^2,然后数据结构优化下到nlogn,离散化 #include <cstdio> #include <cstring> #include <queu ...
- CodeForces - 597C Subsequences 【DP + 树状数组】
题目链接 http://codeforces.com/problemset/problem/597/C 题意 给出一个n 一个 k 求 n 个数中 长度为k的上升子序列 有多少个 思路 刚开始就是想用 ...
- CodeForces - 314C Sereja and Subsequences (树状数组+dp)
Sereja has a sequence that consists of n positive integers, a1, a2, ..., an. First Sereja took a pie ...
随机推荐
- Forefront TMG 之 ISP 冗余传输链路(ISP-R)
在 Forefront TMG 中,新增了ISP 冗余传输链路功能:在 TMG 中,你可以同时使用两条活动的外部链路,使用模式分为以下两种: 故障转移模式:在主要链路工作正常的情况下,所有的流量都通过 ...
- webform ajax 上传文件+参数
今天维护webform项目时,有个需求需要在一个ajax中上传excel和多个参数.网上没怎么找到答案,这边做个笔记. 首先上页面大体这样 <form id= "uploadForm& ...
- September 04th 2017 Week 36th Monday
Try not to become a man of success but rather try to become a man of value. 不要努力去做一个成功的人,而要努力去做一个有价值 ...
- UserUI程序实现过程简述
1.__tmainCRTStartup 2. mainret = _tWinMain( (HINSTANCE)&__ImageBase, NULL, lpszCommandLine, Star ...
- 2018.08.30 21:12 第一个Django程序完成
from django.http import HttpResponse def hello(request): return HttpResponse("Hello world ! &qu ...
- webpack react 单独打包 CSS
webpack react 单独打包 CSS webpack require css的方法,默认会把css 打入到js文件中,加载顺序有问题,如果需要打出独立的css文件 操作步骤: step1: 安 ...
- SQLServer------查询结果为空的列赋默认值
ISNULL(字段,默认值) 如:SELECT ISNULL(name,'无名') FROM [User]
- Web 通信 之 长连接、长轮询(转)
Web 通信 之 长连接.长轮询(long polling) 基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强 ...
- Spring源码分析之IOC容器(一)
Spring作为当今风靡世界的Web领域的第一框架,作为一名Java开发程序员是一定要掌握的,除了需要掌握基本的使用之外,更需要掌握其实现原理,因为我们往往在开发的过程中,会出现各种各样的异常问题.而 ...
- AOP-切面是如何织入到目标对象中的
切面是如何织入到目标对象中的???这大概是每个人在学习AOP的过程中都会产生的疑问吧. 当我们在调用目标方法时候,也就是通过代理对象调用目标方法的时候,比如:JdkDynamicAopProxy会通过 ...