盾神与条状项链

问题描述

  有一天,盾神捡到了好多好多五颜六色的珠子!他心想这些珠子这么漂亮,可以做成一条项链然后送给他心仪的女生~于是他用其中一些珠子做成了长度为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

import java.util.ArrayList;
import java.util.Scanner;

public class Main_ADV198盾神与条状项链 {

    /**
     * @zxn
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner sc = new Scanner(System.in);
        //项链的长度
        int n = sc.nextInt();
        //修改的次数
        int m = sc.nextInt();
        int nn[] = new int [n];
        int mm[] = new int [m];
        ArrayList<Integer> list = new ArrayList<Integer>();
        //第一次的项链
        for (int i = 0; i < nn.length; i++) {
            nn[i] = sc.nextInt();
            list.add(nn[i]);
        }
        //修改项链
        for (int i = 0; i < mm.length; i++) {
            //判断是添加还是删除
            String str = sc.next();
            //添加
            if (str.equals("ADD")) {
                int a = sc.nextInt();
                int b = sc.nextInt();
                //获取要在a之前添加,获取a的下标
                int c = list.indexOf(a);
                list.add(c, b);
            }
            //删除
            if (str.equals("DEL")) {
                //把a删除
                int a = sc.nextInt();
                //获取a的下标并删除
                int b = list.indexOf(a);
                list.remove(b);
            }
        }
        System.out.println(list.size());
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+" ");
        }
    }
}

原文地址:https://www.cnblogs.com/shiaguang/p/12363100.html

时间: 2024-08-29 19:28:53

盾神与条状项链的相关文章

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

目录 1 问题描述 2 解决方案   1 问题描述 问题描述 有一天,盾神捡到了好多好多五颜六色的珠子!他心想这些珠子这么漂亮,可以做成一条项链然后送给他心仪的女生~于是他用其中一些珠子做成了长度为n的项链.当他准备把项链首尾相接的时候,土方进来了. "哇这么恶心的项链你也做得出来!!!" 盾神自知审美不是他的长项,于是他很谦虚地请教土方,怎么才能把项链做得漂亮. "这个嘛~首先你要在这里加上一个这种颜色的珠子,然后在这里去掉这个珠子,然后--,最后你看看是不是漂亮很多咧~&

蓝桥杯—盾神与条状项链

思路: 直接使用STL的list容器. 分两种情况: 1.DEL Q.直接调用void remove( const TYPE &val )函数即可. 2.ADD P Q.首先找出P所在的位置,通过迭代器实现(看不懂迭代器的可以参考这篇文http://www.cnblogs.com/yc_sunniwell/archive/2010/06/25/1764934.html),之后将Q插入到P之前,调用iterator insert( iterator pos, const TYPE &val

C++:盾神与条状项链

实现代码如下: #include<cstdlib> #include <string> #include <iostream> using namespace std; int main() { int n, m; cin >> n >> m; int *a = (int *)malloc(n * sizeof(n)); for (int i = 0; i < n; i++) cin >> a[i]; //定义m次操作 for

蓝桥杯 算法提高 盾神与条状项链

题目如下: 本来自己写了个链表,但是写的有问题,通不过后3组数据,后来在同学的提示下,用数组模拟链表,然后我就用2元数组模拟双向链表,因为此题颜色不重复,所以模拟较为简单,代码如下: #include<stdio.h> typedef struct Color { int pre; int next; }color; color c[100001]; int m,n; int main() { int i,j,cr,p0=0,n0,P,Q; char s[4]; scanf("%d%

[R语言绘图]条状图barplot

#基本的条状图 a<-c(1,2,3,4,5,6,7,8) barplot(a) #table的条状图 install.packages("vcd") library(vcd) b<-table(Arthritis$Improved) barplot(b) 参考:R语言实战 转载请注明出处:http://blog.csdn.net/zhyoulun/article/details/46433619

python中matplotlib绘图封装类之折线图、条状图、圆饼图

DrawHelper.py封装类源码: 1 import matplotlib 2 import matplotlib.pyplot as plt 3 import numpy as np 4 5 class DrawHelper: 6 def __init__(self): 7 # 指定默认字体 下面三条代码用来解决绘图中出现的乱码 8 matplotlib.rcParams['font.sans-serif'] = ['SimHei'] 9 matplotlib.rcParams['font

highcharts 折线,饼状,条状综合图

完整代码如下: <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>综合图</title> <script type="text/javascript" src="js/jquery.js"></script> <script type

用CSS设计类似条状统计表效果

<html> <head> <title>用CSS设计类似条状统计表效果</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <style> dl { margin:0; padding:0 0 15px 0; width:401px; height:auto; background:#ff

男神的约会(状压dp)

有一天男神约了学姐姐去看电影,电影院有一个活动,给你一个10*10的矩阵,每一个格子上都有一个0-9的整数,表示一共十种优惠券中的一种. 观众从左上角的格子开始走,走到右下角.每走到一个有着a号优惠券的格子,都必须要玩一个a分钟的游戏来领取这张优惠券. 每次只能向右或向下走.当走到右下角的时候,如果集齐10种优惠券就可以半价看电影呢. 为了能在学姐姐面前展示自己的才智,男神准备用最少的时间领取全部的优惠券(他要省出最多的时间陪学姐姐).聪明的你能告诉男神,他最少要花费的时间是多少? Input输