PAT 天梯赛 L2-002 链表去重
模拟单链表的增删操作
题目链接:https://www.patest.cn/contests/gplt/L2-002
题解
最开始我脑抽用map模拟单链表进行操作,因为这样可以节约空间,并且用了cin、cout进行输入输出,后来发现有些样例超时了。考虑到cin、cout在面对大量数据的时候会很慢,所以我就换成了scanf、printf进行输入输出,果然过的样例多了,但是还是不能通过全部样例。最后换成数组模拟单链表的操作,用空间换时间,最终AC。
代码如下:
#include<cstdio>
#include<cstdlib>
#include<cmath>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn = 100000+10;
struct Node{
int nextad;
int key;
}nod[maxn];
int start_ad, n;
bool vis[10010];
void _output(int p) {
while(p != -1) {
printf("%05d %d ", p, nod[p].key);
if(-1 == nod[p].nextad) {
printf("-1\n");
}else {
printf("%05d\n", nod[p].nextad);
}
p = nod[p].nextad;
}
}
int main() {
while(~scanf("%d%d", &start_ad, &n)) {
memset(vis, 0, sizeof(vis));
for(int i = 0; i < n; i++) {
int p,q,r;
scanf("%d%d%d", &p, &q, &r);
nod[p].key = q;
nod[p].nextad = r;
}
int pre = start_ad, next = start_ad;
int begin_ad = -1, pre2;
vis[abs(nod[start_ad].key)] = true;
for(int i = 1; i < n; i++) {
next = nod[pre].nextad;
if(vis[abs(nod[next].key)]) {
if(-1 == nod[next].nextad) {//删除最后一个节点
nod[pre].nextad = -1;
}else {
nod[pre].nextad = nod[next].nextad;
}
//刚删除的节点一定要将其后继地址赋值为-1
nod[next].nextad = -1;
if(-1 == begin_ad) {//第一次删除节点
begin_ad = next;
pre2 = begin_ad;
}else {
nod[pre2].nextad = next;
pre2 = next;
}
}else {
pre = next;
vis[abs(nod[pre].key)] = true;
}
}
_output(start_ad);
_output(begin_ad);
}
return 0;
}
PAT 天梯赛 L2-002 链表去重的更多相关文章
- PAT 天梯赛 L2-022. 重排链表 【数据结构】
题目链接 https://www.patest.cn/contests/gplt/L2-022 思路 先用结构体 把每个结点信息保存下来 然后深搜一下 遍历一下整个链表 然后就重新排一下 但是要注意一 ...
- PAT天梯赛 L1-049 天梯赛座位分配
题目链接:点击打开链接 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] ...
- PAT天梯赛L3-007 天梯地图
题目链接:点击打开链接 本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线:一条是最短距离的路线.题目保证对任意的查询请求,地图上都至 ...
- PAT天梯赛练习题——L3-007. 天梯地图(多边权SPFA)
L3-007. 天梯地图 时间限制 300 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 本题要求你实现一个天梯赛专属在线地图,队员输入自己学校 ...
- PTA天梯赛L2
L2-001 紧急救援 题意:就是给你一张n<500的图:让你求最短路径,最短路条数,以及路径: 做法,先用dijkstra求最短路,然后dfs找最短路条数,以及点权的最大值: 一般dfs不就可 ...
- PAT天梯赛 L2-002. 链表去重 【STL】
题目链接 https://www.patest.cn/contests/gplt/L2-002 思路 用结构体 存储 一个结点的地址 值 和下一个地址 然后从首地址开始 往下走 并且每个值的绝对值 都 ...
- pat甲级 团体天梯赛 L2-022. 重排链表
L2-022. 重排链表 时间限制 500 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个单链表 L1→L2→...→Ln-1→Ln,请 ...
- PAT 天梯赛练习集 L2-022. 重排链表
题目链接:https://www.patest.cn/contests/gplt/L2-022 给定一个单链表 L1→L2→...→Ln-1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln-1→L ...
- GPLT天梯赛 L2-022. 重排链表
L2-022. 重排链表 时间限制 500 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定一个单链表 L1→L2→...→Ln-1→Ln,请 ...
随机推荐
- 使用queryperf对DNS服务器作压力测试
一.querperf简介 当我们把DNS服务器配置好后,我们肯定会想测试一下DNS服务器的性能如何,上线后如果请求数够多服务器还能否响应?于是,我们可以使用软件模拟环境,对DNS服务器作评估性的测试. ...
- Android PopupWindow菜单
初学Android,引用了这篇文章的代码 http://www.cnblogs.com/jiezzy/archive/2012/08/15/2640584.html 使用PopupWindow制作自定 ...
- 登录数据库后,use db很慢的问题
mysql> use dbl Reading table information for completion of table and column names You can turn of ...
- FirstOrDefault()的重载方法
FirstOrDefault方法的使用总结: 现有一集合对象list, 其中集合对象调用FirstOrDefault()方法, list.FirstOrDefault()返回集合中第一个元素, 若集合 ...
- C# 垃圾回收机制(转)
摘要:今天我们漫谈C#中的垃圾回收机制,本文将从垃圾回收机制的原理讲起,希望对大家有所帮助. GC的前世与今生 虽然本文是以.NET作为目标来讲述GC,但是GC的概念并非才诞生不久.早在1958年,由 ...
- ActiveX控件在IE中不响应Backspace消息
1.操作输入法需要导入: #include <imm.h> #pragma comment(lib, "imm32") 2.定义变量: //键盘钩子句柄 HHOOK g ...
- win8.1点击“更改电脑设置”无反应(闪退)
系统:win8.1 专业版 症状:win键+C → 设置 → 更改电脑设置,无反应. 尝试办法: 1.SFC /scannow扫描修复,扫描出错误但无法修复.因为曾经为了节省空间,用DISM++清理了 ...
- material design 的android开源代码整理
material design 的android开源代码整理 1 android (material design 效果的代码库) 地址请点击:MaterialDesignLibrary 效果: 2 ...
- linux 用户管理维护 清缓存
#echo 1 > /proc/sys/ vm/drop_caches 2013.10.10 其实一直user group一直都没去弄清楚 只是没去归类,@@一种是对用户/组直接修改(同时也更改 ...
- MyEclipse使用总结——修改MyEclipse默认的Servlet和jsp代码模板
http://www.cnblogs.com/xdp-gacl/p/3769058.html 孤傲苍狼 只为成功找方法,不为失败找借口! MyEclipse使用总结——修改MyEclipse默认的 ...