Practice. A. A+B? 题意 给定一个形如 \(a+b\) 的字符串,输出答案。\(a, b \in [0, 9]\)。 思路 模拟。 时间复杂度:\(O(1)\) 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 = scanner.next().split("\\+"); System.out.println(Integer.parseInt(a[0]) + Integer.parseInt(a[1])); } } } 过于签到,应该有语言可以一行解 ...
Contestant. Rank 3808. Rating +17. A. Exponential Equation 题意 给定整数 \(n\),输出一对 \(x, y\),满足 \(x ^ y \cdot y + y ^ x \cdot x = n\)。 思路 不妨令 \(x = 1\),那么 \(y = n / 2\)。 显然,当 \(n\) 为奇数的时候,一定是无解的,因为 \(x ^ y \cdot y\) 和 \(y ^ x \cdot x\) 的奇偶性一定是一致的。 所以,\(n\) 为偶数的时候,输出 \(1, n / 2\)。 时间复杂度:\(O(1)\) 对应AC代码 import java.math.BigInteger; import java.util.*; public class Main{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); i ...
Contestant. Rank 3392. Rating -15. 代码略去了快读模板 A. Codeforces Checking 题意 给定一个字符,判断是否在 \(codeforces\) 字符串中出现。 思路 数组记录 + 读数组。 时间复杂度:\(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) throws Exception{ Console console = new Console(); int t = console.nextInt(); boolean[] have = new boolean[26]; for(char each : "codeforces" ...
Contestant. Rank 530. Rating +127. 代码略去了快读模板 A1. Non-alternating Deck (easy version) 题意 给定 \(n\) 个颜色相同的卡片,取卡片顺序为 \(A,B,B,A,A,B,B,A,A,B,B,...\),每次取卡片的数量依次递增,当无法继续取的时候,按照正常顺序,下一个取卡片的人取完所有卡片。输出 \(A,B\) 各取了多少卡片。 思路 暴力模拟。 时间复杂度:\(O(\sqrt n)?\) 对应AC代码 import java.io.*; import java.math.*; import java.util.*; import java.util.concurrent.atomic.*; public class Main{ public static void main(String[] args) throws Exception{ Console console = new Console(); ...
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; ...