首页 > 其他分享 >[NOIP2023] 词典

[NOIP2023] 词典

时间:2023-12-27 15:55:48浏览次数:41  
标签:字符 le 样例 单词 字符串 NOIP2023 ns 词典

题目描述

小 S 的词典里有 \(n\) 个两两不同的、长度均为 \(m\) 的单词 \(w_1,w_2,\cdots,w_n\)。每个单词都是一个小写字母构成的字符串。

小 S 可以做以下操作任意多次(可以不做):选择词典中的任意一个单词,交换其中任意两个字符。

对于每个 \(1 \le i \le n\),小 S 想知道,是否可以通过以上操作得到新的 \(n\) 个单词 \(w'_1,w'_2,\cdots , w'_n\),使得对于每个 \(j \neq i\),\(w'_i\) 的字典序比 \(w'_j\) 都要小。对于 \(n=1\) 的情况,我们约定:上述性质是自然成立的。

对于两个同样长度的字符串 \(s = s_1s_2\cdots s_L\) 和 \(t = t_1t_2 \cdots t_L\),称字符串 \(s\) 字典序小于字符串 \(t\),当且仅当以下条件成立:存在位置 \(i\),在第 \(i\) 个字符之前 \(s\) 和 \(t\) 都相同,而且 \(s_i < t_i\),即小写字母 \(s_i\) 在英文字母顺序中先于 \(t_i\)。

输入格式

输入的第一行包含两个正整数 \(n\) 和 \(m\),分别表示单词个数和单词长度。

接下来 \(n\) 行,每行包含一个长度为 \(m\) 的小写字母字符串 \(w_i\), 表示一个单词。

输出格式

输出一行,其中包含一个长度为 \(n\) 的 01 字符串 \(a\);对于 \(1 \le i \le n\),如果题目描述中的性质成立,则 \(a_i =\) 1,否则 \(a_i =\) 0

样例 #1

样例输入 #1

4 7
abandon
bananaa
baannaa
notnotn

样例输出 #1

1110

提示

【样例解释 #1】

  • 不做任何操作,第一个单词字典序最小,因此输出第一个字符为 1
  • 交换 bananaa 的前两个字符以及 abandon 的第三个和第六个字符,得到 abondan, abnanaa, baannaa, notnotn,此时第二个单词字典序最小,因此输出第二个字符为 1
  • 交换 baannaa 的第一个和最后一个字符得到 aaannab,其余字符串不变,此时第三个单词字典序最小,因此输出第三个字符为 1
  • 无论如何操作,第四个单词不会小于第二个单词,因此输出第四个字符为 0

【样例解释 #2】

该组样例满足测试点 \(4\) 的限制。

【样例解释 #3】

该组样例满足测试点 \(7\) 的限制。

【样例解释 #4】

该组样例满足测试点 \(10\) 的限制。

【数据范围】

对于所有测试数据,保证:\(1 \le n \le 3000\),\(1 \le m \le 3000\),\(w_i\) 为长度为 \(m\) 的小写字母字符串且两两不同。

测试点编号 \(n\leq\) \(m\leq\)
\(1\) \(1\) \(1\)
\(2\sim 4\) \(26\) \(1\)
\(5\sim 7\) \(15\) \(2\)
\(8\) \(300\) \(300\)
\(9\) \(10^3\) \(10^3\)
\(10\) \(3000\) \(3000\)

题解

这个题不难,我们只需要把每个串从小到达排ns和从大到小排序即可,然后我们在比较i的时候,只需要将i的小串ns和j的大串进行比较即可,但是这样写的时间复杂度是\(O(n^2m)\),显然这样是过不去的,但是CCF的数据比较水,这个时间复杂度过去了

既然这样的时间复杂度不对,我们寻找正确的时间复杂度,比较巧妙的写法是我们可以省去字符串比较的部分,如果ns和xs比较的过程中,我们其实没有必要比较m个长度,只需要比较第一个字符即可,为什么?如果第一个字符ns比较小,那么肯定ns比较小,如果ns比较大的话,那么肯定ns大,如果两者相同,那么肯定ns比较大,因为ns是从小到大排的,而xs是从大到小排的,只比较一个字符的话,我们就把时间复杂度省下了

点击查看代码
#include <bits/stdc++.h>
using namespace std;
const int maxn=3005;
int n,m;
char s[maxn][maxn];
char xs[maxn],ns[maxn];
int main(){
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%s",s[i]+1);
        xs[i]=ns[i]=s[i][1];
        for(int j=2;j<=m;j++){
            xs[i]=max(xs[i],s[i][j]);
            ns[i]=min(ns[i],s[i][j]);
        }
            
    }
    for(int i=1;i<=n;i++){
        bool flag=true;
        for(int j=1;j<=n;j++){
            if(i==j) continue;
            if(ns[i]>=xs[j]){//如果最小的
                flag=false;
                break;
            }
        }
        if(flag==true) printf("1");
        else printf("0");
    }
    return 0;
}

