题目链接: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+树状数组优化)的更多相关文章

  1. Codeforces 909C Python Indentation:树状数组优化dp

    题目链接:http://codeforces.com/contest/909/problem/C 题意: Python是没有大括号来标明语句块的,而是用严格的缩进来体现. 现在有一种简化版的Pytho ...

  2. Codeforces 946G Almost Increasing Array (树状数组优化DP)

    题目链接   Educational Codeforces Round 39 Problem G 题意  给定一个序列,求把他变成Almost Increasing Array需要改变的最小元素个数. ...

  3. 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 ...

  4. 【eJOI2020】考试(dp & 树状数组优化)

    Description \(n\) 个正整数排成一列,每个位置 \(i\) 有一个初始值 \(A_i\) 以及目标值 \(B_i\). 一次操作可以选定一个区间 \([l, r]\),并将区间内所有数 ...

  5. Codeforces 1085G(1086E) Beautiful Matrix $dp$+树状数组

    题意 定义一个\(n*n\)的矩阵是\(beautiful\)的,需要满足以下三个条件: 1.每一行是一个排列. 2.上下相邻的两个元素的值不同. 再定义两个矩阵的字典序大的矩阵大(从左往右从上到下一 ...

  6. bzoj 3594: [Scoi2014]方伯伯的玉米田 dp树状数组优化

    3594: [Scoi2014]方伯伯的玉米田 Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 314  Solved: 132[Submit][Sta ...

  7. FZU2236 第十四个目标 dp+树状数组优化

    分析:这种题烂大街,n^2,然后数据结构优化下到nlogn,离散化 #include <cstdio> #include <cstring> #include <queu ...

  8. CodeForces - 597C Subsequences 【DP + 树状数组】

    题目链接 http://codeforces.com/problemset/problem/597/C 题意 给出一个n 一个 k 求 n 个数中 长度为k的上升子序列 有多少个 思路 刚开始就是想用 ...

  9. CodeForces - 314C Sereja and Subsequences (树状数组+dp)

    Sereja has a sequence that consists of n positive integers, a1, a2, ..., an. First Sereja took a pie ...

随机推荐

  1. Forefront TMG 之 ISP 冗余传输链路(ISP-R)

    在 Forefront TMG 中,新增了ISP 冗余传输链路功能:在 TMG 中,你可以同时使用两条活动的外部链路,使用模式分为以下两种: 故障转移模式:在主要链路工作正常的情况下,所有的流量都通过 ...

  2. webform ajax 上传文件+参数

    今天维护webform项目时,有个需求需要在一个ajax中上传excel和多个参数.网上没怎么找到答案,这边做个笔记. 首先上页面大体这样 <form id= "uploadForm& ...

  3. September 04th 2017 Week 36th Monday

    Try not to become a man of success but rather try to become a man of value. 不要努力去做一个成功的人,而要努力去做一个有价值 ...

  4. UserUI程序实现过程简述

    1.__tmainCRTStartup 2. mainret = _tWinMain( (HINSTANCE)&__ImageBase, NULL, lpszCommandLine, Star ...

  5. 2018.08.30 21:12 第一个Django程序完成

    from django.http import HttpResponse def hello(request): return HttpResponse("Hello world ! &qu ...

  6. webpack react 单独打包 CSS

    webpack react 单独打包 CSS webpack require css的方法,默认会把css 打入到js文件中,加载顺序有问题,如果需要打出独立的css文件 操作步骤: step1: 安 ...

  7. SQLServer------查询结果为空的列赋默认值

    ISNULL(字段,默认值) 如:SELECT ISNULL(name,'无名') FROM [User]

  8. Web 通信 之 长连接、长轮询(转)

    Web 通信 之 长连接.长轮询(long polling) 基于HTTP的长连接,是一种通过长轮询方式实现"服务器推"的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强 ...

  9. Spring源码分析之IOC容器(一)

    Spring作为当今风靡世界的Web领域的第一框架,作为一名Java开发程序员是一定要掌握的,除了需要掌握基本的使用之外,更需要掌握其实现原理,因为我们往往在开发的过程中,会出现各种各样的异常问题.而 ...

  10. AOP-切面是如何织入到目标对象中的

    切面是如何织入到目标对象中的???这大概是每个人在学习AOP的过程中都会产生的疑问吧. 当我们在调用目标方法时候,也就是通过代理对象调用目标方法的时候,比如:JdkDynamicAopProxy会通过 ...