4567: [Scoi2016]背单词

【电机应用控制】——步进电机控制原理(四相五线/两相四线/细分驱动)&驱动器&梯形/S形加减速算法&直线/圆弧插补 步进电机是一种把电脉冲信号转换为角位移(左)或线位移(右)的电动机。两相通常1.8°,三相通常1.2°、无相通常0.72°,角位移=脉冲个数X步距角。在非超载且不超频的情况下,电机的旋转位置只取决于脉冲个数,转速只取决脉冲信号的频率。所以只需要统计脉冲个数和频率,不再需要编码器测速和位置,具有优秀的开环能力,当然也可接编码器反馈速度和位置数据,实现更加精准的闭环控制。永磁式动态性能好,输出力矩大,但步距角大通常7.5°;反应式(磁阻式)结构简单成本低,步距角小一般1.2°,但振动噪音大动态性能差; 阅读详情

题目链接

题目大意:n个单词,你需要确定一个填的顺序
设现在填第x个单词
1.如果存在一个单词是它的后缀,且还没被填入,代价为n*n;
2.如果不存在一个单词是它的后缀,代价为x;
3.如果存在一个单词是它的后缀,且已填入的是它后缀的单词中序号最大的为y,代价为x-y

题解:操作1的代价过高,所以在一个字符串插入之前必须将他的所有的后缀全部插入,所以对反串建Trie

把root和单词点看成一棵树,问题转化为给树上每个点标号,每个点的标号大于其父亲的编号,每个点代价为他的标号减去其父亲标号,最小化代价

贪心,dfs先遍历size小的儿子

我的收获:orz

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
using namespace std;

const int N=600005;

int n,cntt=1;
int size[N];
long long sum,ans;
char s[N];

vector<int> E[N];

bool cmp(int x,int y){return size[x]<size[y];}

struct Trie{

#define idx s[i]-'a'

int tot;
int dang[N];
int c[N][27];

void insert(int v=1){
    int x=0,len=strlen(s);
    for(int i=len-1;i>=0;i--){
        if(!c[x][idx]) c[x][idx]=++tot;
        x=c[x][idx];
    }
    dang[x]=1;
}

void build(int k,int x)
{
    if(dang[x]) E[k].push_back(++cntt),size[k=cntt]=1;
    for(int i=0;i<26;i++) if(c[x][i]) build(k,c[x][i]);
}

}T;

void dfssize(int x)
{
    for(int i=0;i<E[x].size();i++)
        dfssize(E[x][i]),size[x]+=size[E[x][i]];
}

void dfs(int x,int wfa)
{
    sum++;ans+=sum-wfa;wfa=sum;
    sort(E[x].begin(),E[x].end(),cmp);
    for(int i=0;i<E[x].size();i++) dfs(E[x][i],wfa);
}

void init()
{
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%s",s),T.insert();
    T.build(1,0);dfssize(1);dfs(1,1);cout<<ans<<endl;
}

int main()
{
    init();
    return 0;
}
在Android中实现SIM卡的读写操作 在上述代码中,我们创建了一个PhoneStateListener的实例,并重写了onSimStateChanged方法来处理SIM卡状态改变的事件。然后,我们通过调用telephonyManager的listen方法注册了这个监听器,并指定了要监听的事件类型为SIM卡状态的改变。在上述代码中,我们调用telephonyManager的sendUssdRequest方法来发送USSD命令,并通过TelephonyManager.UssdResponseCallback来处理USSD响应和发送失败的情况。 阅读详情

相关推荐

基于稀疏表示字典学习的图像超分辨率-杨建超论文解析

文章:《Image Super-Resolution via Sparse Representation》 作者:杨建超 信号稀疏的定义: 令字典D的原子个数M,信号维度为N,则有以下三种关系: M = N时,D为完备的; M > N时,D为冗余的; M>>N时, D为过完备的。 图解如下: 借鉴了压缩感知的思想,通过对大量低分辨率图像和高分辨...

ycc18829026593的博客 7637

[SCOI2016]背单词-题解

【题目地址】luogu也有 题意的话就看题面吧。 我们一步一步的来分析: 首先吃最少的泡椒,那么显然可以贪心,由于n×nn\times nn×n贡献的肯定比后面的方式都大,所以我们考虑将一个串它的所有存在的后缀串全部先放在前面,这时就不会用第一种了,然后我们考虑,可以将这种关系用边连起来,就成了一棵树,我们可以举个例子来看: 5 a b ba bb bba 这个例子便可以连出这样的一张图: ...

TimeTraveller-VictoryCzt 895

Sony微单相机alpha6000 wifi远程控制(1)

