Rank 663/3064. AC 7/12. A. 阿宁的签到题 题意 根据分数输出等级。 思路 一门编程语言的基础之基础。 时间复杂度:\(O(1)\) 对应AC代码 import java.io.*; import java.math.*; import java.util.*; import java.util.concurrent.atomic.*; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); long x = scanner.nextLong(); if(1 <= x && x <= 7) System.out.println("very easy"); else if(x <= 233) System.out.println("easy"); e ...
Contestant. Rank 2756. Rating +40. A. Flip Flop Sum 题意 给定一个只包含 \(1,-1\) 的序列,要求必须进行一次操作,将任意 \(i\) 对应的 \(a_i,a_{i+1}\) 的值取反,输出操作后序列总和的最大值。 思路 显然,若序列是 \(1,-1,1,-1,...\) ,那么操作对总和无影响。 当序列中存在 \(-1,-1\) 时,总和加 \(4\)。 其余情况,即序列中全是 \(1\),总和减 \(4\)。 时间复杂度:\(O(n)\) 对应AC代码 import java.io.*; import java.math.*; import java.util.*; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int t = scanner.nextInt(); ...
Rank 379/3037. AC 7/12. A. 小沙の好客 题意 给定 \(n\) 个商品,对于 \(Q\) 个询问,挑选最多 \(k\) 个价值不大于 \(x\) 的商品,输出价值和的最大值。 思路 二分前缀和。 或者使用 \(stl\) 里的 \(upperbound\)。 时间复杂度:\(O(n+\log n)\) 对应AC代码 import java.io.*; import java.math.*; import java.util.*; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(), q = scanner.nextInt(); long[] a = new long[n + 1]; for(int i=1;i<=n;i++) a[ ...
Rank 445/3193. AC 6/13. A. 清楚姐姐学信息论 题意 给定 \(a\) 进制和 \(b\) 进制,用该进制下的一定数量的号码牌表示数字。输出用哪个进制可以用 \(a \times b\) 张号码牌表示更多的数。 思路 显然,我们只需比较 \(a ^ b\) 和 \(b ^ a\) 的大小,但我们无需模拟计算,因为只有 \(2,3\) 组合的时候,\(2 < 3,2 ^ 3 < 3 ^ 2\),其余情况均为 \(a < b , a ^ b > b ^ a\)。所以对该情况特判即可。 时间复杂度:\(O(1)\) 对应AC代码 import java.util.*; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int a = scanner.nextInt(), b = scanner. ...
Practice. A. Polycarp and the Day of Pi 题意 将输入与 "\(314159265358979323846264338327\)" 比对,输出从头开始匹配成功的最大数量。 思路 模拟即可。 时间复杂度:\(O(n)\) 对应AC代码 import java.util.*; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int t = scanner.nextInt(); while (t-- > 0) { String a = "314159265358979323846264338327"; String b = scanner.next(); int n = b.length(), cnt = 0; ...
Contestant. Rank 4776. Rating -20 (+30 -50). A. Parallel Projection 题意 给定一个长方体,在长方体的顶部和底部各取一个点,一只蚂蚁只能在平面上向平行于边的方向移动,求出蚂蚁从一个点移动到另一个点的最短路径。 思路 从四个方向分别模拟一下求最小值即可。 时间复杂度:\(O(1)\) 对应AC代码 import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int t = scanner.nextInt(); while(t -- > 0){ int w = scanner.nextInt(), d = scanner.nextInt(), h = scanner.nextInt(); ...
Practice. A. Everybody Likes Good Arrays! 题意 给定一个数组 \(a\),定义一次操作为将奇偶性相同的相邻元素相乘并合并为一个元素,输出让数组 \(a\) 满足所有相邻数奇偶性不同的最小操作数量。 思路 显然,奇偶性相同的两个数相乘后奇偶性是不变的,那么我们只需统计有多少组相邻元素的奇偶性相同即可。 时间复杂度:\(O(n)\) 对应AC代码 import java.math.BigInteger; import java.util.*; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int t = scanner.nextInt(); while(t -- > 0){ int n = scanner.nextInt(); i ...
Contestant. Unrated, with problem C removed. A. Hayato and School 题意 给定一个数组 \(a\),输出一对下标,满足下标对应的元素的和为奇数。保证数组 \(a\) 至少有 \(3\) 个元素。 思路 分类讨论: 奇数元素数量大于 \(3\),直接输出前三个奇数。 偶数只有 \(1\) 个,或者没有奇数,无解。 输出一对”奇,偶,偶“即可。 时间复杂度:\(O(n)\) 对应AC代码 #include <bits/stdc++.h> using namespace std; const int N = 310; pair<int, int> a[N], b[N]; #define ll long long int main() { ios::sync_with_stdio(false), cin.tie(0), cout.tie(0); int t; cin >> t; while(t --){ ...
Contestant. Rank 6984. Rating -84 (+16 -100). A1. Gardener and the Capybaras (easy version) 题意 给定一个由 \(a\) 和 \(b\) 构成的字符串,将其分成三部分 \(a,b,c\),输出一种分法,让 \(b\) 成为三者中的最值。 对于两个字符串 \(x\),\(y\),若 \(x < y\),当且仅当下面任意一个条件成立: \(x\) 是 \(y\) 的前缀,但\(x \neq y\); \(x_1='a',y_1='b'\)。 思路 我们分成两个情况考虑: 遍历 \([2,n-1]\),若出现 \(a\),那么让 \('a'\) 单独成为中间的字符,这样中间的字符一定是最小的,直接输出即可。 如果不存在,那么我们让 \([2,n-1]\) 的所有字符作为中间的字符串,因为第一位为 \(b\),且足够长,一定可以保证其为最大。 时间复杂度:\(O(n)\) 对应AC代码 im ...