随笔分类 - codeforces
摘要:A. Unit Array 题意:一个只有\(1, -1\)的数组,你要更改最少的数,使得数组和大于等于\(0\),且\(-1\)的个数为偶数。 记录\(1, -1\)的个数,先把它们的个数变成一样,然后如果有奇数\(-1\)就再操作一次。 点击查看代码 void solve() { int n;
阅读全文
摘要:A. New Year Garland 题意:三种颜色分别有\(r, g, b\)个。求能不能把它们排成一行满足没有相邻的颜色相同。 只要\(max \leq \lceil \frac{r+g+b}{2} \rceil\)就满足。 点击查看代码 void solve() { i64 a, b, c;
阅读全文
摘要:A. Shuffle Hashing 题意:判断\(s\)排序后是不是和\(t\)的一段子串排序相等。 点击查看代码 void solve() { std::string s, t; std::cin >> s >> t; int n = s.size(), m = t.size(); std::r
阅读全文
摘要:A. LRC and VIP 题意:求能不能把\(a\)数组分成两部分,使得它们的\(gcd\)不相同。 考虑\(gcd\)是小于等于这些数的,那么我们可以把最大值和非最大值分开。无解的情况就是所有数相同。 点击查看代码 void solve() { int n; std::cin >> n; st
阅读全文
摘要:A. Heating 题意:最多选\(n\)个非负整数,使得它们的和为\(m\),花费为每个数的平方之和。求最小花费。 应该让每个数都尽量接近。那么每个数至少为\(\lfloor \frac{m}{n} \rfloor\),有\(m\% n\)个数需要加一。 点击查看代码 void solve()
阅读全文
摘要:A. Two Rival Students 题意:\(n\)个位置,可以操作\(x\)次,有两个人在\(a, b\)点。你每次使得一个人往左或往右移动一步。求最大距离。 应该让两个人分别往两边走。 点击查看代码 void solve() { int n, x, a, b; std::cin >> n
阅读全文
摘要:A. Broken Keyboard 题意:\(26\)个按键对\(26\)个字母,有些按键是坏的。好的按键按下后会出现一个字母,坏的会出现两个。现在给出一个输出序列。求哪些按键一定是好的。 好的按键需要满足,出现次数是奇数,或者有连续一段的长度是奇数。 点击查看代码 void solve() {
阅读全文
摘要:A. Prime Subtraction 题意:\(x\)一直减质数,能不能到\(y\)。 \(x - y > 1\)就一定可以,因为如果\(x - y\)是偶数,则一直减2,否则减3,然后一直减2。 点击查看代码 void solve() { i64 x, y; std::cin >> x >>
阅读全文
摘要:A. Permutation Warm-Up 题意:一个排列的值为\(\sum_{i=1}^{n} |p_i - i|\),求所有长度为\(n\)的排列有多少不同的值。 对于一个\(p_i = i\)的排列,我们可以通过不断交换两个位置的数把它变成任意的排列。发现每次交换两个数增加的值是偶数,那么值
阅读全文
摘要:A. 2048 Game 题意:\(n\)个数都是\(2\)的幂,求能不能取一部分使得和为\(2^{11}\)。 从小到大凑数。 点击查看代码 void solve() { int n; std::cin >> n; std::vector<int> cnt(30); for (int i = 0;
阅读全文
摘要:A. Creating a Character 题意:给你\(a, b, c\),把\(c\)分给\(a, b\),求\(a > b\)的方案数。 可以二分分给多少个给\(a\)。 点击查看代码 void solve() { int a, b, c; std::cin >> a >> b >> c;
阅读全文
摘要:A. There Are Two Types Of Burgers 题意:两个面包加牛肉得到牛肉汉堡,两个面包加鸡肉得到鸡肉汉堡。两个汉堡有价格,有\(b\)个面包,\(p\)牛肉,\(f\)鸡肉。求最大利润。 优先卖贵的。 点击查看代码 void solve() { int b, p, f, h,
阅读全文
摘要:A. Three Decks 题意:三个数\(a, b, c\),从\(c\)中拿一些数分给\(a, b\),能不能使得三个数相等。 首先把\(c\)变成\(b\),再把\(a\)变成\(b\),那么需要\(c - b > b - a\)。然后剩下\(c - b - (b - a)\),判断这个数能
阅读全文
摘要:A. You Are Given Two Binary Strings... 题意:给你两个二进制串\(x, y\),要求把\(y\)左移\(k\)位后和\(x\)相加然后翻转后的二进制串在字典序下最小,求最小的\(k\)。 为了让翻转后二进制字典序最小,应该让低位尽可能是零,那么应该人\(y\)的
阅读全文
摘要:A. while 点击查看代码 void solve() { std::string s; std::cin >> s; std::string t = "while"; int ans = 0; for (int i = 0; i < 5; ++ i) { ans += s[i] != t[i];
阅读全文
摘要:A. DIY Wooden Ladder 题意:\(n\)个数里选\(k + 2\)个数,使得最大的两个数都大于\(k\)。求最大的\(k\)。 显然最从大的数选更优。那么最大两个数就固定了,给\(a\)排序后,答案就是\(\min(a_{n-1} - 1, n - 2)\)。 点击查看代码 voi
阅读全文
摘要:A. Vadim's Collection 题意:一个10位数,要求重排使得\(i\in [1, 10], a_i >= 10 - i\)。且字典序最小。 把每个数字出现次数存下来,然后每一位找大于等于它的第一个还没用完的数。 点击查看代码 void solve() { std::string s;
阅读全文
摘要:A. Remove a Progression 题意:\([1, n]\)排成一行,每次删掉第\(i\)个数,求最后第\(x\)个数是谁。 模拟发现偶数都会留下。所以答案就是\(x\times 2\)。 点击查看代码 void solve() { int n, x; std::cin >> n >>
阅读全文
摘要:A. Dr. TC 题意:通过把\(01\)串每一位依次取反得到\(n\)个\(01\)串,求这些串里\(1\)的个数。 记\(cnt_0\)为串里\(0\)的个数,\(cnt_1\)为\(1\)的个数,那么翻转一个\(0\)使得\(1\)的个数加一,翻转一个\(1\)使得\(1\)的个数减一,那么
阅读全文
摘要:A. Stickers and Toys 题意:\(n\)个罐子,有\(s\)个贴纸和\(t\)个玩具在里面,一个罐子最多有一个贴纸和一个玩具。求至少开几个罐子才能或者至少一个贴纸和一个玩具。 只需要开\(n - s + 1\)个罐子就能有贴纸,开\(n - t + 1\)个就能有玩具。所以答案是这
阅读全文

浙公网安备 33010602011771号