引言 Sony’s Camera Remote API beta SDK allows you to control a number of Sony cameras, including Sony Action cams, Sony Alpha cameras and Lens Style cameras, wirelessly from another device. 索尼于2017年三月Re...

markfuk996的博客 4966

[Scoi2016]背单词[字典树+dfs重构树[类似虚树]]

解题思路:很明显第一个条件是可以避免的,第二个条件是第三个条件的特殊情况,所以有用的只有第三个条件,现在我们就是想将这些单词重排使得每个单词后缀都在这个单词的前面并且代价最小 我们举个例子: 6 a ca ea gda hda ifb 很明显我们发现很多点是没有用的我们为了计算其实可以直接提出红色的点 我们可以举几个例子,发现先跑子树小的明显最优 #include <iostream> #include <cstdio> #include <stack> ...

weixin_45630722的博客 293

SAP生产订单技术性完成(TECO)操作指南与实战应用

生产订单技术关闭操作指南主要包括单笔和批量关闭两种方式,通过CO02/COHV事务码完成。

m0_47402127的博客 1932

Python 爬虫实战:网站反爬机制绕过终极指南(技术原理 + 实战代码 + 避坑技巧)

在 Python 爬虫的世界里,反爬机制是每一个爬虫开发者都必须面对的挑战。网站为了保护自身数据不被恶意爬取,会设置各种反爬机制,这使得爬虫开发变得更加复杂和有趣。本文将详细介绍常见的网站反爬机制及其绕过方法,结合技术原理、实战代码和避坑技巧,帮助你成为一名优秀的爬虫开发者。

u014481728的博客 1006

[Scoi2016]背单词(trie+贪心)

题意:重新解释一下题意吧(题意晦涩难懂) 给定n个单词,你可以按照顺序学习,当学习这一单词时,这个单词是第x个要学习的单词,需要的代价分三类: 1、若存在其他单词是其后缀没被学习,则代价为n2 2、若不存在其他单词是其后缀,则代价是x 3、否则代价是x-y(y是最靠后的是其后缀的单词学习的位置) 题解: 首先第一种情况要是存在显然不是最优的,然后很容易联想到建立字符串的反串。...

weixin_30920091的博客 204

图神经网络与大模型融合的理论综述:架构、机制与未来方向

然而,它们普遍缺乏对图结构数据的原生支持,无法直接处理边、节点之间的拓扑关系,这限制了其在关系密集型任务中的表现 [23]。2020年发布的BERT [16] 开启了自监督预训练时代,而2021年后,T5 [17]、PaLM [18]、LLaMA [19] 等模型相继推出,参数规模突破千亿级,展现出惊人的上下文学习(In-context Learning)与链式推理(Chain-of-Thought)能力 [20]。例如,将医学影像作为图节点,结合病理报告文本,实现更精准的疾病诊断 [58]。

andeyeluguo的博客 295

[SCOI2016]背单词

题目 题目 做法 我们把每个单词反过来,然后如果st[i]st[i]st[i]是st[j]st[j]st[j]的前缀,且不存在st[k]st[k]st[k]是st[j]st[j]st[j]的前缀,且st[i]st[i]st[i]是st[k]st[k]st[k]的前缀,那么iii是jjj的父亲,显然这样构造不存在环,且是一个森林。(构造方法字典树) 不难发现,如果你每个点都等着祖先拿完再拿(拿就是背下来的意思),那么价值都是≤nnn的,总的价值小于等于n2n^2n2,也就是说第一条规则就是废的,一个点一定得在

蒟蒻QMQ 410

pytorch搭建SSAE实现预测分类代码模板完整代码

pytorch搭建SSAE实现预测分类代码模板完整代码

325

基于Dijkstra算法的共享单车调度优化系统设计与实现

根据最新统计数据,全球共享单车市场规模已超过300亿美元,中国作为最大的共享单车市场,日订单量超过5000万次。Dijkstra算法由荷兰计算机科学家Edsger W. Dijkstra于1956年提出,用于解决带权有向图中的单源最短路径问题。本文详细介绍了基于Dijkstra算法的共享单车调度优化系统的设计与实现。本文将详细介绍基于Dijkstra算法的共享单车调度优化系统的设计与实现,采用Java 17、Spring Boot 3.x等最新技术栈。

2201_76125393的博客 619

