ORZ ZYY

首先建立trie树,是名字打标机+1,是笔名的话打标机-1

然后贪心爆搜,如果当前和儿子标机不同就加上,记得标机要上传

然后最后一组数据特判掉吧

#include<iostream>
#include<fstream>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<cstdio>
using namespace std;
char s[800003];
int c[800003][27];
int sz,n,len;
int dep[800003];
int tag[800003];
long long ans,cnt;
void dfs(int x){if(dep[x]>=500000){cout<<1;exit(0);}for(int i=0;i<26;i++){if(c[x][i]){dfs(c[x][i]);if(tag[x]>0&&tag[c[x][i]]<0){ans+=min(tag[x],-tag[c[x][i]])*dep[x];}else{if(tag[x]<0&&tag[c[x][i]]>0){ans+=min(-tag[x],tag[c[x][i]])*dep[x];}}tag[x]+=tag[c[x][i]];}}
}
int main(){cin>>n;for(int i=1;i<=n;i++){scanf("%s",s+1);len=strlen(s+1);int x=0;for(int i=1;i<=len;i++){if(!c[x][s[i]-'a']){c[x][s[i]-'a']=++cnt;}x=c[x][s[i]-'a'];dep[x]=i;}tag[x]++;}for(int i=1;i<=n;i++){scanf("%s",s+1);len=strlen(s+1);int x=0;for(int i=1;i<=len;i++){if(!c[x][s[i]-'a']){c[x][s[i]-'a']=++cnt;}x=c[x][s[i]-'a'];dep[x]=i;}if(tag[x]>0){ans+=dep[x];}tag[x]--;}dfs(0);cout<<ans<<endl; return 0;
}
/*
in:
5
gennady
galya
boris
bill
toshik
bilbo
torin
gendalf
smaug
galadrielout:
11
*/

51NOD P1526 分配笔名相关推荐

  1. 51nod 1526 分配笔名(字典树)

    1526 分配笔名 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 320 难度:7级算法题  收藏  关注 班里有n个同学.老师为他们选了n个笔名.现在 ...

  2. 51nod 1526 分配笔名

    题意 班里有n个同学.老师为他们选了n个笔名.现在要把这些笔名分配给每一个同学,每一个同学分配到一个笔名,每一个笔名必须分配给某个同学.现在定义笔名和真名之间的相关度是他们之间的最长公共前缀.设笔名为 ...

  3. 51Nod 1526 分配 笔名

    1526 分配 笔名 题目来源:  CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 320  难度:7级算法题  收藏  关注 班里有n个同学.老师为他们选了n个笔名 ...

  4. 51nod 1526 分配笔名(Trie树+贪心)

    建出Trie树然后求出一个点子树中有多少笔名和真名.然后贪心匹配即可. #include<iostream> #include<cstring> #include<cst ...

  5. Trie——51nod1526 分配笔名

    https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1526 这题主线思路肯定是Trie对吧 定义笔名和真名之间的相关度是他们 ...

  6. 51nod1526 分配笔名 trie+贪心

    Description 班里有n个同学.老师为他们选了n个笔名.现在要把这些笔名分配给每一个同学,每一个同学分配到一个笔名,每一个笔名必须分配给某个同学.现在定义笔名和真名之间的相关度是他们之间的最长 ...

  7. 刷题总结——分配笔名(51nod1526 trie树)

    题目: 班里有n个同学.老师为他们选了n个笔名.现在要把这些笔名分配给每一个同学,每一个同学分配到一个笔名,每一个笔名必须分配给某个同学.现在定义笔名和真名之间的相关度是他们之间的最长公共前缀.设笔名 ...

  8. trie-51nod1526 分配笔名

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1526 狗题: 卡我内存6mb: 所以我只有95分: 好像用指针,用结构体 ...

  9. 51nod-1526: 分配笔名

    [传送门:51nod-1526] 简要题意: 给出n个真名和笔名,都是字符串 要求n个真名和笔名一一匹配,一个真名和一个笔名所带来的价值是这两个字符串的最长公共前缀 题解: 直接将真名和笔名插进字典树 ...

最新文章

  1. 操作系统中进程并发运行的过程_三种电磁流量计运行过程中常见故障解决详情!...
  2. Sophos将AI技术用于预防恶意IP的安全解决方案中
  3. druid 多数据源_Druid连接池的使用以及注意事项
  4. java中mongodb中dao通用_Spring配置MongoDB及 构建通用Dao
  5. Bytom的链式交易和花费未确认的交易
  6. 【LeetCode 剑指offer刷题】字符串题12:Valid Palindrome(回文词系列)
  7. Linux驱动程序中的并发控制
  8. HTML5 — 知识总结篇《VIII》【媒体元素】
  9. DELPHI2007 安装ACTIVEX插件的方法
  10. 代码高亮与美化的工具
  11. H264三种码率控制方法(CBR, VBR, CVBR)
  12. 如何制作六一儿童节答题测试H5页面?
  13. (57)Linux驱动开发之三Linux字符设备驱动
  14. About Redistribute
  15. 美国大学计算机科学gpa,美国大学gpa计算
  16. 工业机器人(四)——传感元件制作
  17. Redis expire
  18. Google Play开发者账号注册
  19. Android WifiDisplay分析二:Wifi display连接过程
  20. java微信实现窗口自动输入(微信骚扰机)

热门文章

  1. mysql横切纵切_什么是纵切,横切.
  2. PHP高频面试题 - 详述一次完整的HTTP请求过程
  3. EZview设置好报警通知如何实现手机接到消息提示音
  4. JNI方式遍历HashMap
  5. 毕业设计-基于微信小程序的高校办公室管理系统
  6. Bootstrap4使用图标失效的解决方案
  7. 面试常问Rocketmq延迟消息原理
  8. 数学系研究生不错的一份参考书目
  9. 【网络通信】Java实现简单的聊天对话
  10. 按键全部消失!瀑布屏将成旗舰新标杆,OPPO、vivo你看好谁