资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  有一天,盾神捡到了好多好多五颜六色的珠子!他心想这些珠子这么漂亮,可以做成一条项链然后送给他心仪的女生~于是他用其中一些珠子做成了长度为n的项链。当他准备把项链首尾相接的时候,土方进来了。
  “哇这么恶心的项链你也做得出来!!!”
  盾神自知审美不是他的长项,于是他很谦虚地请教土方,怎么才能把项链做得漂亮。
  “这个嘛首先你要在这里加上一个这种颜色的珠子,然后在这里去掉这个珠子,然后……,最后你看看是不是漂亮很多咧”土方一下子说出了m个修改步骤。
  盾神觉得这个用人工做太麻烦了,于是交给了你。
输入格式
  第一行两个数,分别为n,m。
  第二行n个数,表示盾神一开始的项链。第i个数表示第i颗珠子的颜色。
  接下来m行,为以下形式之一:
  ADD P Q:表示在颜色为P的珠子前面加上一个颜色为Q的珠子。
  DEL P:表示把颜色为P的珠子去掉,如果它不在端点处,则需要把它旁边的两颗珠子连起来。例如某时刻项链状态为1 4 5 8,则执行DEL 4会变成1 5 8,执行DEL 1会变成4 5 8。
  输入保证在每次操作之前,项链有颜色为P的珠子,且任意时刻珠子颜色互不相同。
输出格式
  第一行为一个数len,为做完所有操作后,项链的长度。
  第二行len个数,表示此时项链的状态。第i个数表示第i颗珠子的颜色。
样例输入
10 5
1 2 3 4 5 6 7 8 9 10
DEL 5
ADD 7 5
DEL 10
ADD 4 20
ADD 20 12
样例输出
11
1 2 3 12 20 4 6 5 7 8 9
数据规模和约定
  表示颜色的数字不超过105的正数,1<=n<=104,1<=m<=10^4。

解题思路:
本题按照题目要求来使用链表进行操作即可,不过使用链表时有个小技巧,就是增加一个附加头结点,因为是用整形数据(int)表示珠子的颜色,所以头结点的int型变量可以表示除头结点外其余链结点的个数,输出时,珠子的个数即为头结点中int型属性的值,加一个附加头结点,也方便了删除和增加珠子的操作,不需要对首节点进行分情况讨论,增加题解的复杂度

#include<iostream>
#include<string.h>
using namespace std;
struct Lian{//链表 int color;//头结点表示个数,其他结点表示颜色Lian *link;//指向下一个 Lian(){//无参构造函数 color=-1;link=NULL;}Lian(int co){//有一个参数的有参构造函数 color=co;link=NULL;}
};
int n,m;//表示竹子个数和操作次数
Lian *first=new Lian();//定义头结点
void Del(int a);//删除珠子a
void Add(int a,int b);//在珠子a前面加珠子b
int main()
{cin>>n>>m;int i;//循环变量int color;//表示输入的颜色char str[4];//表示输入的 first->color=0;//表示只有0个珠子 Lian *t=first;//t指向要加入数据的前一个结点 int a,b;//表示输入的数 for(i=0;i<n;i++){cin>>color;first->color++;Lian *Next=new Lian(color);//新建一个珠子t->link=Next;t=t->link; } for(i=0;i<m;i++){cin>>str;if(strcmp(str,"DEL")==0){cin>>a;//表示要删除的数 Del(a);//删除a }else{cin>>a>>b;//在数a前添加b Add(a,b);}} cout<<first->color<<endl;t=first->link;while(t!=NULL){cout<<t->color<<" ";t=t->link;}cout<<endl;return 0;
}
void Del(int a)//删除珠子a
{first->color--;Lian *left=first;//指向后面那个 Lian *right=first->link;//指向前面那个while(right!=NULL){if(right->color==a){//找到珠子a left->link=right->link;break; }right=right->link;left=left->link;} delete []right;
}
void Add(int a,int b)//在珠子a前面加珠子b
{first->color++;Lian *left=first;//后一个 Lian *right=first->link; //前一个while(right!=NULL){if(right->color==a){//在珠子a之前加入珠子b Lian *temp=new Lian(b);//新建一个结点temp->link=right;left->link=temp; break;}left=left->link;right=right->link;}
}

