StarryCoding 算法小白周赛2 题解与代码(含视频题解)
比赛链接(含视频题解):https://www.starrycoding.com/contest/4
A题题解:
题目大意
给你一个由 n n n 个正整数组成的数组 a a a,询问这个数组是否是严格单调递增的。
思路
因为他会按照“拜访时间安排表”的顺序拜访每一位好友,而无法成功拜访某一好友时,必定是出现靠后拜访的时间早于靠前拜访的,或者两次拜访的时间相同,所以问题的本质就是判断数组是否严格单调递增,也就是 a 1 > n; if (a(n)= 3)n++; cout T; while (T--) { int n; cin >> n; if (a(n) ai+1 且 a i − 1 = a i + 1 a_{i-1} = a_{i+1} ai−1=ai+1,时,我们应该删除 a i a_{i} ai 将 a i + 1 a_{i+1} ai+1 变为 a i + 1 + 1 a_{i+1} + 1 ai+1+1。
核心代码
void solve() { int n, k = 0; cin >> n; vector a(n + 1, 0); for (int i = 1; i cin > a[i]; } int b = a[1]; for (int i = 2; i if (a[i] b) { b = a[i]; continue; } if (a[i] == b) { a[i]++; b = a[i]; } else { k++; if (k == 2) { cout b = a[i - 1]; } else if (a[i] == a[i - 2]) { a[i]++; b = a[i]; } else { b = a[i]; } } } cout int n, k; std::cin n >> k; for(int i = 1; i for(int j = 1; j std::cin a[i][j]; } } for(int i = 1; i for(int j = 1; j if(i == 1 && j == 1){ dp[1][1][a[1][1] % k] = 1; } for(int x = 0; x