洛谷 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 中,使…...
Qwen2-VL-2B-Instruct一键部署教程:Ubuntu 20。04环境快速搭建
Qwen2-VL-2B-Instruct一键部署教程:Ubuntu 20.04环境快速搭建 想试试这个能看懂图片还能跟你聊天的AI模型吗?Qwen2-VL-2B-Instruct是个挺有意思的多模态模型,不仅能处理文字,还能理解图片内容,进行对话。今天咱们就来…...
如何构建现代化博客系统:从Markdown到动态页面的完整指南
如何构建现代化博客系统:从Markdown到动态页面的完整指南 【免费下载链接】skateshop An open source e-commerce skateshop build with everything new in Next.js. 项目地址: https://gitcode.com/gh_mirrors/sk/skateshop 在当今数字化时代,拥…...
手撕 Transformer (2):嵌入层和位置编码的实现上篇文章讲过,Transformer 可分为四个部分:输入、输出、编码器、解
嵌入层的作用:为了将文本中词汇的数字表示转换为向量表示(语义向量),这样后续神经网络就可以对其进行计算了。 1.1 代码实现 import torchimport torch.nn as nnimport mathfrom torch.autograd import Variableclass Embeddings…...
NonBlockingDelay:嵌入式非阻塞延时库原理与实践
1. 项目概述NonBlockingDelay 是一个专为嵌入式系统设计的轻量级、零依赖、单头文件(.hpp)非阻塞延时库。其核心目标是彻底替代delay()这类会挂起 CPU、阻塞所有任务执行的同步延时函数,使开发者能够在维持主循环(loop()ÿ…...
域名 WHOIS 信息对于 SEO 优化有什么作用
域名 WHOIS 信息对于 SEO 优化有什么作用 在当今互联网时代,搜索引擎优化(SEO)已经成为了每个网站运营者必须掌握的技能之一。其中,域名 WHOIS 信息也扮演了一定的角色。许多人可能对这一点并不十分了解,本文将详细探…...
天华新能年营收75亿:净利同比降56% CFO离职 宁德时代是二股东
雷递网 雷建平 4月3日苏州天华新能源科技股份有限公司(简称:“天华新能”)日前发布财报。财报显示,天华新能2025年营收为75亿元。天华新能最近两年利润处于持续下滑状态,其中,2025年净利下降55.6%ÿ…...
C语言断言函数:原理、应用与最佳实践
1. C语言断言函数的基础概念断言(assert)是C语言中一个非常实用的调试工具,它本质上是一个宏而非函数。断言的核心思想是对程序中的假设条件进行检查,当条件不满足时立即终止程序运行并输出错误信息。在标准C库中,断言…...
论文AI率太高怎么降?去AI化实用技巧与工具避坑指南
“整篇论文都是自己原创的,就用AI顺了下逻辑,结果学校AIGC检测直接飙到73%,当场被打回”“熬了3个通宵手动改,AI率才降了不到12%,离答辩只剩一周根本赶不完”“随便找了个降AI工具,把我专业名词改得乱七八糟…...
计算机毕业设计:Python汽车销量大数据预测平台 Flask框架 可视化 机器学习 AI 大模型 大数据(建议收藏)✅
博主介绍:✌全网粉丝50W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业项目实战8年之久,选择我们就是选择放心、选择安心毕业✌ > 🍅想要获取完整文章或者源码,或者代做,拉到文章底部即可与…...
2026海雅达HDT500手持终端PDA“12米远距扫描”应用案例:造纸厂原纸立库高层纸卷条码采集应用
标准工业原纸卷重达2吨、宽幅近2.8米,在12-15米高的原纸仓库中堆垛高达8-10米。高空扫码怎么破? 传统PDA扫码距离仅1米,难道必须冒生命危险爬上纸堆?海雅达HDT500的12米扫描头如何实现“降维打击”? 如何利用海雅达H…...