蓝桥杯算法提高 盾神与条状项链相关推荐

  1. 算法笔记_098:蓝桥杯练习 算法提高 盾神与条状项链(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 有一天,盾神捡到了好多好多五颜六色的珠子!他心想这些珠子这么漂亮,可以做成一条项链然后送给他心仪的女生~于是他用其中一些珠子做成了长度为n ...

  2. [Java] 蓝桥杯ADV-193 算法提高 盾神与条状项链

    问题描述 有一天,盾神捡到了好多好多五颜六色的珠子!他心想这些珠子这么漂亮,可以做成一条项链然后送给他心仪的女生~于是他用其中一些珠子做成了长度为n的项链.当他准备把项链首尾相接的时候,土方进来了. ...

  3. 蓝桥杯 ADV-193算法提高 盾神与条状项链

    问题描述 有一天,盾神捡到了好多好多五颜六色的珠子!他心想这些珠子这么漂亮,可以做成一条项链然后送给他心仪的女生~于是他用其中一些珠子做成了长度为n的项链.当他准备把项链首尾相接的时候,土方进来了. ...

  4. 蓝桥杯 ADV-193 盾神与条状项链 (试题解析)

    试题 算法提高 盾神与条状项链 提交此题   评测记录 资源限制 时间限制:1.0s   内存限制:256.0MB 问题描述 有一天,盾神捡到了好多好多五颜六色的珠子!他心想这些珠子这么漂亮,可以做成 ...

  5. [蓝桥杯][算法提高VIP]Sharing Chocolate(状压dp记忆化搜索)

    题目描述 每天,巧克力在它的许多形式上被全世界数百万人分享.它是一个真正普遍的糖果,实际上在世界上每个国家都能得到. 你发现唯一比吃巧克力更好的事情是把它分享给朋友.不幸的是,你的朋友非常挑剔,有着不 ...

  6. [蓝桥杯][算法提高VIP]夺宝奇兵-递推+记忆化搜索

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  7. [蓝桥杯][算法提高VIP]夺宝奇兵-dp

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  8. c语言oj题1923偶数之和,问题 1923: [蓝桥杯][算法提高VIP]学霸的迷宫 (BFS)

    题目描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...

  9. 算法提高 盾神与积木游戏

    算法提高 盾神与积木游戏   时间限制:1.0s   内存限制:256.0MB 问题描述 最近的m天盾神都去幼儿园陪小朋友们玩去了~ 每个小朋友都拿到了一些积木,他们各自需要不同数量的积木来拼一些他们 ...

  10. JAVA 蓝桥杯 算法提高 阮小二买彩票

    JAVA 蓝桥杯 算法提高 阮小二买彩票 资源限制 时间限制:1.0s 内存限制:512.0MB 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电 ...

最新文章

  1. 简述DataInputStream和DataOuputStream
  2. 自然语言处理工具hanlp自定义词汇添加图解
  3. 晶闸管有几个pn结_晶闸管的电路符号和图片识别
  4. 调试Android之system.img的来回切换。
  5. stm32单片机屏幕一直闪_STM32使用HAL库函数点亮OLED
  6. 漫画:如何证明sleep不释放锁,而wait释放锁?
  7. 专访OPPO Find X5产品经理:深耕自研芯片 以最高标准打造极致旗舰体验
  8. 如何给namedtuple添加docstring
  9. Android N代码暗示隐藏的“多窗口”模式
  10. 算法与数据结构 第2章 排序基础 上
  11. IT6613,是一款BT1120 TO HDMI 单转芯片
  12. dirent struct_关于readdir返回值中struct dirent.d_type的取值有关问题(转)
  13. SMT阻容件封装尺寸
  14. OSChina 周二乱弹 ——普通高等男友招生考试
  15. STM32 USB DFU功能
  16. PX4-AutoPilot教程-0-使用VMware虚拟机安装Ubuntu系统并搭建PX4开发环境(ROS+mavros+jMAVSim+gazebo+QGC+QT)
  17. AC68U koolshare 梅林固件使用IPV6
  18. 解决引入JS中文乱码问题
  19. KNN实现手写数字识别(Python-OpenCV)
  20. linux目录修改为英文

热门文章

  1. nginx配置详解及设置代理服务器(1)
  2. 灵性图书馆:好书推荐-《当下的力量》
  3. RGB/YUV/YIQ 颜色空间
  4. Nginx 负载均衡演示之 upstream 参数、 location 参数等示例说明
  5. 软件工程——团队作业4
  6. 游戏本地化翻译有哪些内容需要注意
  7. socket 10106问题解决日记
  8. hihocoder 1251 Today Is a Rainy Day 2015北京区域赛C
  9. 如何接受上级指令_职场老手教你怎么应对领导错误的指令,千万要注意这几点...
  10. php7国内,介绍php7和php5对比