![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
1z1
奋斗ing
展开
-
AcWing:数星星
题目入口题目跳转题目描述天空中有一些星星,这些星星都在不同的位置,每个星星有个坐标。如果一个星星的左下方(包含正左和正下)有 k 颗星星,就说这颗星星是 k 级的。例如,上图中星星 5 是 3 级的(1,2,4 在它左下),星星 2,4 是 1 级的。例图中有 1 个 0 级,2 个 1 级,1 个 2 级,1 个 3 级的星星。给定星星的位置,输出各级星星的数目。换句话说,给定 N 个点,定义每个点的等级是在该点左下方(含正左、正下)的点的数目,试统计每个等级有多少个点。输入格式第一原创 2022-03-31 17:56:32 · 114 阅读 · 0 评论 -
AcWing 1236:递增三元组
题目入口题目跳转题目描述给定三个整数数组A=[A1,A2,…AN], B=[B1,B2,…BN], C=[C1,C2,…CN],请你统计有多少个三元组 (i,j,k) 满足:1.1≤i,j,k≤N2.Ai<Bj<Ck输入格式第一行包含一个整数 N。第二行包含 N 个整数 A1,A2,…AN。第三行包含 N 个整数 B1,B2,…BN。第四行包含 N 个整数 C1,C2,…CN。输出格式一个整数表示答案。数据范围1≤N≤1e50≤Ai,Bi,Ci≤1原创 2022-03-28 09:26:14 · 398 阅读 · 0 评论 -
AcWing:连号区间数
题目描述小明这些天一直在思考这样一个奇怪而有趣的问题:在 1∼N 的某个排列中有多少个连号区间呢?这里所说的连号区间的定义是:如果区间 [L,R] 里的所有元素(即此排列的第 L 个到第 R 个元素)递增排序后能得到一个长度为 R−L+1 的“连续”数列,则称这个区间连号区间。当 N 很小的时候,小明可以很快地算出答案,但是当 N 变大的时候,问题就不是那么简单了,现在小明需要你的帮助。输入格式第一行是一个正整数 N,表示排列的规模。第二行是 N 个不同的数字 Pi,表示这 N 个数字原创 2022-03-27 16:36:05 · 96 阅读 · 0 评论 -
Acwing:费解的开关
题目描述你玩过“拉灯”游戏吗?25 盏灯排成一个 5×5 的方形。每一个灯都有一个开关,游戏者可以改变它的状态。每一步,游戏者可以改变某一个灯的状态。游戏者改变一个灯的状态会产生连锁反应:和这个灯上下左右相邻的灯也要相应地改变其状态。我们用数字 1 表示一盏开着的灯,用数字 0 表示关着的灯。下面这种状态1011101101101111000011011在改变了最左上角的灯的状态后将变成:0111111101101111000011011再改变它正中间的灯后状态将变成原创 2022-03-18 23:13:25 · 2851 阅读 · 0 评论 -
求素数新方法:素数筛法
问题描述求1到n(n > 1e5)之间的素数分析如果使用普通判断素数的方法时间复杂度是O(n√n),很明显是不能满足的,会出现超时,所以应该使用新的方法。时间复杂度O(nloglogn)代码#include <iostream>using namespace std;//表长const int maxn = 101;//表示是否被筛到 初始全部都没有被筛到bool p[maxn] = {false};//存放素数int prime[maxn];原创 2022-03-12 23:49:26 · 205 阅读 · 0 评论 -
最大公约数
题目描述输入两个正整数,求其最大公约数输入测试数据有多组,每组输入两个正整数输出对于每组输入,请输出其最大公约数样例输入49 14样例输出7代码#include<iostream>using namespace std;int gcd(int a,int b){ if(b == 0) return a; else return gcd(b, a % b);}int a, b;int ma原创 2022-03-12 20:47:42 · 145 阅读 · 1 评论 -
快速幂问题
问题背景给定三个正整数a,b,m(a < 1e9,b < 1e6,1 < m < 1e9),求a的b次方取余m代码#include<iostream>using namespace std;typedef long long ll;ll binaryPow(ll a,ll b,ll m){ //b以二进制的形式表示 int ans = 1; while(b > 0) { if(b & 1) { ans = ans原创 2022-03-11 14:13:42 · 248 阅读 · 0 评论 -
判断两条直线是否相交
代码#include<iostream>using namespace std;struct line{ int xa; int ya; int xb; int yb; int getMax_x() { return xa > xb ? xa : xb; } int getMin_x() { return xa < xb ? xb : xa; } in原创 2022-03-11 12:45:30 · 320 阅读 · 0 评论 -
二分查找
二分整数查找的两种模版第一种public void search(int[] arr,int target){ int l = 0;int r = arr.length-1; while(l < r){ int mid = l +r >> 1; if(check(mid)) r = mid; else l = mid+1; }}第二种public void search(int[] arr,int target){ int l = 0;int r =原创 2021-03-08 09:06:34 · 81 阅读 · 0 评论 -
不一样的回文数
不一样的回文数1. 第一眼看上去脑中要想到一定会有一个回文数判定的函数,还会有一个两数相加的函数,要注意两数相加注意进位2. 两个数相加不一定是十进制的还有可能是二进制的等等,比如二进制相加从后面一个一个的加,所以在声明是声明一个字符串变量保存数,然后在将字符串转换为整型数组进行相加计算3. 还要注意在字符串与整型数组相互转换时要考虑处理16进制数的情况,所以判断该字符是否是字母,如果是将A-F转化成10~15下面开始写代码#include<iostream>#include &原创 2020-05-15 16:53:16 · 698 阅读 · 0 评论