《算法笔记》6.6小节 问题 A: 任务调度
这道题我一开始看到的时候,想到的是拓补排序,可是这么菜又这么懒的我怎么可能用呢,既然出现在优先队列里面,那么久一定和他有关了
可是并没有使用优先队列
思路:
对于这道题,我们肯定是对他们定义优先级,然后进行排序了,最后输出。思路还是挺好想der。
实现:
首先肯定是一行行的先处理数据啦。咋处理?你不会问神奇海螺吗根据(),这几个符号了做。先定义一个word,来存储字符串。当遇到(,那说明需要先完成的任务输入完了,将word赋值到beg里面去,清空word,然后处理 ), ,当遇到这两个符号的时候,代表输入的后面的字符结束了,可以进行优先级计算了。设置一个map<string,int> bzzs,将bzzs[word] = bzzs[beg] + 1,存储优先级。最后进行排序。注意注意!!!!重点来了:如何对map进行排序呢?
先将map的值全部存储到一个结构体里面,对结构体排序就行,最后输出就行了。因为map本身按照string排好了,不能按值排序了,所以我们需要转化。
no body knows codeing better than me:
#include <bits/stdc++.h>
using namespace std;
struct node{
string name;
int lev;
};
int n , len;
string s;
node zc[10010]; //用来对map进行转化
map<string , int> bzzs; //变阻真帅(雾)
bool cp(node x , node y){
if(x.lev == y.lev) return x.name < y.name;
return x.lev < y.lev;
}
int main(){
cin >> n;
while(n--){
getline(cin , s);
string word , beg;
for(int j = 0; j < s.length(); j++){
if(word == "NULL"){ //直接不管它
word == "";
continue;
}
if(s[j] == '('){
beg = word;
word = "";
j++;
}
if(s[j] == ',' || s[j] == ')'){
bzzs[word] = bzzs[beg] + 1;
word = "";
j++;
}
word += s[j];
}
}
for(map<string , int>::iterator i = bzzs.begin(); i != bzzs.end(); i++){
len++;
zc[len].name = i -> first;
zc[len].lev = i -> second;
}
sort(zc + 1 , zc + len + 1 , cp);
for(int i = 1; i <= len; i++) cout << zc[i].name << " ";
return 0;
}
/*
4
Task0(Task1,Task2)
Task1(Task3)
Task2(NULL)
Task3(NULL)
*/
悄悄话:其实我的代码不输入最后一个数据的(大雾),但还是A了,可能因为前面的数据已经可以决定优先级了吧XD
《算法笔记》6.6小节 问题 A: 任务调度的更多相关文章
- 算法笔记之KMP算法
本文是<算法笔记>KMP算法章节的阅读笔记,文中主要内容来源于<算法笔记>.本文主要介绍了next数组.KMP算法及其应用以及对KMP算法的优化. KMP算法主要用于解决字符串 ...
- 学习Java 以及对几大基本排序算法(对算法笔记书的研究)的一些学习总结(Java对算法的实现持续更新中)
Java排序一,冒泡排序! 刚刚开始学习Java,但是比较有兴趣研究算法.最近看了一本算法笔记,刚开始只是打算随便看看,但是发现这本书非常不错,尤其是对排序算法,以及哈希函数的一些解释,让我非常的感兴 ...
- 算法笔记--数位dp
算法笔记 这个博客写的不错:http://blog.csdn.net/wust_zzwh/article/details/52100392 数位dp的精髓是不同情况下sta变量的设置. 模板: ]; ...
- 算法笔记--lca倍增算法
算法笔记 模板: vector<int>g[N]; vector<int>edge[N]; ][N]; int deep[N]; int h[N]; void dfs(int ...
- 算法笔记--STL中的各种遍历及查找(待增)
算法笔记 map: map<string,int> m; map<string,int>::iterator it;//auto it it = m.begin(); whil ...
- 算法笔记--priority_queue
算法笔记 priority_queue<int>que;//默认大顶堆 或者写作:priority_queue<int,vector<int>,less<int&g ...
- 算法笔记--sg函数详解及其模板
算法笔记 参考资料:https://wenku.baidu.com/view/25540742a8956bec0975e3a8.html sg函数大神详解:http://blog.csdn.net/l ...
- 算法笔记——C/C++语言基础篇(已完结)
开始系统学习算法,希望自己能够坚持下去,期间会把常用到的算法写进此博客,便于以后复习,同时希望能够给初学者提供一定的帮助,手敲难免存在错误,欢迎评论指正,共同学习.博客也可能会引用别人写的代码,如有引 ...
- 算法笔记_067:蓝桥杯练习 算法训练 安慰奶牛(Java)
目录 1 问题描述 2 解决方案 1 问题描述 问题描述 Farmer John变得非常懒,他不想再继续维护供奶牛之间供通行的道路.道路被用来连接N个牧场,牧场被连续地编号为1到N.每一个牧场都是 ...
- 算法笔记(c++)--回文
算法笔记(c++)--回文 #include<iostream> #include<algorithm> #include<vector> using namesp ...
随机推荐
- Java实现 蓝桥杯VIP 算法提高 色盲的民主
算法提高 色盲的民主 时间限制:1.0s 内存限制:256.0MB 色盲的民主 问题描述 n个色盲聚在一起,讨论一块布的颜色.尽管都是色盲,却盲得各不相同.每个人都有自己的主张,争论不休.最终,他 ...
- Java实现蓝桥杯互补二元组
分三处 1.当差值为0并且只有一个二元组就不管他 2.当差值为0并且二元组个数>=1加上他并减去它本身 3.当差值为存在并且不为0时直接加上他 因为都计算了两次,所以最后ans/2 用了map的 ...
- java实现高斯日记
题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记. 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯 ...
- 二叉树的层次序列化和反序列化-----stringstream
string serialize(TreeNode* root) {//层序便利,将空的子节点也放入到字符串 ostringstream out; queue<TreeNode*> q; ...
- python3 主机实时监控系统
主机实时监控系统(可在局域网访问) 一.思路: 前端: 1.管理员登录(编写一个管理员登录界面) 技术:html+css 2.资源数据显示(用于显示主机资源数据情况) 插件:echarts+jquer ...
- 用struts的action运行jsp页面
struts是开源框架.使用Struts的目的是为了帮助我们减少在运用MVC设计模型来开发Web应用的时间.如果我们想混合使用Servlets和JSP的优点来建立可扩展的应用,struts是一个不错的 ...
- 快速升级Zabbix 5.0 版本
Zabbix 5.0 增加了很多新功能,如:垂直菜单.隐藏菜单.用户界面中的测试项目.限制代理检查.查找并替换预处理步骤 ES7支持等等...快来部署体验一把尝鲜体验 Zabbix 5.0 吧 ...
- 我们是如何做DevOps的?
一.DevOps的理解 DevOps的概念理解 DevOps 的概念在软件开发行业中逐渐流行起来.越来越多的团队希望实现产品的敏捷开发,DevOps 使一切成为可能.有了 DevOps ,团队可以定期 ...
- Matplotlib 的正确使用方法,画一张好看的图
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:Python中文社区 本文用的数据如图所示,Dataframe中显示 ...
- 微信weixin://xxx 分析
通过weixin://来打开微信客户端: <a href="weixin://">打开微信</a> <a href="weixin://dl ...