[Codeforces #201] Tutorial】的更多相关文章

Link: 传送门 代码量很少的一套思维题 A: 试一试发现最后状态一定是所有$min,max$间$gcd$的倍数 直接判断数量的奇偶性即可 #include <bits/stdc++.h> using namespace std; #define X first #define Y second #define pb push_back typedef double db; typedef long long ll; typedef pair<int,int> P; int n,…
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…
Link: Codeoforces #188 传送门 A: 先全转为正数,后面就全是指数级增长了 #include <bits/stdc++.h> using namespace std; #define X first #define Y second typedef long long ll; typedef pair<int,int> P; ll x,y,m,res; int main() { cin>>x>>y>>m; ) ; while…