洛谷 P9868 [NOIP2023] 词典
好久不写博客了,今天来水一篇
原题链接
初看此题在洛谷上的定位是黄题,实际上也并不是很简单。
其实主要就用到了贪心的思想,先说一下我在做题的时候是怎么想的吧。
先看了部分分,10分是很好拿的,再就分析题意,打暴力能拿60分(已经还可以了),60分主要用到了桶排序的思想,桶排序是只会看是否存在,不会重复记
60pts:(缺少了判断i!=j的情况)
#include<bits/stdc++.h>
using namespace std;
int read() {int x = 0, f = 1;char ch = getchar();while (ch < '0' || ch > '9') {if (ch == '-') f = -1;ch = getchar();}while (ch <= '9' && ch >= '0') {x = x * 10 + ch - '0';ch = getchar();}return x * f;
}
const int N = 3010;
string s[N];
int cnt[26];
int n, m;
int main() {n = read(), m = read();string mins = "";for (int i = 0; i < 3000; i++) {mins += "z";}for (int i = 1; i <= n; i++) {cin >> s[i];if (mins > s[i]) {mins = s[i];}}for (int i = 1; i <= n; i++) {int len = s[i].length();for (int j = 0; j < len; j++) {cnt[s[i][j] - 'a']++;}string t = "";for (int j = 0; j < 26; j++) { //桶排序while (cnt[j]) {t += j + 'a';cnt[j]--;}}if (t <= mins) {cout << 1;} else cout << 0;}return 0;
}
接下来就是正解:直接把每个字符串wi都从小到大或者从大到小排一下,记作ai,bi。如果bi小于除了i之外的所有ai,说明可以,否则不可以。求一个前后缀最大值即可。复杂度为O(26n+nm)
100pts:
#include<bits/stdc++.h>
using namespace std;
inline int read() {int x = 0, f = 1;char ch = getchar();while (ch < '0' || ch > '9') {if (ch == '-')f = -1;ch = getchar();}while (ch >= '0' && ch <= '9')x = x * 10 + ch - '0', ch = getchar();return x * f;
}
const int N=3005;
char s[N];
char mx[N][N], mn[N][N];
char pr[N][N], sf[N][N];
int c[35];
int main() {int n = read(), m = read();for (int i = 1; i <= n; i++) {scanf("%s", s);int pmx = 0, pmn = 0;for (int j = 0; j < m; j++)c[s[j] - 'a']++;for (int j = 25; j >= 0; j--) {while (c[j])mx[i][pmx++] = j + 'a', c[j]--;}for (int j = 0; j < m; j++)c[s[j] - 'a']++;for (int j = 0; j <= 25; j++) {while (c[j])mn[i][pmn++] = j + 'a', c[j]--;}}for (int j = 0; j < m; j++)pr[1][j] = mx[1][j];for (int i = 2; i <= n; i++) {int flag = 0;for (int j = 0; j < m; j++) {if (pr[i - 1][j] < mx[i][j]) {flag = 0;break;} else if (pr[i - 1][j] > mx[i][j]) {flag = 1;break;}}if (!flag) {for (int j = 0; j < m; j++)pr[i][j] = pr[i - 1][j];} else {for (int j = 0; j < m; j++)pr[i][j] = mx[i][j];}}for (int j = 0; j < m; j++)sf[n][j] = mx[n][j];for (int i = n - 1; i >= 1; i--) {int flag = 0;for (int j = 0; j < m; j++) {if (sf[i + 1][j] < mx[i][j]) {flag = 0;break;} else if (sf[i + 1][j] > mx[i][j]) {flag = 1;break;}}if (!flag) {for (int j = 0; j < m; j++)sf[i][j] = sf[i + 1][j];} else {for (int j = 0; j < m; j++)sf[i][j] = mx[i][j];}}for (int i = 1; i <= n; i++) {int flag = 1;if (i > 1) {int tag = 0;for (int j = 0; j < m; j++) {if (mn[i][j] > pr[i - 1][j]) {tag = 0;break;} else if (mn[i][j] < pr[i - 1][j]) {tag = 1;break;}}flag &= tag;}if (i < n) {int tag = 0;for (int j = 0; j < m; j++) {if (mn[i][j] > sf[i + 1][j]) {tag = 0;break;} else if (mn[i][j] < sf[i + 1][j]) {tag = 1;break;}}flag &= tag;}if (flag)cout<<1;else cout<<0;}return 0;
}
相关文章:
洛谷 P9868 [NOIP2023] 词典
好久不写博客了,今天来水一篇 原题链接 初看此题在洛谷上的定位是黄题,实际上也并不是很简单。 其实主要就用到了贪心的思想,先说一下我在做题的时候是怎么想的吧。 先看了部分分,10分是很好拿的,再就分析题意&…...
跨浏览器免费书签管理系统
随着互联网信息的爆炸式增长,如何有效管理我们日常浏览中发现的重要网页,成为了每个重度互联网用户的需求。一个跨平台的书签管理网站能够帮助用户在不同设备之间无缝同步和管理书签。本文将分享如何使用 Python 和 SQLite 构建一个简单、易于维护的跨平…...
导出Excel的常用方法:从前端到后端的全面指南
导出Excel的常用方法:从前端到后端的全面指南 在现代Web应用中,导出数据为Excel文件是一个常见需求。无论是为了数据分析、记录保存还是简单的数据共享,Excel文件都因其广泛的兼容性和易用性而成为首选格式之一。本文将介绍几种常用的Excel导…...
uni-app中添加自定义相机(微信小程序+app)
一、微信小程序中 微信小程序中可以直接使用camera标签,这个标签不兼容app,官方文档 <cameradevice-position"back"flash"off":style"{ height: lheight px, width: lwidth px }"class"w-full"></c…...
Android中的SSL/TLS加密及其作用
Android中的SSL/TLS加密及其作用 SSL/TLS(Secure Sockets Layer/Transport Layer Security)加密技术是保护网络通信安全的关键技术之一,广泛应用于各种网络通信场景,包括Android应用开发。在Android中,SSL/TLS加密技术…...
东芝TLP176AM光耦合器:提升设计性能的关键元件
在当今快速发展的电子领域,精确性、可靠性和效率比以往任何时候都更加重要。作为工程师,我们不断寻找不仅能满足严格技术要求,还能提升整体设计性能的元件。其中,东芝的TLP176AM光耦合器正因其卓越的性能在业界备受关注。 什么是…...
MySQL数据库:基础介绍下载与安装
数据库基础知识先谈发音MySQL如何发音?在国内MySQL发音有很多种,Oracle官方文档说他们念作My sequal[si:kwəl]。 数据库基本概念 1。数据数据(Data)是指对客观事物进行描述并可以鉴别的符号,这些符号是可识别的、抽…...
原理代码解读:基于DiT结构视频生成模型的ControlNet
Diffusion Models视频生成-博客汇总 前言:相比于基于UNet结构的视频生成模型,DiT结构的模型最大的劣势在于生态不够完善,配套的ControlNet、IP-Adapter等开源权重不多,导致难以落地。最近DiT-based 5B的ControlNet开源了,相比于传统的ControlNet有不少改进点,这篇博客将从…...
【Pip】初识 Pip:Python 包管理的基本命令详解
目录 引言1. 什么是 pip?1.1 pip 的安装 2. pip 的基本命令2.1 pip install2.2 pip uninstall2.3 pip list2.4 pip show2.5 pip freeze2.6 pip search2.7 pip install -U2.8 pip install -r2.9 pip check2.10 pip cache 3. 使用示例3.1 安装多个包3.2 创建虚拟环境3…...
JMeter 中两大高级线程组的区别与应用
一、JMeter 中的高级线程组概述 最近群里的测试小伙伴在问在 JMeter 中,“jpgc - Ultimate Thread Group”和“jpgc - Stepping Thread Group 阶梯加压”有哪些区别和实际应用场景有哪些?所以这里也跟大家分享一下 JMeter 作为一款强大的性能测试工具&a…...
深入理解伪元素与伪类元素
在“探秘盒子浮动,破解高度塌陷与文字环绕难题,清除浮动成关键!”中,我们讲到如果父盒由于各种原因未设置高度, 子盒的浮动会导致父盒的高度塌陷。为了解决高度塌陷的问题,我们可以添加伪元素。 一、伪元素…...
HDU Romantic
题目大意:现在告诉你两个非负整数 a 和 b。找到满足 X*a Y*b 1 的非负整数 X 和整数 Y。如果没有这样的答案,请写 “sorry”。 思路:这是一道扩展欧几里得模板题,唯一容易错的就是 x 有可能是负数,要把它改成非负数…...
[每日一练]通过shift移动函数实现连续数据的需求
该题目来源于力扣: 603. 连续空余座位 - 力扣(LeetCode) 题目要求: 表: Cinema------------------- | Column Name | Type | ------------------- | seat_id | int | | free | bool | ------------------- Seat_id…...
go 中的斐波那契数实现以及效率比较
package mainimport ("fmt""math/big""time" )// FibonacciRecursive 使用递归方法计算斐波那契数列的第n个数 func FibonacciRecursive(n int) *big.Int {if n < 1 {return big.NewInt(int64(n))}return new(big.Int).Add(FibonacciRecursiv…...
基于ASP.NET的小型超市商品管理系统
文章目录 前言项目介绍技术介绍功能介绍核心代码数据库参考 系统效果图 前言 示 文章底部名片,获取项目的完整演示视频,免费解答技术疑问 项目介绍 小型超市商品管理系统是一款针对小型超市日常运营需求设计的软件解决方案。该系统主要内容有商品类别…...
spdlog学习记录
spdlog Loggers:是 Spdlog 最基本的组件,负责记录日志消息。在 Spdlog 中,一个 Logger 对象代表着一个日志记录器,应用程序可以使用 Logger 对象记录不同级别的日志消息Sinks:决定了日志消息的输出位置。在 Spdlog 中&…...
linux替换某个文件的某段内容命令
假设文件是a.sql 里面的库是abc,我想把这个abc给替换掉,改成hahaha cat a.sql |grep abc|sed -i s/abc/hahaha/g a.sql 如果想写个脚本指定整个文件夹中的内容替换 #!/bin/bash # 检查是否提供了文件夹路径 if [ -z "\$1" ]; then echo &…...
什么是SQL注入攻击?如何防止呢?
目录 一、什么是SQL注入? 二、如何防止? 2.1 使用预编译语句 2.2 使用 ORM 框架 2.3 用户输入校验 一、什么是SQL注入? SQL 注入是一种常见的网络安全漏洞,攻击者通过在应用程序的用户输入中插入恶意的 SQL 代码ÿ…...
consumer 角度讲一下i2c外设
往期内容 I2C子系统专栏: I2C(IIC)协议讲解-CSDN博客SMBus 协议详解-CSDN博客I2C相关结构体讲解:i2c_adapter、i2c_algorithm、i2c_msg-CSDN博客内核提供的通用I2C设备驱动I2c-dev.c分析:注册篇内核提供的通用I2C设备驱动I2C-dev.…...
面试经典150题刷题记录
数组部分 1. 合并两个有序的子数组 —— 倒序双指针避免覆盖 88. 合并两个有序数组 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成
一个面向 Java 开发者的 Sring-Ai 示例工程项目,该项目是一个 Spring AI 快速入门的样例工程项目,旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计,每个模块都专注于特定的功能领域,便于学习和…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...
