当前位置: 首页 > news >正文

HDU - 6806 Equal Sentences(dp)

传送门


挺容易看出来的dp,我们可以将问题简化为从第二个字符串开始,是否和前一个字符串交换位置,那么不难得出如下状态定义:

d [ i ] [ 0 / 1 ] d[i][0/1] d[i][0/1]表示到第 i i i个字符串和前一个交换/不交换的字符串排列个数,那么状态转移方程为:

  • d [ i ] [ 0 ] = d [ i − 1 ] [ 0 ] + d [ i − 1 ] [ 1 ] d[i][0]=d[i-1][0]+d[i-1][1] d[i][0]=d[i1][0]+d[i1][1]
  • d [ i ] [ 0 ] = ( s [ i ] = = s [ i − 1 ] ? 0 : d [ i − 1 ] [ 0 ] ) d[i][0]=(s[i]==s[i-1]?0:d[i-1][0]) d[i][0]=(s[i]==s[i1]?0:d[i1][0])

初始化为 d [ 1 ] [ 0 ] = 1 , d [ 1 ] [ 1 ] = 0 d[1][0]=1,d[1][1]=0 d[1][0]=1,d[1][1]=0,最终的答案即为 d [ n ] [ 0 ] + d [ n ] [ 1 ] d[n][0]+d[n][1] d[n][0]+d[n][1]

#include <bits/stdc++.h>
#include <unordered_map>
#include <unordered_set>
using namespace std;
#define fi first
#define se second
#define pb push_back
#define ins insert
#define Vector Point
#define lowbit(x) (x&(-x))
#define mkp(x,y) make_pair(x,y)
#define mem(a,x) memset(a,x,sizeof a);
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
typedef pair<int,int> pii;
typedef pair<double,double> pdd;
const double eps=1e-8;
const double pi=acos(-1.0);
const int inf=0x3f3f3f3f;
const double dinf=1e300;
const ll INF=1e18;
const int Mod=1e9+7;
const int maxn=1e5+10;

ll d[maxn][2];
char s[maxn][12];

int main(){
    //freopen("in.txt","r",stdin);
    //freopen("out.txt","w",stdout);
    //ios_base::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int t,n;
    scanf("%d",&t);
    while(t--){
        scanf("%d",&n);
        for(int i=1;i<=n;i++)
            scanf("%s",s[i]);
        d[1][0]=1,d[1][1]=0;
        for(int i=2,x;i<=n;i++){
            d[i][0]=(d[i-1][0]+d[i-1][1])%Mod;
            if(strcmp(s[i],s[i-1])!=0)
                d[i][1]=d[i-1][0];
            else d[i][1]=0;
        }
        ll ans=(d[n][0]+d[n][1])%Mod;
        printf("%lld\n",ans);
    }
    return 0;
}

相关文章:

  • UltraWinGrid自适应列宽/行高
  • HDU - 6812 Kindergarten Physics(分块/规律)
  • UltraGrid 卡片模式列自适应宽度
  • 2020牛客暑期多校第七场 B - Mask Allocation(思维)
  • 编程修改BIN等二进制文件
  • 2020牛客暑期多校第七场 H - Dividing(整除分块)
  • 2020牛客暑期多校第八场 K - Kabaleo Lite(贪心)
  • 什么是程序员正确的职场心态?
  • 2020牛客暑期多校第八场 I - Interesting Computer Game(并查集+离散化)
  • [J2ME]url请求返回参数非法(java.lang.illegalArgument)
  • 如果将OpenGL的MVP矩阵设置为单位阵
  • 2020智算之道复赛 C - 有向无环图(思维+二进制拆分)
  • 技术人生
  • 2020智算之道复赛 D - 分数(素筛)
  • 无stencil buffer,绘制半透明planar shadow的一种方法
  • IE9 : DOM Exception: INVALID_CHARACTER_ERR (5)
  • .pyc 想到的一些问题
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 03Go 类型总结
  • 0x05 Python数据分析,Anaconda八斩刀
  • 2017 年终总结 —— 在路上
  • AHK 中 = 和 == 等比较运算符的用法
  • Docker: 容器互访的三种方式
  • HTTP那些事
  • Java 最常见的 200+ 面试题:面试必备
  • JavaScript实现分页效果
  • Mybatis初体验
  • sublime配置文件
  • tab.js分享及浏览器兼容性问题汇总
  • TypeScript迭代器
  • 爱情 北京女病人
  • 程序员最讨厌的9句话,你可有补充?
  • 分类模型——Logistics Regression
  • 基于游标的分页接口实现
  • 前端学习笔记之观察者模式
  • 实现简单的正则表达式引擎
  • Prometheus VS InfluxDB
  • puppet连载22:define用法
  • Python 之网络式编程
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • (4)(4.6) Triducer
  • (Git) gitignore基础使用
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (转) Face-Resources
  • (转)http协议
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .Net组件程序设计之线程、并发管理(一)
  • [ Linux 长征路第五篇 ] make/Makefile Linux项目自动化创建工具
  • [2021ICPC济南 L] Strange Series (Bell 数 多项式exp)
  • [AI]文心一言出圈的同时,NLP处理下的ChatGPT-4.5最新资讯
  • [Android View] 可绘制形状 (Shape Xml)