Codeforces #480 Tutorial】的更多相关文章

Problem A,B,C: 简单的模拟,注意A中p mod q时对q=0特殊处理(注意范围) Problem D: Brief Intro: 给定长度为N的数组A,将A中所有连续子序列分成最少的组,使得每组任意一对数的积均为完全平方数 求最终分成组数为K的子序列个数,K属于[1,N] Algorithm: 能推出的性质:若P,Q两数积为完全平方数,则任意一个质因子的次幂的奇偶性必然相同 那么想判断P,Q是否满足条件,只要保留每个质因子的次幂为0或1,再判断P,Q是否相同即可 下面只要考虑如何O…
Link: Codeforces #172 传送门 A: 一眼看上去分两类就可以了 1.每个矩形只有两条边相交,重合的形状为菱形 2.每个矩形四条边都有相交 对于情况1答案为$h*h/sin(a)$ 对于情况2可以列出一个二元一次方程组,手动解一下就好了 不过计算几何确实容易写挂啊…… 有几个注意点: 1.对于情况1$h$指的是较短的边,不符合时要交换$w,h$ 以后处理长方形时还是要注意,不能只看样例啊 2.在判断情况1,2的临界点时用$sin$来判断,因为此时$a$已经全转为锐角了 #inc…
Link: Codeforces #514 传送门 很简单的一场比赛打崩了也是菜得令人无话可说…… D: 一眼二分,发现对于固定的半径和点,能包含该点的圆的圆心一定在一个区间内,求出区间判断即可 此题一个重要性质就是圆与$x$轴相切,画出圆心所在直线后就能想到上述贪心了 #include <bits/stdc++.h> using namespace std; #define X first #define Y second #define pb push_back typedef doubl…
Link: Codeforces #210 传送门 A: 贪心,对每个值都取最大值,不会有其他解使答案变优 #include <bits/stdc++.h> using namespace std; #define X first #define Y second typedef long long ll; typedef pair<int,int> P; typedef double db; ,INF=<<; struct data{int op,l,r,x;}dat…
Link: Codeforces #196 传送门 A: 枚举 #include <bits/stdc++.h> using namespace std; #define X first #define Y second typedef long long ll; typedef pair<int,int> P; ; <<; int main() { scanf("%d%d",&n,&m); ;i<=m;i++) scanf(&…
Link: Codeforces #174 传送门 A: 求原根的个数,有一条性质是原根个数为$\phi(\phi(n))$,多了一个不会证的性质 如果要确定哪些是原根的话还是要枚举,不过对于每个数不用枚举$p$次了 由于$\delta_p(x) | \phi(x)$,只要对欧拉函数值的约数枚举即可 不过此题好像直接$O(p^2)$枚举就行了…… #include <bits/stdc++.h> using namespace std; #define X first #define Y se…
Link: Codeforces #190 传送门 A: 明显答案为$n+m-1$且能构造出来 #include <bits/stdc++.h> using namespace std; #define X first #define Y second typedef long long ll; typedef double db; typedef pair<int,int> P; int n,m; int main() { scanf("%d%d",&…
Link: Codeforces #211 传送门 一套非常简单的题目,但很多细节都是错了一次才能发现啊…… 还是不能养成OJ依赖症,交之前先多想想corner case!!! A: 模拟,要特判0啊 #include <bits/stdc++.h> using namespace std; #define X first #define Y second typedef long long ll; typedef double db; typedef pair<int,int>…
Link: Codeforces #192 传送门 前两天由于食物中毒现在还要每天挂一天的水 只好晚上回来随便找套题做做找找感觉了o(╯□╰)o A: 看到直接大力模拟了 但有一个更简便的方法,复杂度为$O(被禁止的格子数)$ 如果将每个黑格子上下左右四条线都染上色 可以发现一个格子最终无法被“净化”当且仅当其被左右/上下来向都染过色,所以将最终无法净化的格子合并是一个矩形 这样最终答案为:黑格子出现的行的个数*黑格子出现的列的个数 此时复杂度就变成与黑格子个数相关了 #include <bit…
题意: 就是有一个用来堆放货物的板,承重力为S.现在有N件货物,每件货物有到达的时间,运走的时间,以及重量,承重,存放盈利.如果这件货物能再运达时间存放,并在指定时间取走的话,就能获得相应的盈利值.货物都是逐个往上叠的,每个箱子上面的总重量不能大于箱子的承重.总的质量不能大于板的承重,货物上面还有货物的话是不能被取走的.现在求最大的盈利值. 代码: 第一感觉就是区间dp 网上还有一种粗看没看懂就不想看了.. 首先观察出来的性质就是区间只有包含与不相交两种情况 比较简单粗暴的是f[i][j][k]…