3729. 改变数组元素
数组 元素 改变
2023-09-27 14:27:31 时间
Powered by:NEFU AB-IN
文章目录
3729. 改变数组元素
情人节快乐!
-
题意
给定一个空数组 V和一个整数数组 a1,a2,…,an
现在要对数组 V进行 n次操作。
第 i次操作的具体流程如下:
从数组 V尾部插入整数 0。将位于数组 V末尾的 ai个元素都变为 1(已经是 1的不予理会)。 -
思路
思路就是差分,没什么好说的,就是想记录一下memset的用法
可以注意到此题 T = 2e4, n = 2e5, 虽然memset相对于循环定义来说,快了不少
但如果我们每次都memeset(b, 0, sizeof b)
会导致每组数据都O(n)跑一遍,4e9就很难过,也就是卡memset!!
所以采用下面两种方法,原理是一样的,都是不全清0
memset(b, 0, (n + 1) * 4) // 意思就是,我们下标是从0开始的,所以用n+1个元素。数组类型是int,所以占4个byte for (int i = 1; i <= n; ++i) // 循环清0 b[i] = 0;
亲测快了十倍!
-
代码
/* * @Author: NEFU AB-IN * @Date: 2023-02-14 21:37:04 * @FilePath: \Acwing\3729\3729.cpp * @LastEditTime: 2023-02-14 22:18:33 */ #include <bits/stdc++.h> using namespace std; #define int long long #undef int #define SZ(X) ((int)(X).size()) #define ALL(X) (X).begin(), (X).end() #define IOS \ ios::sync_with_stdio(false); \ cin.tie(nullptr); \ cout.tie(nullptr) #define DEBUG(X) cout << #X << ": " << X << '\n' typedef pair<int, int> PII; const int N = 1e6 + 10, INF = 0x3f3f3f3f; int a[N], b[N]; int n; void solve() { scanf("%d", &n); memset(b, 0, (n + 1) * 4); // for (int i = 1; i <= n; ++i) // b[i] = 0; for (int i = 1; i <= n; ++i) { scanf("%d", &a[i]); b[max(1, i - a[i] + 1)]++; b[i + 1]--; } for (int i = 1; i <= n; ++i) { b[i] += b[i - 1]; printf("%d ", b[i] ? 1 : 0); } printf("\n"); return; } signed main() { int T; scanf("%d", &T); while (T--) solve(); return 0; }
相关文章
- (美团)巧用数组下标,轻轻松松找出所有元素
- C语言数组初始化的问题
- Java 数组
- 【算法】【二叉树模块】有序数组生成平衡搜索二叉树
- .NET如何快速比较两个byte数组是否相等
- 一次性删除数组中的多个元素
- 数组遍历 map()、forEach() 及 字符串切割 split() / 字符串截取 slice()、substring()、substr()
- Java核心技术卷I基础知识3.10.5 数组排序
- JS LeetCode 303. 区域和检索 - 数组不可变,一维数组的前缀和
- js 判断是否为数组
- 删除数组中的重复元素,并返回去重的数组之Python解法
- js判断数组对象或对象对象数组是否包含元素包含值 并获取下标
- js获取数组对象再多数组中出现次数
- 关于本地缓存localstorage与sessionStorage 数组 (array)字符串(string) 对象(object)的存储技巧和注意事项
- 操作元素--字符串对象-日期对象-Array对象(数组)-Math对象-计时器
- 求数组主元素的O(n)算法
- 数组赋值
- php获取并删除数组的第一个和最后一个元素
- Linux常用基本命令:三剑客命令之-awk数组用法
- 二维数组和稀疏数组转换
- weex-过滤数组中的元素并进行删除
- js 删除 数组中某个元素(转载)
- [LeetCode] Single Element in a Sorted Array 有序数组中的单独元素
- [LeetCode] Minimum Moves to Equal Array Elements II 最少移动次数使数组元素相等之二
- FastJson解析对象及对象数组--项目经验
- AcWing《蓝桥杯集训·每日一题》—— 3729 改变数组元素
- 牛客剑指offer-----数组(在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数)
- Java中数组参考指南
- [Python] 判断数组是否存在重复元素