但是这个题到这里还没有结束,既然CCF造的数据比较水,那么怎么造数据能卡掉第一种做法呢?

标签:字符,le,样例,单词,字符串,NOIP2023,ns,词典
From: https://www.cnblogs.com/sdfzls/p/17930732.html

相关文章

  • 《简明英汉必应版》震撼发布-全网收词量最多的离线词典,词频考纲标注(432万词条)
    原文:https://zhuanlan.zhihu.com/p/31493883?from_voters_page=true主要是为了解决离线词典的词条数目不够,常常需要在线去查的问题。离线有300多万的词条,只能输入英文,输出中文意思。对我来说,足够了。下面,是原文摘录:这年头难道就没有办法让你随心所欲简单快捷的查个单词?于是......
  • 【转载】liuhangshin NOIp2023假赛记
    day-?CSP2023,我用eps秒就拿到了395pts,少的5pts是不想让自己太骄傲。day0去⑧中试机,由于机房的Vscode不好用,我现场写了114个插件安装上去,现在勉强能够做到编译代码的时间比我写10k代码的时间短。旁边cool_milo一直在问我的ip是多少,怎么有人这么菜啊!NOIp这种级别的比赛还需要......
  • NOIP2023 游记
    NOIP2023游记晚上又没睡好,半夜醒了。早上洛谷打卡,中吉,还忌放假,大概率是废了。到考场,进去,打了下缺省源,眼睛很痛,头很晕,好困。写完快读测试的时候,开大栈空间写错了,报错提示在快读,然后对着代码懵了半天,不知道哪里错了,结果发现-stack少了前面的-。开题。T1,序列可以任意交换两......
  • NOIP2023 双序列拓展
    洛谷传送门首先\(x_1=y_1\)显然不合法。若\(x_1>y_1\)就把\(x,y\)全部取相反数,这样就只用考虑\(x_1<y_1\)的情况了。然后考虑一个\(O(nmq)\)的dp,设\(f_{i,j}\)为拓展\(X\)的前\(i\)个元素和\(Y\)的前\(j\)个元素是否可行。那么若\(x_i<y_j\)则......
  • NOIP2023 游记
    Day0打摆。打摆。打摆。看tarjan。打摆。打摆。打摆。Day1早上很早到了附中,发现准考证上没有照片,黑糊糊一片,被教练强行紧急更换了一个,感觉不换其实也没什么关系。进考场,发现在最后一排,旁边不认识,前面不认识,前面的旁边不认识,sad。然后发密码,开T1,发现会了,15min写完......
  • 66级创新营词典
    我不知道您有没有读过《马桥词典》这本书,通过一个个方言词条串联起完整的故事,别具一格。我也想写一本这样的书,我的那些所谓“理科生”的同学们,在那些日子里所创造出的一个又一个回忆,让我亲切却感到陌生。所以我只得把他们都记录了下来。瞬间专家掏心窝子天道酬勤偷渡次氯酸......
  • NOIP2023游记
    Day-INF在考前几天补了往年NOIP的题,信心++。下午到了开发区,由于雪太大,晚上就没去酒店找其他队友,摆了一会然后稍微看了一眼题就睡了。Day1进入考场。听CCF的广播说禁止在考前写代码,啊?开始后经典的只有压缩包密码没有PDF密码,mnt+=2。看了一眼四道题,T1感觉桶排就能过,T......
  • NOIP2023游记
    之前忘写了现在忘了(雾)Day0在七高考。欣赏了一会走廊边上的展示柜。进考场。印象里是圆桌,结果还是常规的几排。(好像各个考场不一样……?)开考之后因为键盘的奇怪手感而奇怪了很久。一行头文件打了半天,,。P.S.之前同学说过七高键盘难用,然而没当回事TAT。T1有点水……但是还是......
  • NOIP2023 退役记
    省流:爆单了。\(\rmDay\0\)中午感觉身体发冷,有一种不详的预感。下午润去看病,好像寄了。做了甲流的检测,不过好像要考\(\rmNOIP\)时才能出结果。吃了退烧药,但还是\(\rm38\)度多。没有胃口吃晚饭。晚上到了杭州稍微好了一点,喝了一点粥。\(\rmDay\1\)早上一测温度还......
  • CSP2023+NOIP2023邮寄
    本文同时发表在个人洛谷博客。CSPDay-1上午打德文布置的毒瘤信心赛,据说请了一个D类金验题,没有成功ak。打完没信心了。下午去下沙。有点像小县城。晚饭在下沙天街,好评。颓废。Day0上午打J。开场3分钟没过T1,然后发现次数是\(\log\)级别的,无脑暴力。菜死了。菜死了。菜......