P13499:「Cfz Round 6」Umiyuri Kaiteitan
题目传送门
题目大意
当收到 ls > NAME 指令时,执行以下操作:
- 若在当前目录中不存在名为 NAME 的文件,则创建一个名为 NAME 的文件;若在当前目录中存在名为 NAME 的文件,则将该文件的内容清空;
- 将当前目录中所有文件的文件名按照递增的顺序写入到名为 NAME 的文件中,相邻两个文件名之间用一个空格分隔。
思路
前置工作
我们要定义两个数组——数组
另外,我们还要定义一个变量
解题
对于每个指令,都有以下步骤:
如果文件名为
tips:计算文件名的字节数需要用函数。
如果文件名为
将
标记文件名为
AC Code:
#include <bits/stdc++.h>
using namespace std;
const int N=5e5+5;
bool h[N];
// vector<int> v[N];
long long a[N];
int cal(int x)
{
int cnt=0;
while(x)
{
x/=10;
cnt++;
}
return cnt+1;
}
int main()
{
int n,m;
cin >>n>>m;
long long sum=0;
for(int i=1;i<=n;i++)
{
int x;
cin >>x;
if(h[x]==0) sum+=cal(x);
if(h[x]==1) a[x]=0;
a[x]=sum-1;
h[x]=1;
}
for(int i=1;i<=m;i++) cout <<a[i]<<" ";
return 0;
}