牛客网 练习赛11 B题 假的字符串 tire+topsort判环

值得苦练的100道Python经典练手题(全网最全,附详细答案,建议收藏) 这100道Python练习题涵盖了从基础语法到高级算法、从数据库操作到Web开发的各个方面,是备考数据库系统工程师的绝佳素材。建议按照章节顺序逐一练习,遇到难点可反复钻研,真正掌握每一道题背后的知识点。通过这些练习,不仅能提升Python编程能力,还能加深对数据库系统原理的理解,为考试和实际工作打下坚实基础。 阅读详情

题目链接:https://www.nowcoder.com/acm/contest/59#submit/{%22problemIdFilter%22%3A15049%2C%22statusTypeFilter%22%3A%225%22%2C%22page%22%3A1}

链接:https://www.nowcoder.com/acm/contest/59/B
来源:牛客网

题目描述

给定n个字符串,互不相等,你可以任意指定字符之间的大小关系(即重定义字典序),求有多少个串可能成为字典序最小的串,并输出它们
输入描述:

第一行一个数表示n
之后n行每行一个字符串表示给定的字符串

输出描述:

第一行输出一个数x表示可行的字符串个数
之后输出x行,每行输出一个可行的字符串
输出的顺序和输入的顺序一致

示例1
输入

6
mcfx
ak
ioi
wen
l
a

输出

5
mcfx
ioi
wen
l
a

备注:

对于100%的数据,
n <= 30000 , 字符串总长<= 300000
字符集为小写字符

解析:

先把字符串全部插入到字典树中,这里要用数组表示的字典树,不然会MLE

1.如果存在字符串A是字符串B的前缀,那么字符串B肯定不可能是最小的情况

