首页 > 其他分享 >P8675 [蓝桥杯 2018 国 B] 搭积木

P8675 [蓝桥杯 2018 国 B] 搭积木

时间:2024-05-22 18:08:32浏览次数:28  
标签:pre suf ll 蓝桥 搭积木 2018 mod dp 105

原题链接

题解

1.请务必读清题干意思
2.如果以最顶端积木的位置为状态,是可以穷尽所有情况的,则状态为 \(dp[i][l][r]\) ,最顶端第 \(i\) 层只在区间 \([l,r]\) 内连续放置积木有几种方法
3.状态转移方程 $dp[i][l][r]=\sum_1^l \sum_r^m dp[i+1][x][y] $
把 \(x,y\) 看成二维坐标上的点,则上图的sum可以用二维差分的方式求出

code

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll pre[105][105]={0};
int suf[105][105]={0};
ll dp[105][105][105]={0};
const ll mod=1e9+7;
int main()
{
    ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    ll n,m;
    cin>>n>>m;
    for(ll i=1;i<=n;i++)
    {
        string s;
        cin>>s;
        for(ll j=1;j<=m;j++)
        {
            pre[i][j]=pre[i][j-1]+(s[j-1]=='X');
        }
    }

    for(ll i=n;i>=1;i--)
    {
        for(ll l=1;l<=m;l++)
        {
            for(ll r=m;r>=l;r--)
            {
                if(pre[i][r]-pre[i][l-1]!=0) continue;
                if(i==n) dp[i][l][r]=1;
                else dp[i][l][r]=suf[l][r];
                dp[i][l][r]%=mod;
            }
        }

        for(int l=1;l<=m;l++)
        {
            for(int r=m;r>=1;r--)
            {
                suf[l][r]=((suf[l-1][r]+suf[l][r+1])%mod-suf[l-1][r+1])%mod+dp[i][l][r];
                suf[l][r]%=mod;
            }
        }
    }

    ll ans=1;
    for(ll i=1;i<=n;i++)
    {
        for(ll l=1;l<=m;l++)
        {
            for(ll r=l;r<=m;r++)
            {
                ans+=dp[i][l][r];
                //printf("(%d,%d,%d)  %d\n",i,l,r,dp[i][l][r]);
                ans%=mod;
            }
        }
    }
    cout<<ans;
    return 0;
}

标签:pre,suf,ll,蓝桥,搭积木,2018,mod,dp,105
From: https://www.cnblogs.com/pure4knowledge/p/18206837

相关文章

  • 蓝桥杯-日志统计
    小明维护着一个程序员论坛。现在他收集了一份”点赞”日志,日志共有N行。其中每一行的格式是:tsid表示在ts时刻编号id的帖子收到一个”赞”。现在小明想统计有哪些帖子曾经是”热帖”。如果一个帖子曾在任意一个长度为D的时间段内收到不少于K个赞,小明就认为这个帖......
  • 洛谷 P4383 [八省联考 2018] 林克卡特树
    原题等价于在树上选出\(k+1\)条不相交链,最大化边权和。树形DP。设\(f_{u,k,0/1/2}\)表示在\(u\)的子树中选了\(k\)条链,\(u\)的度数为\(0,1,2\)的最大边权和。注意到状态里缺了链退化为单个点的情况,可以把它放到\(f_{u,k,2}\)中(相当于自环)。转移时分讨一......
  • P8624 [蓝桥杯 2015 省 AB] 垒骰子
    原题链接题解code#include<bits/stdc++.h>usingnamespacestd;#definelllonglongconstllmod=1e9+7;lla[7][7]={0},e[7]={0};voidcf1(){lltem[7]={0};for(inti=1;i<=6;i++){for(intj=1;j<=6;j++){t......
  • 2018元旦快乐!嘿嘿嘿……
    Tips:当你看到这个提示的时候,说明当前的文章是由原emlog博客系统搬迁至此的,文章发布时间已过于久远,编排和内容不一定完整,还请谅解`2018元旦快乐!嘿嘿嘿……日期:2018-1-1阿珏谈天说地浏览:2057次评论:0条emmm~首先跟来访的朋友们说声元旦快乐!新年快乐!狗年......
  • P8764 [蓝桥杯 2021 国 BC] 二进制问题
    P8764[蓝桥杯2021国BC]二进制问题一、问题简析本题采用数位dp求解。令\(f[i][j]=\)在\(i\)位二进制中,有\(j\)个\(1\),共有几个数。(相当于求组合数)由于数据范围为\(1\leN\le10^{18}\),最大二进制位数设置为70,防止溢出。预处理组合数for(inti=0;i<MAX;+......
  • 蓝桥杯备忘录——超声波
    有关蓝桥杯的超声波代码实测测距能达到两米多以下是代码voidchao_init(){ uchari; for(i=0;i<8;i++) { na1=1;//连续发送8个频率为40Khz的超声波信号 Delay12us(); na1=0; Delay12us(); }}//////////////////////////////////////////////////接下......
  • Weblogic T3反序列化漏洞(CVE-2018-2628)
    目录前言T3协议概述漏洞复现修复方案前言WebLogicServer是一个企业级的应用服务器,由Oracle公司开发,支持完整的JavaEE规范,包括EJB、JSP、Servlet、JMS等,适合大型分布式应用和高负载场景。T3协议概述T3协议(Two-TierTCP/IPProtocol),是WebLogic中的一种专有协议,建立在TCP/IP协......
  • 蓝桥杯国赛训练第二周
    H重建道路一道区间DP好题一开始以为有多种不同的括号匹配次序而导致自己一头大雾wuw,首先看到括号匹配就要想到用栈来求出每个括号对应的匹配项,对于一个区间来说,其左括号一定是具有与之对应的右括号存在时染色才有意义,所以我们要求出每个括号对应的位置\(should[i]\),首先设......
  • P8684 [蓝桥杯 2019 省 B] 灵能传输 题解
    题目传送门本题涉及到了\(3\)种算法:前缀和,排序以及贪心。(1)前缀和本题实际上要求通过某种灵能传输可以使得该序列的最大值最小。而由前缀和可知,当某一个前缀和序列保持有序(或前缀和序列表示的函数单调)时,其\(s[i]-s[i-1]\)的最大值可以达到最小。通过对几个样例的观察......
  • P8741 [蓝桥杯 2021 省 B] 填空问题 题解
    题目传送门试题A:空间【解析】本题考察计算机存储的基础知识,只要掌握空间存储的换算方法,就能够算出答案。【程序】#include<bits/stdc++.h>usingnamespacestd;intmain(){printf("%d\n",256*8/32*1024*1024);return0;}【答案】67108864......