AtCoder Beginner Contest 255 A—E
A 题目描述 给定一个的$ \ 2 \times 2 \ $矩阵$ \ A \ $,输出其中的值$ \ A_{R,C} \ $。 题目分析 时间复杂度:$O(1)$。 输入就行嘞。 $Code$ 123456789101112131415int n, m;int a[10][10]; int main(){ cin >> n >> m; for(int i = 1; i <= 2; i ++ ) for(int j = 1; j <= 2; j ++ ) cin >> a[i][j]; cout << a[n][m] << endl; return 0;} $ \ $ $ \ $ B 题目描述 有$ \ N \ $个人在位置为$(X_i,Y_i)$的位置上。 其中有$ \ K \ $个人是特殊人~~(被选中的孩子)~~,能够发射光芒。 当一个人位于$ \ (x,y) \ $坐标发射半径为$ \ R \ $的光芒时候,能够照亮以$ \ (x,y) \ $为圆心,半径为$ \ R...
AtCoder Beginner Contest 252 A—F
本题解思路来自这两位大佬 cup-pyy 、 GoodCoder666 A 题目描述 输出一个数字对应的ASCII码。 题目分析 时间复杂度:$O(1)$。 $Code$ 1234567int main(){ int n; cin >> n; cout << (char)n << endl; return 0;} $ \ $ $ \ $ B 题目描述 高桥有$ \ N \ $个食物,第 $ \ i \ $个食物有个美味程度$ \ A_i\ $。 在这些食物中,他有$ \ K \ $个不喜欢的食物,下标分别为$i = 1,2,…,K$。 高桥会选择美味程度最大的品尝,他是否会吃到他不喜欢的食物呢? 如果吃到了输出Yes,否则输出No。 题目分析 时间复杂度:$O(n)$。 我们用$ \ a \ $数组记录每个食物的美味程度,用$ \ b \ $布尔数组记录高桥不喜欢的食物。 用$ \ maxv \ $记录美味程度最大的值。 遍历$ \ a \ $数组,如果找到 maxv == a[i] &&...
AtCoder Beginner Contest 254 A—D
A 题目描述 给定一个至少为100的数字,输出它的十位和个位。 题目分析 时间复杂度:$O(1)$。 枚举即可。 $Code$ 1234567891011int main(){ string s; cin >> s; int len = s.size(); cout << s[len - 2] << s[len - 1] << endl; return 0;} $ \ $ $ \ $ B 题目描述 找到$n$行如下定义的数组: 第$ \ i \ $行的数组长度为$ \ i \ $。 对于第$ \ i \ $行$ \ j \ $列的元素需要满足 如下定义: $a_{i,j} \ = \ 1。如果j \ = \ 1 \ 或者 \ j \ = \ i$ $a_{i,j} \ = \ a_{i - 1, j - 1} + a_{i - 1, j}$ 题目分析 时间复杂度:$O(n^2)$。 由于数据范围很小$1 \le N \le...
AtCoder Beginner Contest 253 A—E
本题解思路来自于 spoonjunxi A 题目描述 给定三个数$a,b,c$,判断$b$是否在$[a,c]$之间,如果是输出Yes,否则输出No。 题目分析 直接判断即可。 $Code$ 12345int a, b, c;cin >> a >> b >> c;if(b >= a && b <= c || b <= a && b >= c) puts("Yes");else puts("No"); $ \ $ $ \ $ B 题目描述 给定一个矩形,求出矩形中两个o之间的距离。 题目分析 曼哈顿距离公式。 $Code$ 12345678910111213141516171819202122232425int n, m;int a[4];int idx;int main(){ cin >> n >> m; char c; for(int i = 1; i <= n; i ++ ) for(int j...
不定积分-换元法-分部积分
换元法 换元法最重要的作用就是"打开局面"。在做积分题时,只需我们选择恰当的换元,就可以将复杂的积分变得非常简洁,尤其是在处理有根式的积分时,常常会使用换元法。 (1) 整体换元 被积函数中出现"$\sqrt{一次函数},\sqrt{\frac{一次函数}{一次函数}},\sqrt{e^{ax} + b},\frac{e^{ax} + b}{e^{ax} - b}$"可以直接将整个根号令为$t$,达到去掉根号的效果! (当然,该方法虽然一定可行,但不一定是最快的方法,所以也需要具体问题具体分析) 例1 $\int\sqrt{\frac{x}{1 + x}}dx$ [解]: $$令\sqrt{\frac{x}{1 + x}} = t \Rightarrow I = \int td\frac{1}{1 - t^2}$$ $$分部积分 \Rightarrow \frac{t}{1 - t^2} - \int\frac{1}{1 - t^2}dt$$ $$= \ \frac{t}{1 - t^2} + \int\frac{1}{t^2 -...
不定积分--三角函数的积分
套路二 三角有理函数的积分 引言 以$R(u,v)$表示由$u,v$及常数经过有限次的四则运算得到的二次函数。而$R(\sin{x}, \cos{x})$则称为三角有理函数,比如$y = \frac{\sin{x}}{\cos^2{x}} \ \ \ y = \frac{1}{1 + \cos{x}} \ \ \ y = \frac{1}{(\sin{x} + \cos{x})^2}$这些都属于三角有理函数。 而一切的三角有理函数,都可以用过换元$\tan{\frac{x}{2}} = t(万能公式)$化为有理函数,而有理函数的积分,在套路一中已经解决过了,所以,“从理论上来说”,一切的三角有理函数的积分,其实也已经解决了。 但是!万能的方法,不一定是最好的方法。很多三角有理函数的积分,如果盲目的使用万能公式,$\tan{\frac{x}{2}} = t$,则计算量会特别大,所以我们需要具体问题具体分析,找到每一个题目的特殊解法! (一) 万能公式换元法,令$\tan{\frac{x}{2}} = t$ 对于$\int R(\sin{x},...
不定积分--有理函数的积分
套路一 有理函数的积分 ($\int \frac{多项式}{多项式}dx)$ (一)有理函数积分的通项方法——裂项$ \ $+$ \ $待定系数 $ \ \ $有理函数从宏观上可分为真分式(分母为最高次项)和假分式(分子为最高次项),而任意一个假分式都可以通过多项式除法变成多项式与真分式之和。由于多项式的积分是简单的,所以解决有理函数函数的积分。本质上就变成了解决有理真分式的积分。而对于真分式的积分,我们有如下固定套路—— 将该真分式的分母进行因式分解(一直分解到无法再分解为止) 然后进行裂项,裂项的原则如下—— ①只需分母中含有$(x \ - \ a)^{k}$,则裂项后的式子中一定含有$\frac{A_1}{x \ - \ a} \ + \ \frac{A_2}{(x \ - \ a)^2} \ + \ … \ + \frac{A_k}{(x \ - \ a)^{k}}$ ②只需要分母中含有$(x^2 \ + \ px \ + \ q)^k$(注:因为已经分解到"不能再分解"了,所以这里的$p^2 \ - 4q \ < \...
常用库函数
常用库函数 声明 都存在#include <algorithm>这个库中 reverse翻转 翻转一个vector: 1reverse(a.begin(), a.end()); 翻转一个数组,元素存放在下标1 ~ n: 1reverse(a + 1, a + n + 1); unique去重 返回去重(只去掉相邻的相同元素)之后的为迭代器(或指针),仍然为前闭后开,即这个迭代器是去重之后末尾元素的下一个位置。该函数常用于离散化,利用迭代器(或指针)的减法,可计算出去重后的元素个数。 去重一个vector 123456// a: 5 5 4 1 2 2 3int m = unique(a.begin(), a.end()) - a.begin();cout << m << endl;// m = 5for(int t : a) cout << t << " ";// a: 5 4 1 2 3 2 3 去重一个数组,元素存放在下标1 ~ n: 1234567int a[8] = {10, 5,...
浅谈位运算
位运算 C++ 几种常用位运算简介 按位与 a & b (AND) 法则:两者相同位都为$1$,则结果中改为为$1$;否则结果中改位为$0$ 1234例: 12 & 6 = 4 12: 1 1 0 0 6: 0 1 1 0 4: 0 1 0 0 按位或 a | b (OR) 法则:两者相同位中有一个为$1$,则结果中该位为$1$;否则结果中该位为$0$ 1234例: 12 & 6 = 14 12: 1 1 0 0 6: 0 1 1 0 14: 1 1 1 0 按位异或 a ^ b (XOR) 法则:两者相同位的值若不同,则结果中该位为$1$;否则结果中该位为$0$ 1234例: 12 & 6 = 10 12: 1 1 0 0 6: 0 1 1 0 4: 1 0 1 0 按位取反~a (NOT) 法则:该书中$0$的位置变为$1$,$1$的位置变为$0$ 1234例: 12: 1 1 0 0 ~12: 0 0 1 1 按位左移 a <<...
浅谈STL
vector 声明 12345#include <vector> // 头文件vector<int> a; // 相当于一个长度动态变化的int数组vector<int> b[233]; // 相当于第一维长233,第二位长度动态变化的int数组struct rec{…};vector<rec> c; // 自定义的结构体类型也可以保存在vector中 size/empty size函数返回vector的实际长度(也就是包含的元素个数),empty函数返回一个bool类型,表明vector是否为空。二者的时间复杂度都是$O(1)$。 所有的STL容器都支持这两个方法,含义也相同,后续我们就不在重复给出了。 clear clear函数把vector清空。 迭代器 迭代器就好像STL容器的"指针",可以用星号*操作符解除引用。 一个保存int的vector的迭代器声明方法为: 1vector<int>::iterator...