【SCOI2016】背单词(tire+贪心+缩点

#include<bits/stdc++.h> using namespace std; #define int long long const int N=5e5+10; string s[N]; int n,t[N][30],tot=0,vis[N],K[N];int sz[N]; struct edge{ int to,nxt; }d[N];int head[N],Cnt=1; void add(int u,int v){ d[++Cnt]=(edge){v,head[u]},head[

我们仍未知道那天所看见的花的名字。 817

Synthesia技术浅析(四):自然语言处理

Synthesia 的自然语言处理(NLP)模块是其核心技术之一,涵盖了文本转语音(TTS)、情感分析以及多语言支持等多个方面。

m0_75253143的博客 1167

BZOJ 4567: [Scoi2016]背单词

二次联通门 :BZOJ 4567: [Scoi2016]背单词 /* BZOJ 4567: [Scoi2016]背单词 Trie + 贪心 大家都吐槽题目反人类 可我觉得还好,毕竟见的多了 不会做啊。。 正解好巧妙 考虑一下,发现一操作完全不必要,可以省去 ...

weixin_30256505的博客 93

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

[BZOJ]4567: [Scoi2016]背单词

题解: 这个出题人 就应该祭天....什么jb题意啊 知道题意以后 就直接把所有反串插入到trie树中 然后贪心从子树小的进行dfs遍历标号 答案就是每个点与父亲标号差值的和 注意一定要进行压缩 即除根以外都要是关键节点 #include <algorithm> #include <iostream> #include <cstring> ...

weixin_30908649的博客 91

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

bzoj4567: [Scoi2016]背单词

题目意思有点难懂,给定n个单词,找到一种排列使代价最小。在x处的一个单词的代价为:1.有一个单词是它的后缀且在它后面n*n,2. 没有单词是它的后缀且在它后面x-前一个是它的后缀的单词的位置(如没有即为零)。 很显然可以倒着暴力构造一棵tire,由于1的代价太大,考虑不存在1。即每个后缀填完后才能填自己,同时填完一个单词的子树的最小代价是固定的,只要合理安排儿子的遍历顺序即可。显然应dfs先遍历

miaom的博客 1270

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

4567: [Scoi2016]背单词 trie+贪心

代码能力太弱。。想了5分钟写了1小时。。 耐下心来读完题,然后发现最优解一定是不会出现第一种情况的,也就是说如果访问一个串之前一定要访问这个串的所有后缀。 那么我们把串反过来,转换成前缀,也就是沿着trie走的问题。然后就贪心一波,先走子树小的再走子树大的就行了。#include<iostream> #include<cstdio> #include<vector> #include<cstri

ws_fqk 1343

bzoj 4567: [Scoi2016]背单词

读题发现,只要保证每个字符串加入的时候它的后缀都加入了,那么总代价最大是n*(n-1)/2,所以不会出现第一种情况。 建出一棵树,每个点的father是它最长的后缀,然后贪心每次走较小的子树就可以。 找后缀可以字符串反序从短到长建trie 注意在压字符串的时候,字符串大小要开总长度+字符串个数。 #include#include#include#include#include#de

heheda_is_an_OIer的博客 846

bzoj 4567: [Scoi2016]背单词 字典树+贪心

题意意思就是挨个放单词,放每个单词之前一定把这个单词的后缀都先放上去,每个单词的代价等于这个单词的位置减去上一个出现的这个单词的后缀的位置 n<=100000,sigma(len)<=510000分析一开始的想法是用后缀数组来建图,要真打起来的话估计会T。而且也没想到要怎么贪心。。。还是太弱。其实只要一颗字典树就可以处理好建图问题啦。 然后谈心的话。。。每次找size较小的子树去贪即可。证明嘛。

beginend 898

bzoj4567: [Scoi2016]背单词(trie+贪心)

传送门 题意: 给你n个字符串,不同的排列有不同的代价,代价按照如下方式计算(字符串s的位置为x): 1.排在s后面的字符串有s的后缀,则代价为n^2; 2.排在s前面的字符串有s的后缀,且没有排在s后面的s的后缀,则代价为x-y(y为最后一个与s不相等的后缀的位置); 3.s没有后缀,则代价为x。 求最小代价和。 思路:显然把所有字符串倒序建一个trietrietrie树出来。 然后在上面贪心...

苟为蒟蒻又何妨 169

面试官最爱问的C++高精度算法题,我用这5个模板全搞定了(附完整代码)

本文详细解析了C++高精度算法的五种核心模板,包括加减乘除等操作,并提供了可直接复用的完整代码。针对面试常见问题,文章不仅展示了基础实现,还深入探讨了性能优化和边界条件处理,帮助开发者高效应对技术面试中的高精度算法挑战。

weixin_30600197的博客 370
上一篇: 4950: [Wf2017]Mission Improbable
下一篇: 3622: 已经没有什么好害怕的了
Mmh2000
博客等级 码龄10年 11粉丝 541原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值