思维题
Nightmare丶
登高必自卑,行远必自迩
展开
-
牛客小白月赛29 B 二进制
题解: 因为二进制中每一位都是相互独立的,所以我们用全为0的二进制数和全为1的二进制数模拟过程,得到每一位最后变化成了0还是1即可。 如果初始为0,最后为1,并且初始为1,最后为0,很显然一个异或就能解决。 如果初始为0,最后为1,并且初始为1,最后为1,只需要一个或运算即可。 如果初始为0,最后为0,并且初始为1,最后为0,只需要一个与运算与上一个0即可 如果初始为0,最后为0,并且初始为1,最后为1,不用操作。 代码: /* * @Author : Nightmare */ #include <原创 2020-11-14 20:37:54 · 268 阅读 · 0 评论 -
Codeforces - 620E. New Year Tree
题目链接 题解: 颜色数比较少,考虑用二进制表示颜色,对于重复颜色的处理,直接按位与当成一种颜色就行了,询问就是答案的二进制中有多少个1就有多少中颜色了。 代码: /* * @Author : Nightmare */ #include <bits/stdc++.h> using namespace std; #define ll long long #define ull unsigned long long #define PII pair<int,int> #define原创 2020-11-12 14:45:21 · 125 阅读 · 0 评论 -
Codeforces - 1428E. Carrots for Rabbits
题目链接 题解: 考虑将一个胡萝卜分成K段,那么这个胡萝卜肯定是尽可能的均分才能贡献最小 因为一个胡萝卜切的次数越多,x / cnt下降的越少,因此胡萝卜切的次数越多,它的平方和减少的越少 那么可以用优先队列维护平方和下降的值,每次减去贡献平方和减少最多的胡萝卜即可 代码: /* * @Author : Nightmare */ #include <bits/stdc++.h> using namespace std; #define int long long #define ull un原创 2020-11-12 13:46:00 · 320 阅读 · 0 评论 -
Codeforces Good Bye 2019 G. Subset with Zero Sum
题意: 给出n个整数a,a2,a3...ana_,a_2,a_3...a_na,a2,a3...an,1≤i≤n1≤i≤n1≤i≤n,i−n≤i−1i-n≤i-1i−n≤i−1,现在需要你找出任意一个子序列使这个子序列的和为0 题解: 首先注意到i−n≤ai≤i−1i-n≤a_i≤i-1i−n≤ai≤i−1,那么1≤i−ai≤n1≤i-a_i≤n1≤i−ai≤n 考虑构造一个点数为n...原创 2019-12-30 17:57:46 · 290 阅读 · 4 评论 -
Codeforces Good Bye 2019 E. Divide Points
题意: 给出n个点,将这些点分成两个集合,使得没有任何属于同集合的两点的欧几里得距离等于不同集合两点的欧几里得距离,集合非空,输出任意一个集合的个数和该集合所有点的下标 题解: 用cf的题解水一篇题解应该没人发现吧( 我们将点按x,y的奇偶分成4组,A00A_{00}A00表示x,y均为偶数…A01,A10,A11A_{01},A_{10},A{11}A01,A10,A11同理。 首先如果...原创 2019-12-30 16:09:44 · 426 阅读 · 1 评论