题目名称 17. [NOI 2007]项链工厂
输入输出 necklace.in/out
难度等级 ★★★
时间限制 4000 ms (4 s)
内存限制 512 MiB
测试数据 10
题目来源 GravatarBYVoid 于2008-04-02加入
开放分组 全部用户
提交状态
分类标签
NOI 线段树 平衡树
分享题解
通过:78, 提交:271, 通过率:28.78%
Gravatar再见 100 1.069 s 34.62 MiB C++
GravatarFaller 100 1.093 s 30.83 MiB C++
Gravatar再见 100 1.153 s 34.62 MiB C++
Gravatarrewine 100 1.232 s 38.46 MiB C++
Gravatar梦那边的美好ET 100 1.395 s 30.83 MiB C++
GravatarXBCoder 100 1.451 s 46.09 MiB C++
Gravataronlysky 100 1.468 s 53.72 MiB C++
GravatarRapiz 100 1.511 s 30.81 MiB C++
Gravatarconfoo 100 1.539 s 32.72 MiB C++
Gravatarrrsb 100 1.614 s 46.09 MiB C++
关于 项链工厂 的近10条评论(全部评论)
#include <cstdio>
int main() {
printf("hello, world\n");
return 0;
}
GravatarBenjamin
2021-11-06 10:21 11楼
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
freopen("unhappy.in","r",stdin);freopen("unhappy.out","w",stdout);
int a[8],b[8],c[8];
for(int z=1;z<=7;z++)
{
cin>>a[z]>>b[z];
}
for(int z=1;z<=7;z++)
{
c[z]=a[z]+b[z];
}
for(int z=1;z<=7;z++)
{
if(c[z]>8)
{
cout<<z;
break;
}
}
}
Gravatar10001
2019-06-17 19:49 10楼
GravatarRapiz
2017-07-06 11:39 9楼
回复 @TenderRun :
我写的splay慢成狗QAQ
GravatarFoolMike
2016-10-01 15:55 8楼
两个半小时 就尼玛对了一个点QAQ 不玩了 摔
调了半天 发现定义在class里的变量在外面又定义了一遍 还少加了一个等号QAQ
Gravatar安呐一条小咸鱼。
2016-06-12 19:24 7楼
回复 @HZOI_lhy111 :
我的是Splay
GravatarTenderRun
2016-06-04 10:57 6楼
我的就是Splay。
一直看错题!!!
原来Flip中1的位置不和n位置互换!!!
GravatarTenderRun
2016-06-04 10:55 5楼
有没有用Splay做的...
GravatarHZOI_lhy111
2014-04-16 07:33 4楼
一!!!!定!!!!小!!!!心!!!!数!!!!组!!!!下!!!!标!!!!越!!!!界!!!!!!
RP已耗尽……
注意:
多多pushdown
CS整段环和C是不一样的
Gravatarcstdio
2013-05-30 14:09 3楼
呵呵........
GravatarQhelDIV
2013-05-29 23:07 2楼

17. [NOI 2007]项链工厂

★★★   输入文件:necklace.in   输出文件:necklace.out   简单对比
时间限制:4 s   内存限制:512 MiB

【问题描述】

T公司是一家专门生产彩色珠子项链的公司,其生产的项链设计新颖、款式多样、价格适中,广受青年人的喜爱。最近T公司打算推出一款项链自助生产系统,使用该系统顾客可以自行设计心目中的美丽项链。

该项链自助生产系统包括硬件系统与软件系统,软件系统与用户进行交互并控制硬件系统,硬件系统接受软件系统的命令生产指定的项链。该系统的硬件系统已经完成,而软件系统尚未开发,T公司的人找到了正在参加全国信息学竞赛的你,你能帮助T公司编写一个软件模拟系统吗?

一条项链包含N个珠子,每个珠子的颜色是1, 2, …, c中的一种。项链被固定在一个平板上,平板的某个位置被标记位置1,按顺时针方向其他位置被记为2,3,…,N。

Image:Necklace2007.jpg

你将要编写的软件系统应支持如下命令:

命令 参数限制 内容
R k 0 意为Rotate k。将项链在平板上顺时针旋转k个位置, 即原来处于位置1的珠子将转至位置k+1,处于位置2的珠子将转至位置k+2,依次类推。
F   意为Flip。将平板沿着给定的对称轴翻转,原来处于位置1的珠子不动,位置2上的珠子与位置N上的珠子互换,位置3上的珠子与位置N-1上的珠子互换,依次类推。
S i j 1≤i , j≤N 意为Swap i , j。将位置i上的珠子与位置j上的珠子互换。
P i j x 1≤i , j≤N, x≤c 意为Paint i , j , x。将位置i沿顺时针方向到位置j的一段染为颜色x。
C   意为Count。查询当前的项链由多少个“部分”组成,我们称项链中颜色相同的一段为一个“部分”
CS i j 1≤i , j≤N 意为CountSegment i , j。查询从位置i沿顺时针方向到位置j的一段中有多少个部分组成。

【输入文件】

输入文件第一行包含两个整数N, c,分别表示项链包含的珠子数目以及颜色数目。第二行包含N个整数,x1, x2…, xn,表示从位置1到位置N的珠子的颜色,1 ≤xi ≤c。第三行包含一个整数Q,表示命令数目。接下来的Q行每行一条命令,如上文所述。

【输出文件】

对于每一个C和CS命令,应输出一个整数代表相应的答案。

【输入样例】

5 3
1 2 3 2 1
4
C
R 2
P 5 5 2
CS 4 1

【输出样例】

4
1

【评分方法】

本题没有部分分,你的程序的输出只有和标准答案完全一致才能获得满分, 否则不得分。

【数据规模和约定】

  • 对于60%的数据,N ≤1 000,Q ≤1 000;
  • 对于100%的数据,N ≤500 000,Q ≤500 000,c ≤1 000。