2.否则的话,我们判断一个字符串是不是可能最小,我们只要使该字符串的字母是同阶下最小的就行了。譬如说mcfc mcfx mcfm mm xx 要使mcfc最小,那么首先他的第一个字母是要在所有第一个字母中最小的(m

#include<iostream>
#include<algorithm>
#include<cstring>
#include<cstdio>
#include<string>
#include<set>
#include<vector>

using namespace std;

const int maxn = 1000005;
typedef long long ll;

char str[maxn];
vector<string> dir;
vector<int> ans;
bool vis[30];
set<int> G[30];

bool dfs(int x,int y){//暴力dfs判环,  复杂度可以是挺大的....如果构造了一些数据的话.
    if(x==y&&vis[y]) return true;
    if(vis[x]) return false;
    vis[x]=true;
    for(set<int>::iterator it=G[x].begin();it!=G[x].end();it++){
        int v = *it;
        if(dfs(v,y)) return true;
    }
    return false;
}

struct Trie {
    int ch[maxn][30];
    int val[maxn];
    int sz;
    Trie() {sz = 1; memset(ch[0], 0, sizeof(ch[0]));}
    void clear(){sz = 1;memset(ch[0], 0, sizeof(ch[0]));}
    int idx(char c) {   return c - 'a';     }

    void insert(char *s, int v) {
            int u = 0;
            int n = strlen(s);
            for (int i = 0; i < n; i++) {
                int c = idx(s[i]);
                if (!ch[u][c]) {
                    memset(ch[sz], 0, sizeof(ch[sz]));
                    val[sz] = 0;
                    ch[u][c] = sz++;
                }
        //    val[u]=v;
            u = ch[u][c];
        }
        val[u] = v;
    }

    bool ok(string& s,int v) {
        int u = 0;
        int len=s.size();
        for(int i=0;i<26;i++) G[i].clear();
        for (int i = 0; i < len; i++) {
            int c = idx(s[i]);
            if (!ch[u][c]) break;
            for(int j=0;j<26;j++) if(ch[u][j]&&j!=c) {
                G[c].insert(j);
            }
            u = ch[u][c];
            if(val[u]&&val[u]!=v) return false;
        }
        for(int i=0;i<26;i++) {
            memset(vis,false,sizeof(vis));
            if(dfs(i,i)) return false;
        }
        return true;
    }
};

Trie tree;

int main() {
        int n;
        scanf("%d",&n);
        tree.clear();
        for (int i = 1; i <= n; i++) {
            scanf("%s", str);
            string s(str);
            tree.insert(str, i);
            dir.push_back(s);
        }
        for(int i=0;i<dir.size();i++){
            if(tree.ok(dir[i],i+1)){
                ans.push_back(i);
            }
        }
        printf("%d\n",ans.size());
        for(int i=0;i<ans.size();i++){
            cout<<dir[ans[i]]<<'\n';
        }
    return 0;
}

hsh的,用topsort,这样的话O(n);

#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
#define CLR(x,y) memset(x,y,sizeof(x))
#define LC(x) (x<<1)
#define RC(x) ((x<<1)+1)
#define MID(x,y) ((x+y)>>1)
typedef pair<int, int> pii;
typedef long long LL;
const double PI = acos(-1.0);
const int N = 30005;
const int M = 300005;
const int ALL = (1 << 26) - 1;
struct Trie
{
    int nxt[26], cnt;
    void init()
    {
        for (int i = 0; i < 26; ++i)
            nxt[i] =  0;
        cnt = 0;
    }
} L[M];
int sz;
char s[M];
int st[N], len[N], pos[N];
int E[30][30], deg[30], A[30][30];//A用来去重边.

void clr()
{
    for(register int i = 0; i < 30; ++i)
    {
        deg[i] = 0;
        for (register int j = 0; j < 30; ++j)
            E[i][j] = A[i][j] = 0;
    }
}
void init()
{
    sz = 0;
    L[sz++].init();
}
inline int newnode()
{
    L[sz].init();
    return sz++;
}
inline int check(char s[], int len)
{
    int u = 0;
    for (int i = 0; i < len; ++i)
    {
        int v = s[i] - 'a';
        if(L[u].cnt)
            return false;
        for (register int j = 0; j < 26; ++j)
        {
            if(v != j && L[u].nxt[j] && !A[v][j])
            {
                A[v][j] = 1;
                E[v][++E[v][0]] = j;
                ++deg[j];
            }
        }
        u = L[u].nxt[v];
    }
    return true;
}
inline int topsort()
{
    queue<int>Q;
    int state = 0;
    for (int i = 0; i < 26; ++i)
    {
        if(!deg[i])
            Q.push(i), state |= (1 << i);
    }
    while (!Q.empty())
    {
        int u = Q.front();
        Q.pop();
        for (register int i = 1; i <= E[u][0]; ++i)
        {
            int v = E[u][i];
            if(--deg[v] == 0)
            {
                Q.push(v);
                state |= (1 << v);
            }
        }
    }
    return state == ALL;
}
inline void ins(char s[], int len)
{
    int u = 0;
    for (int i = 0; i < len; ++i)
    {
        int v = s[i] - 'a';
        if(!L[u].nxt[v])
            L[u].nxt[v] = newnode();
        u = L[u].nxt[v];
    }
    L[u].cnt = 1;
}
int main(void)
{
    register int n, i, j, ed;
    scanf("%d", &n);
    init();
    for (i = 1; i <= n; ++i)
    {
        st[i] = st[i - 1] + len[i - 1];
        scanf("%s", s + st[i]);
        len[i] = strlen(s + st[i]);
        ins(s + st[i], len[i]);
    }
    for (i = 1; i <= n; ++i)
    {
        clr();
        if(check(s + st[i], len[i]) && topsort())
        {
            pos[++pos[0]] = i;
        }
    }
    printf("%d\n", pos[0]);
    for (i = 1; i <= pos[0]; ++i)
    {
        int x = pos[i];
        for (ed = st[x] + len[x], j = st[x]; j < ed; ++j)
            putchar(s[j]);
        puts("");
    }
    return 0;
}

抄着kalids的代码的:

#include<bits/stdc++.h>
using namespace std;

#define LL long long
#define N 300010
#define inf 0x3f3f3f3f
#define pb push_back
#define fi first
#define se second
#define mod 9999973
#define md ((l+r)>>1)
#define ls (i<<1)
#define rs (i<<1|1)
const int ALL=(1<<26)-1;
int sz,n;
int A[30][30],E[30][30],st[N],deg[30],pos[N],len[N];
char s[N];
struct Tire{
    int nxt[26],cnt;
    void init(){
        for(int i=0;i<26;++i)
            nxt[i]=0;
        cnt=0;
    }
}L[N];
inline int newnode(){
    L[sz].init();
    return sz++;
}
void insert(char s[],int len){
    int u=0;
    for(int i=0;i<len;++i){
        int v=s[i]-'a';
        if(!L[u].nxt[v]){
            L[u].nxt[v]=newnode();
        }
        u=L[u].nxt[v];
    }
    L[u].cnt=1;
    //printf("L[%d].cnt=1",u);
}
void init(){
    sz=0;
    L[sz++].init();
}
inline bool topsort(){
    int state=0;
    queue<int>Q;
    for(int i=0;i<26;++i){
        if(!deg[i])state|=(1<<i),Q.push(i),deg[i]--;
    }
    while(!Q.empty()){
        int u=Q.front();Q.pop();
        for(int i=1;i<=E[u][0];++i){
            int v=E[u][i];
            if(--deg[v]==0){
                Q.push(v);
                state|=(1<<v);
            }
        }
    }
    return state==ALL;
}
bool check(char s[],int len){
    int u=0;
    for(int i=0;i<len;++i){
        int v=s[i]-'a';
        if(L[u].cnt)return false;
        for(int j=0;j<26;++j){
            if(v!=j&&L[u].nxt[j]&&!A[v][j]){
                A[v][j]=1;
                E[v][++E[v][0]]=j;
                ++deg[j];
            }
        }
        u=L[u].nxt[v];
    }
    return true;
}
inline void clr(){
    for(int i=0;i<30;++i){
        deg[i]=0;
        for(int j=0;j<30;++j){
            A[i][j]=E[i][j]=0;
        }
    }
}

int main(){
    //freopen("in.txt","r",stdin);
    scanf("%d",&n);
    init();
    for(int i=1;i<=n;++i){
        st[i]=st[i-1]+len[i-1];
        scanf("%s",s+st[i]);
        len[i]=strlen(s+st[i]);
        //printf("i:%d   %s\n",i,s+st[i]);
        insert(s+st[i],len[i]);
    }
    //for(int i=1;i<=n;++i){
        //printf("st[i]: %d   len[i] : %d\n",st[i],len[i]);
    //}
    //printf("%d\n", sz);
    for(int i=1;i<=n;++i){
        clr();
        int t1=check(s+st[i],len[i]);
        int t2=topsort();
        //cout<<i <<' '<<t1<<' '<<t2<<endl;
        if(t1&&t2){
            pos[++pos[0]]=i;
            //printf("OK:i = %d\n",i);
        }
    }
    printf("%d\n",pos[0]);
    for(int i=1;i<=pos[0];++i){
        int x=pos[i];
        for(int ed=st[x]+len[x],start=st[x];start<ed;++start){
            putchar(s[start]);
        }puts("");
    }

}
Intel RealSense D435深度相机实战:从数据采集到点云生成的完整避坑指南 本文详细介绍了Intel RealSense D435深度相机的实战应用,从数据采集到点云生成的完整流程,并提供了避坑指南。内容包括环境配置、硬件调优、数据采集技巧、点云生成核心技术及典型场景解决方案,帮助开发者高效利用D435进行机器人导航、三维重建等应用。 阅读详情

相关推荐

高斯投影坐标正反算算法(python)

高斯坐标正反算算法,在正算的时候,y的第一个数字表示是用几度带换算的,第二个数字和第三个数字表示带号。该程序是根据武汉大学出版社出版的第三版的《大地测量学基础》编写, 用于课程实验学习。

weixin_64338372的博客 4588

行走路径——拓扑序dp / 记忆化搜索 + 判环

3828. 行走路径 题意: 给定一个 n*m 的矩阵,每个位置有一个数 x (1≤x≤4)。 规定只能按照 1→2→3→4→1→2→...1→2→3→4→1→2→...1→2→3→4→1→2→... 的顺序行走,并且称 1→2→3→41→2→3→41→2→3→4 为一轮。 问,在这个矩阵中,最多能走多少轮? 做法1:拓扑序+dp 做法2:记忆化搜索 ...

Mr_dimple的博客 443

GEE开发之ERA5(气温、降水、压力、风速等)数据获取和分析

前言:ERA5主要提供DAILY和MONTHLY两大类别数据,其中主要包括气温、降水、压力、风速等。

等待着冬天的风的博客 3万+

拓扑排序(学习笔记)入门+判断是否有环

拓扑排序(学习笔记) 对一个有向无环图(DAG)进行拓扑排序。 实现: 1.在有向图中选一个没有前驱的顶点并且输出 2.从图中删除该顶点和所有出边 3.重复1、2步骤,直至所有顶点输出 初始化: vector<int>vec[maxn]; scanf("%d%d",&n,&m);//n个点,m条边 int n,m,u,v; int InDeg[maxn];//入度 w...

GW_Krystal的博客 911

射频指纹识别技术:原理、应用与深度学习实现

射频指纹识别(RFFI)是一种基于硬件特征的设备身份认证技术,通过分析无线设备发射信号中的独特硬件特征实现设备识别。其核心原理源于发射器硬件电路的非线性特性,如功率放大器的相位噪声和混频器的非线性失真,这些特征具有难以伪造的特点。在物联网和边缘计算场景中,RFFI技术展现出独特优势,尤其在智能家居和工业物联网中,能有效防止非法接入和设备伪造。深度学习方法的引入进一步提升了RFFI的性能,通过自动特征提取和端到端优化,显著提高了识别准确率。本文详细探讨了RFFI的技术原理、应用场景及实现方法,为相关领域的研究

weixin_30457465的博客 890

化学科学催化反应产率预测之Transformer建模SMILES(Datawhale AI 夏令营)

循环神经网络:由于所有的前文信息都蕴含在一个隐向量中,随着序列长度的增加,早期的上下文信息会逐渐被遗忘。卷积神经网络:受限的上下文窗口在建模长文本时存在天然不足。需要多层卷积操作才能处理长文本。在本篇文章中,我们学习了Transformer的基本架构及其在化学反应产率预测中的应用。通过利用Transformer的Encoder部分对SMILES进行建模,我们能够更有效地捕捉序列数据的特征,从而提高模型的预测性能。

不想宅的冷同学 1095

HDU 5961 传递(BFS)

传递 Problem Description 我们称一个有向图G是传递的,当且仅当对任意三个不同的顶点a,,若G中有 一条边从a到b且有一条边从b到c ,则G中同样有一条边从a到c。 我们称图G是一个竞赛图,当且仅当它是一个有向图且它的基图是完全图。换句 话说,将完全图每条边定向将得到一个竞赛图。 下图展示的是一个有4个顶点的竞赛图。   现在,给你两个有向图P =

Expecto__Patronum的博客 506

光耦选型避坑指南:如何根据CTR参数精准计算输入输出电阻(附24V工业场景实例)

本文深入解析光耦选型核心,聚焦电流传输比(CTR)参数及其衰减特性,提供从输出需求反向推导输入输出电阻的精准计算方法。文章以24V工业场景为例,结合光电耦合器数据手册,详细阐述了如何根据CTR最小值进行降额设计,并给出包含反接保护、TVS管等在内的完整保护电路方案,旨在构建高可靠、长寿命的信号隔离电路,避免因选型或设计不当导致的系统故障。

nept的博客 1040

拓扑排序dfs版+判环

以前就听说拓扑排序可以用dfs来写了,只是一直没有去尝试,想一想的话会觉得很复杂,dfs怎么排? 要从入度为0的点出发吗? 如果有多个入度为0的点,每个都dfs一遍吗?那他们不是会有重复不是会乱套? 总之,对于从来都是用bfs写拓扑的我来说,觉得用dfs简直不可思议。但是了解之后,买毛病!精彩!而且还学会了一张图如何判环(因为有环的图是不能拓扑排序的)。 总体思路就是:dfs + 栈。 ...

姬小野的博客 2675

DBC到ARXML:AUTOSAR CAN通信栈自动化配置完整指南

在AUTOSAR架构下,DBC(CAN数据库文件)与ARXML(AUTOSAR XML)分别扮演着描述总线通信和ECU内部配置的关键角色。DBC定义了网络上的报文与信号,而ARXML则是AUTOSAR工具链交换配置数据的标准格式。在实际的ECU开发中,如何将DBC中的通信信息高效、准确地转换为ARXML,并自动生成可编译的CAN通信栈BSW配置,是许多工程师面临的痛点。借助DaVinci Configurator等工具,我们可以通过自动化导入链路消除手工映射带来的字节序错误、信号起始位偏差等高风险问题,大幅

weixin_34183910的博客 536

[Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫战》--地图(一)

上面3章图是完成后的效果图 游戏已完成,除了英雄外,基本还原了90%的游戏内容,一共13关,20种防御塔,30+种敌人,如上图,以假乱真吧 下面从地图模块起介绍我的方法,如有更好的方法,请留言一起讨论,游戏资源下载原版游戏数据包,解压即可 推荐一款软件,TextureUnpackerRelease1.04可以分割plist形式的图片,提高效率 经过一个月学习也发现之前有很多化简为繁的错误

7172

TopSort(拓扑排序)

对输入的有向图进行拓扑排序,并输出一个拓扑有序序列;如果存在有向环,则给出提示信息。 假设输入文件中有向图的格式为:首先是定点个数n和边数m;然后是每条边,每条边的数据占一行,格式为 u v,表示从定点u 到顶点 v的一条有向边,顶点序号从1开始计起。输入文件的最后一行为0 0,表示输入数据结束。 样例输入: 6 8 1 2 1 4 2 6 3 2 3 6 5 1 5 2 5

Irish_Moonshine的博客 880

基于双目视觉的行车中障碍距离检测方法研究与目标跟踪

本文将介绍基于Python语言的双目视觉技术,以及如何使用该技术检测行车中的障碍物并跟踪目标。双目视觉利用两个摄像头模拟人眼的立体视觉,通过对两个摄像头所捕捉的图像进行比较和分析,可以得到物体的深度信息。首先,我们需要安装Python的OpenCV库,该库提供了丰富的图像处理和计算机视觉功能。接下来,我们进入一个循环中,不断读取左右图像,并将其转换为灰度图像。在视差图上,您可以实现目标检测和跟踪算法来识别和跟踪行车中的障碍物。请注意,上述代码只是一个简单示例,您可以根据具体需求和算法进行修改和扩展。

ZgnObjectivec的博客 276

牛客想开了大赛2 E:假的字符串(字典树)

链接:https://ac.nowcoder.com/acm/contest/907/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 给定n个字符串,互不相等,你可以任意指定字符之间的大小关系(即重定义字典序),求有多少个串可能成为字典序最小的串,并输出它们 输入...

bravo的博客 294

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

牛客练习赛11 - B 假的字符串 (字典树+拓扑排序)

链接:https://www.nowcoder.com/acm/contest/59/B来源:牛客网题目描述给定n个字符串,互不相等,你可以任意指定字符之间的大小关系(即重定义字典序),求有多少个串可能成为字典序最小的串,并输出它们 输入描述:第一行一个数表示n 之后n行每行一个字符串表示给定的字符串输出描述:第一行输出一个数x表示可行的字符串个数 之后输出x行,每行输出一个可行的字符串 输出的顺...

Mr_Treeeee的博客 758

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

偏序+拓扑序+字典树

题目描述 给定n个字符串,互不相等,你可以任意指定字符之间的大小关系(即重定义字典序),求有多少个串可能成为字典序最小的串,并输出它们 输入描述: 第一行一个数表示n之后n行每行一个字符串表示给定的字符串 输出描述: 第一行输出一个数x表示可行的字符串个数之后输出x行,每行输出一个可行的字符串输出的顺序和输入的顺序一致 示例1 输入 6 mcfx ...

weixin_30294021的博客 204

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

【牛客练习赛11】 B 假的字符串【字典树+topo判环】

链接:https://www.nowcoder.com/acm/contest/59/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Format: %lld 题目描述 给定n个字符串,互不相等,你可以任意指定字符之间的大小关系(即重定义字典序),求有多少个串可能成为字典序最小的串,并输出它们

lzs_lazy 852

topsort top排序(队列,优先队列)。

topsort 是对有向图的排序; #include<queue>//这个是判断环的 要求拓扑序的话就在其中加上计数的部分。 using namespace std; priority_queue<int> Q; bool topsort() {   for(int i=1;i<=n;i++)   {     if(in...

weixin_30682127的博客 238

POJ3889Fractal Streets 递归+ 坐标变换

参考:https://vjudge.net/solution/10966515他这个地方是 1 4 2 3的标号在递归的过程中要知道如何处理”轴对称”,”点对称” 的方式/LL P4[50]; void gao(LL n,LL a,LL &x,LL &y){ if(n==1){ if(a==1)x=y=1; if(a==2)x=1,y=2;

now_ing的博客 1398

Codeforces 842C - Ilya And The Tree 【树上DFS】

**【题意】给出一棵生成树,每个节点都有一个值,现在要求出每个节点的美丽值的最大值,美丽值的定义为从根节点到该节点(包含)路径上所有点的值的gcd,求解每个点时可以把路径上某一个点的值变为0。你可以认为每个点美丽值的求解是独立的。**按道理可以dp 的。不知道为什么错。没有数据。。别人的代码ac。。 #include <bits/stdc++.h> using namespace std;const

now_ing的博客 976

Gym - 101246C dfs

https://vjudge.net/problem/Gym-101246C这种美剧和思维可能我都不太会。。。 学习一下这种代码。。char tu[mxn][mxn]; int mp[mxn]; int n,m; int dp[1<<26]; int lowbit(int x){return x&(-x);} int init(int state){ if(dp[state])return

now_ing的博客 374

Sticks POJ - 1011 经典dfs..

参考:http://www.hankcs.com/program/algorithm/poj-1011-sticks.html#include<bits/stdc++.h>using namespace std; #define N 51 int n;int finish; int in[N]; int length; void check(int count,int len,int plen){

now_ing的博客 358

Codeforces Round #359 (Div. 2) C. Robbers' watch dfs

参考http://www.cnblogs.com/baocong/p/5913936.html题意:给你n和m,找出(a,b)的对数,其中a满足要求:0<=a<n,a的7进制的位数和n-1的7进制的位数相同,b满足要求:0<=b<m,b的7进制的位数和m-1的7进制的位数相同,且a和b的7进制下的位上的数都不相同,即如果a的七进制数为10,b的7进制数为21,这种情况是不行的,因为重复了1 题解:先

now_ing的博客 353

codeforces 679B Bear and Tower of Cubes(贪心+dfs)

参考http://blog.youkuaiyun.com/sinat_34263473/article/details/51620773 http://www.cnblogs.com/macinchang/p/5572070.htmlBear and Tower of Cubes time limit per test 2 seconds memory limit per test 256 megab

now_ing的博客 312

记忆化搜索 dp(dfs)-帮助Jimmy POJ--1661

感悟:首先自己没有把题目都看透。结果在看一些别人的题解的时候在疑惑如果平板高度相等的时候怎么办。 也浪费了时间,也没有看到一开始给只有一个横坐标 体会:虽然知道是有两个状态转移,但是怎么表示,如果用的是那种循环式的dp的话,达到下一种状态的判断怎么写,而且我居然没有考虑从上到下的高度排序。。 然后看别人的代码,感觉用dfs(记忆化搜索)写的比较看得懂, 而且还有一种数位dp的模板的感觉。。

now_ing的博客 298

Gym - 101164I dfs

https://vjudge.net/contest/170300#problem/Idfs//其实这里deep应该是个数的意思把。。。int st[maxn]; int cnt=0; bool dfs(int n,int start,int deep){ if(n<0)return 0; if(deep==0){ if(n==0){

now_ing的博客 280
上一篇: TCO 11 muddy round (贪心求 期望dp)
下一篇: Gym - 101608G (尺取)
sega_handsome
博客等级 码龄10年 7粉丝 164原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值