博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
URAL 2080 Wallet
阅读量:4566 次
发布时间:2019-06-08

本文共 2084 字,大约阅读时间需要 6 分钟。

找规律发现只要找到两个相同数字之间,有多少个不同的数字,即为答案。

可以用树状数组离线处理。

坑点是卡有很多张,没用完的情况,后面的卡直接放在哪里,

就是

10 5

1 2 3 4 5 这样

开始数据要输出到10

#include 
#include
#include
#include
#include
using namespace std;#define inf (0x3f3f3f3f)typedef long long int LL;#include
#include
#include
const int maxn = 1e5 + 20;int n,m;int c[maxn];//树状数组,多case的记得要清空int lowbit (int x)//得到x二进制末尾0的个数的2次方 2^num{ return x&(-x);}void add (int pos,int val)//在第pos位加上val这个值{ while (pos<=m) { //n是元素的个数 c[pos] += val; pos += lowbit(pos); } return ;}int get_sum (int pos) //求解:1--pos的总和{ int ans = 0; while (pos) { ans += c[pos]; pos -= lowbit(pos); } return ans;}int ans[maxn];int a[maxn];struct node { int L,R,id; bool operator < (const node &rhs) const { return R < rhs.R; }}query[maxn];int ansQ[maxn];int book[maxn];int cur[maxn];vector
pos[maxn];void work (){ int lenans = 0; scanf ("%d%d", &n, &m); for (int i = 1; i <= m; ++i) scanf ("%d", &a[i]); for (int i = 1; i <= n; ++i) cur[i] = 1; for (int i = 1; i <= m; ++i) { if (book[a[i]] == 0) { ans[++lenans] = a[i]; book[a[i]] = 1; } pos[a[i]].push_back(i); } for (int i = 1; i <= n; ++i) { if (book[i] == 0) { ans[++lenans] = i; } } memset (book, 0, sizeof book); for (int i = 1; i <= m; ++i) { if (pos[a[i]].size() <= cur[a[i]]) { query[i].L = i; query[i].R = m; query[i].id = i; } else { query[i].L = i; query[i].R = pos[a[i]][cur[a[i]]]; query[i].id = i; } cur[a[i]]++; } sort (query + 1, query + 1 + m); int now = 1; for (int i = 1; i <= m; ++i) { for (int j = now; j <= query[i].R; ++j) { if (book[a[j]]) { add(book[a[j]], -1); } book[a[j]] = j; add(j,1); } now = query[i].R + 1; ansQ[query[i].id] = get_sum(query[i].R) - get_sum(query[i].L - 1) - 1; } for (int i = 1; i <= lenans; ++i) { printf ("%d ",ans[i]); } printf ("\n"); for (int i = 1; i <= m; ++i) { printf ("%d\n",ansQ[i]); } return ;}int main(){#ifdef local freopen("data.txt","r",stdin);#endif work (); return 0;}
View Code

 

转载于:https://www.cnblogs.com/liuweimingcprogram/p/5816443.html

你可能感兴趣的文章
win系统查看自己电脑IP
查看>>
Backup&recovery备份和还原 mysql
查看>>
一道面试题及扩展
查看>>
Unity 3D 我来了
查看>>
setup elk with docker-compose
查看>>
C++ GUI Qt4学习笔记03
查看>>
Java基础回顾 —反射机制
查看>>
c# 前台js 调用后台代码
查看>>
2017-02-20 可编辑div中如何在光标位置添加内容
查看>>
$.ajax()方法详解
查看>>
day42
查看>>
jquery操作select(增加,删除,清空)
查看>>
Sublimetext3安装Emmet插件步骤
查看>>
MySQL配置参数
查看>>
全面理解Java内存模型
查看>>
A - Mike and palindrome
查看>>
DOTween教程
查看>>
java web中java和python混合使用
查看>>
创建学员类和教员类
查看>>
Cookie和Session的作用和工作原理
查看>>