首页 > 其他分享 >P4341 [BJWC2010] 外星联络

P4341 [BJWC2010] 外星联络

时间:2024-04-01 14:22:42浏览次数:15  
标签:cnt now int P4341 9000005 BJWC2010 外星

原题链接

题解

1.字符串集合map?但是无法做到字典序排序,所以是字典树
2.n<=3000,所以 \(O(n^2)\) 而且本题的特殊性,即每个子串都要放进去,所以要在 \(n^2\) 一边遍历一边放

code

#include<bits/stdc++.h>
using namespace std;
int cnt[9000005]={0};
int path[9000005][2]={0};
string s;
int num=0;

void dfs(int now)
{
    if(cnt[now]>1) cout<<cnt[now]<<endl;
    for(int i=0;i<=1;i++)
    {
        if(path[now][i])
        {
            dfs(path[now][i]);
        }
    }
}

int main()
{
    int n;
    cin>>n;
    cin>>s;

    for(int i=0;i<n;i++)
    {
        int now=0;
        for(int j=i;j<n;j++)
        {
            int to=s[j]-'0';
            if(!path[now][to]) path[now][to]=++num;
            now=path[now][to];
            cnt[now]++;
        }
    }

    dfs(0);
    return 0;
}

标签:cnt,now,int,P4341,9000005,BJWC2010,外星
From: https://www.cnblogs.com/pure4knowledge/p/18108322

相关文章

  • P2350 [HAOI2012] 外星人 题解
    很巧妙的一道题。首先会发现如果最终\(\varphi(N)=1\)的话一定是通过很多次从\(2\)这个因子变到\(1\)的。而这个函数每迭代一次,就会有且仅有一个\(2\)的因子变为\(1\)。所以题目转化为了求\(N\)在函数迭代过程中一共会产生多少个\(2\)的因子。考虑\(\text{dp}\),设......
  • 洛谷题单指南-递推与递归-P1928 外星密码
    原题链接:https://www.luogu.com.cn/problem/P1928题意解读:要对形如xxx[Nxxx]xxx的字符串进行解码,[]内第一个数表示括号中字符串重复的次数,可以嵌套。解题思路:用递归进行处理,设函数decode(start,end)将下标从start到end之间字符串进行解码递归过程如下:遍历start~end的每一个字......
  • P1928 外星密码
    题目链接:本题如果直接模拟去做的话极为繁琐,输入的这个字符串是被多重「压缩」的,所以一重一重地「解压缩」可能会非常非常麻烦(不过应该是可行的),导致代码极其难以理解。所以,我们使用递归算法,在读入这个字符串之后,找出被压缩的内容,再对被压缩的那个字符串实行「解压缩」操作。举个......
  • P1928 外星密码
    P1928外星密码一道经典递归题(但我没想出来)问题题目给的是一行的字符串。我一开始想直接对字符串进行处理,但发现非常麻烦,因为要对字符串做拆分,而且很难对括号[]做对应,也对数字字符整体判断麻烦,总体实现起来繁琐复杂。正确思路将字符串拆成每个字符,再读入,对每个读入判断,以读......
  • Python从入门到实践project飞船射击外星人3
    完善记分系统1确保难度升级分值跟着升级2将分值显示为10的整数倍3显示最高分4显示等级5显示剩余飞船数确保难度升级分值跟着升级self.alien_points=int(self.alien_points*self.score_scale)print(self.alien_points)print确保分值变化,确保后删除将分值显示为10的整数倍......
  • Python从入门到实践project飞船射击外星人2
    project飞船射击外星人1加入play按钮创建button文件importpygame.font#能在游戏里添加文本classButton:def__init__(self,ai_game,msg):"""初始化按钮的属性"""self.screen=ai_game.screenself.screen_rect=self.screen.get_rect......
  • P4180 [BJWC2010] 严格次小生成树
    如果有两条在最小生成树上的边被换掉了,那么原树会被分成三个连通块。考虑新加的两条边,保留权值较小的那一条,这样还剩两个连通块。而删除的两条边至少有一条能连通这两个连通块,所以可以保留那条边。并且新加的两条边中权值较大的那一条肯定大于等于我们保留的边,否则与最小生成树......
  • [SDOI2010] 外星千足虫
    题意现在你面前摆有\(1\ldotsN\)编号的\(N\)只千足虫,你的任务是鉴定每只虫子所属的星球,但不允许亲自去数它们的足。Charles每次会在这\(N\)只千足虫中选定若干只放入“昆虫点足机”(theInsectFeetCounter,IFC)中,“点足机”会自动统计出其内所有昆虫足数之和。Charles......
  • #295. 「BJWC2010」矩阵距离 题解 2021-09-23 21:42:32
    #295.「BJWC2010」矩阵距离又是一道需要真正思考了才可以做出来的水题。题目描述给出一个N*M的01矩阵,输出每个0到离这个点最近的1的距离。思考历程暴力由于$N\le10^3$如果在赛场上出现这个题,我们优先考虑暴力。暴力也是很简单,从每个为0的点出发bfs找到与最近的......
  • P4180 [BJWC2010] 严格次小生成树
    P4180[BJWC2010]严格次小生成树/*建立一个最小生成树维护最大值和严格次小值然后直接查询就可以了56121132243354343456*/#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongusingpii=pair<int,int>;constintN=1e......