POJ 2259(用空间换取时间)
来源:互联网 发布:淘宝的支付方式 编辑:程序博客网 时间:2024/05/24 04:31
/**/#include <iostream>#include <cstring>#include <queue>using namespace std;queue<int> teamid[1001];queue<int> normal;int flagNum[1000000+1]; //关键在于这里,一个数的状态,看这个,如果是0,那么不是队列中的,是其他数,就是几号队列的 ;数就带过来了; int flagTeam[1001];void init(int n){while(normal.size()!=0) normal.pop();for(int i = 0; i < n; ++i){flagTeam[i] = 0;while(teamid[i].size() ) teamid[i].pop();}}int main(){int counter = 0;int n,m,num;while(1){scanf("%d",&n);if(n == 0) return 0;init(n);memset(flagNum, 0, sizeof(int)*1000000+1);for(int i = 1; i <= n; ++i){scanf("%d",&m);for(int j = 0; j < m; ++j){scanf("%d",&num);flagNum[num] = i;}}printf("Scenario #%d\n",++counter); char str[20];while(1){scanf("%s",str);if(strcmp(str,"STOP") == 0) {printf("\n");break;}if(strcmp(str,"ENQUEUE") == 0){scanf("%d",&num);if(flagNum[num] == 0){normal.push(num);}else{if(flagTeam[flagNum[num]] == 0){teamid[flagNum[num]].push(num);normal.push(-flagNum[num]);flagTeam[flagNum[num]] = 1;}else{teamid[flagNum[num]].push(num);}}}else if(strcmp(str,"DEQUEUE") == 0){if(normal.size() == 0) continue;if( normal.front() > 0){printf("%d\n",normal.front());normal.pop();}else{printf("%d\n",teamid[ -normal.front() ].front() );teamid[ -normal.front() ].pop();if(teamid[ -normal.front() ].size() == 0){flagTeam[-normal.front()] = 0;normal.pop();}}}}}}
这题的难点在于计算速度;(因为数据量大)
解决这题的关键在于: 要用空间换取时间;
阅读全文
0 0
- POJ 2259(用空间换取时间)
- 用栈空间换取时间
- 空间换取时间
- 【以空间换取时间】 Trie
- HDU1397(以空间换取时间)
- 递归算法应用-牺牲空间换取时间
- 面试题--位操作---延伸到一个用空间换取时间效率的例子
- 算法题目---求公司内员工的年龄排序---用空间换取时间O(n)
- 一层for循环完成排序--空间换取时间
- 分批处理大数据 -- 时间换取空间策略
- SAP ABAP代码优化(5)之空间换取时间策略
- Hadoop推测执行(以空间换取时间)
- 【模版元编程(用编译时间换取运行时间)】
- 315.leetcode Count of Smaller Numbers After Self(hard)[利用二分查找 空间换取时间的思想]
- 用时间换取天赋,用坚持换取机遇
- 用失败换取成功-俞敏洪
- JAVA实现计数排序(牺牲稳定性,换取空间复杂度)
- POJ 1840 (空间和时间的换)
- 【HDU
- ios-换肤简单实现
- PopupWindow设置背景
- leetcode Word Search
- 修改Gradle 和Maven本地仓库的位置 方法
- POJ 2259(用空间换取时间)
- 为什么内存映射要比IO读写更加快速
- 2017.11.01前端小记
- ZOJ 3983 && 2017CCPC秦皇岛 C:Crusaders Quest
- LeetCode基础-排序-快速排序
- 微信小程序布局(一)
- linux ssh 不保存操作记录history
- 从源代码构建VIM
- MyBatis配置数据源的两种方式