zoj - 3309- Search New Posts
来源:互联网 发布:淘宝家具店 编辑:程序博客网 时间:2024/06/04 22:43
题意:给一个操作和一个话题,操作有, new(加入新话题), reply(某话题置顶,同时当作新话题 ), tag(把某话题标记为旧话题), serach(从top到bottom输出前100个新话题)。
解法: 话题存在一个双向链表中(方便删除和插入), 每个话题名称映射一个链表的节点(用map),然后就是模拟。
坑点: 一个话题可以被tag多次,导致一开始访问了空指针(如果用链表做注意)。
//code
#include<iostream>#include<cstdio>#include<string>#include<list>#include<map>using namespace std;struct List{List *prev;List *next;string name;friend bool operator < (List a, List b){return a.name<b.name;}};int main(){int n;while(cin>>n){map<string, List*>_m;map<string, List*>::iterator it;List *_l, *Head;Head = new List;_l = new List;_l->name = "Last";_l->next = NULL;_l->prev = Head;Head->next=_l;Head->name = "Head";Head->prev = NULL;for(int i=0; i<n; i++){string tmp;cin>>tmp;if(tmp == "new"){cin>>tmp;List *_l_tmp;_l_tmp = new List;_l_tmp->name = tmp;_l_tmp->next = Head->next;_l_tmp->prev = Head;Head->next = _l_tmp;_l_tmp->next->prev = _l_tmp;_m.insert(map<string, List*>::value_type(_l_tmp->name, _l_tmp));}else if(tmp == "reply"){cin>>tmp;it = _m.find(tmp);if(it == _m.end()) continue;List *Prev, *Next;Prev = it->second->prev;Next = it->second->next;if(Prev != NULL && Next != NULL){Prev->next = Next;Next->prev = Prev;}it->second->next = Head->next;it->second->prev = Head;Head->next = it->second;it->second->next->prev = it->second;}else if(tmp == "tag"){cin>>tmp;it = _m.find(tmp);if(it == _m.end()) continue;if(it->second->next == NULL && it->second->prev == NULL) continue;List *Prev, *Next;Prev = it->second->prev; Next = it->second->next;Prev->next = Next;Next->prev = Prev;it->second->next = it->second->prev = NULL;}else if(tmp == "search"){List *q;q = Head->next;int Sum=0;while(q->next != NULL){cout<<q->name<<endl;Sum++;if(Sum >= 100) break;q = q->next;}cout<<"###"<<endl;}}printf("\n");}return 0;}
- zoj - 3309- Search New Posts
- ZOJ 3309 Search New Posts(stl map)
- Posts Tagged 【Search】
- wordpress plugin “search engine related posts” 1.2发布
- Posts Tagged 【Catalan && dfs】Unique Binary Search Trees I && II
- ZOJ 2054 Binary Search(模拟)
- zoj 3540 Adding New Machine
- baidu's new search technology
- Social Networks: The New Search?
- Solution of ZOJ 2840 File Search
- ZOJ 3674 - Search in the Wiki
- ZOJ 3674 Search in the Wiki
- ZOJ 3674 Search in the Wiki
- ZOJ 1051 A New Growth Industry
- ZOJ 1051 A New Growth Industry
- zoj 3659 Conquer a New Region
- ZOJ 1051 A New Growth Industry
- zoj 1051 A New Growth Industry
- plsql 退出循环 不再继续往下执行
- DWR中获取Session
- c 判断文件夹是否存在,创建文件夹
- Editplus,notepad++使用小结
- MTK编译错误
- zoj - 3309- Search New Posts
- IOS 学习网站
- HTML&CSS学习笔记
- 设置Terminal的护眼背景和字体眼色
- Source Insight中文注释间隔过大的解决办法
- 悟透delphi 第一章 delphi的原子世界
- MFC 控件Radio Button的使用 .
- CSS控制页面最大最小宽度和高度可兼容IE6版本的实现方法
- 异步加载的概念理解