- 博客(17)
- 收藏
- 关注
原创 浮点数二分
790. 数的三次方根 给定一个浮点数 nn,求它的三次方根。 输入格式 共一行,包含一个浮点数 nn。 输出格式 共一行,包含一个浮点数,表示问题的解。 注意,结果保留 66 位小数。 数据范围 −10000≤n≤10000 输入样例: 1000.00 输出样例: 10.000000 难度:简单 时/空限制:1s / 64MB 总通过数:42945 总尝试数:82633 来源:模板题,AcWing ...
2022-02-05 12:30:10
7215
原创 整数二分模板
重点:所求之包含在mid的那一侧,即”=“的去向。 模板一: //x为所求值 while(l<r) { int mid=r+l>>1; if(check(x)) r=mid; else l=mid+1; } 模板二: while(l<r) { int mid=l+r+1>>1; if(check(x)) l=mid; else r=mid-1; } double在printf函数中是默认要输出6位小数,而在cout中是保留有效数(并且最多是六位有效
2022-02-04 16:31:47
264
原创 第K个数:快速选择算法
在快排的基础上,比较k与一次排序后左区间的个数,确定q[k-1]即第K个数所在的区间,然后只递归该区间即可。若在右区间,则是第k - L 个数(L是左区间个数 #include<iostream> using namespace std; const int N = 100010; int q[N]; int quick_check(int l, int r, int k) { if (l >= r) return q[r];// 不能返回q[k] int i = l
2022-02-02 16:27:36
690
原创 区间合并题
步骤: 1.按区间左端点排序 2.比较当前区间的右端点与下一区间的左端点 3.包含关系,有交集,没交集; 给定nn个区间[li,ri][li,ri],要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。 输出合并完成后的区间个数。 例如:[1,3][1,3]和[2,6][2,6]可以合并为一个区间[1,6][1,6]。 输入格式 第一行包含整数nn。 接下来nn行,每行包含两个整数ll和rr。 输出格式 共一行,包含一个整数,表示合并区间完成后的...
2022-01-29 15:37:25
1167
原创 高精加减法
如果不进行类型转换(-‘0’),则位数不同时会进行字符数字的ASCII码加减 #include<iostream> #include <vector> #include<string> using namespace std; bool cmp (vector<int>&A,vector<int>&B)//判断>= { if(A.size()!=B.size()) return A.size()>B.s.
2022-01-18 21:31:53
218
原创 双层循环: 超时
#include <iostream> #include <cstring> #include <algorithm> using namespace std; int main() { int k, n=6, q=3, m = 0; int a[6] = { 1,2,2,3,3,4 }; while (q--) { cin >> k; for (int i = 0; i < n; i.
2022-01-08 15:05:45
501
原创 利用归并计算逆序对的数量
逆序对的定义如下:对于数列的第 ii 个和第 jj 个元素,如果满足 i<ji<j 且 a[i]>a[j]a[i]>a[j],则其为一个逆序对;否则不是。 暴力枚举法:缺点,,对于大量数据运行时间长,双层循环时间复杂度是O(n^2) #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N=1000010; int
2022-01-07 19:09:06
586
原创 归并排序解析
#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N=1000010; int q[N],tmp[N]; void merge_sort(int q[],int l,int r) { if(l>=r)return ; int mid=l+r>>1,i=l,j=mid+1; merge_sort(q,...
2022-01-07 16:36:12
603
原创 快速排序模板
void quick_sort(int q[],int l ,int r) { //边界处理 if(l==r)return; while(i<j) { int i=l-1,j=r+1,x=q[r+l>>1]//>>相当于向下取整,x亦可取q[l],q[r] do i++; while (q[i]>x); do j--;while(q[j]<x); if(i<j)swap(q[i],q[j]); } quick_sort(q,l,j);//
2022-01-06 19:41:14
198
原创 【无标题】
根据客户代码定义分数类并实现两个分数相加,使得程序输出结果如要求(注意相加结果是化简形式)。 输入输出示例
2021-11-25 22:47:08
226
原创 组合类调用内嵌类对象的私有成员的方法在“《”处
#include<iostream> using namespace std; class Point { public: Point(double newx, double newy) { x = newx; y = newy; } Point(const Point& p) { x = p.x; y = p.y; } 《《《《《《《《《《《 《《《 double getx() ...
2021-11-24 21:12:24
289
原创 【无标题】结构体冒泡排序在“////”处
#include<iostream> using namespace std; #include<string> struct Hero { string name; int age; string sex; }; //结构体数组 struct Hero heroes[5] = { {"张飞",20,"男"}, {"关羽",22,"男"}, {"刘备",23,"男"}, {"赵云",21,"男"}, {"貂蝉",19,"...
2021-11-23 00:26:14
343
原创 有点奇怪的数组元素倒置算法
#include <iostream> using namespace std; int main() { int n = 0; char s[1000]; char s1[1000]; cin >> s1; for (int i = 0; s1[i] != 0; i++) n++; for (int i = 0; s1[i] != 0; i++, n--) s[n-1] = s1[i]; for (...
2021-11-06 15:55:14
152
原创 汉诺塔问题
// 输入输出示例 输入为一个整数后面跟三个单字符。 整数为盘子的数目,后三个字符表示三个杆子的名字,分别是左边,右边,中间杆。 输出每一步移动盘子的记录及总移动次数。 每次移动的记录为例如 a->3->b 的形式,即把编号为3的盘子从a杆移至b杆。 #include<iostream&.
2021-11-04 01:23:13
319
原创 取值范围6
//我的答案50%正确 #include <iostream> using namespace std; int main() { int num = 0; cin >> num; if (num >= 200001) { cout << "accepted" << endl; } else if (num ==200000) { cout << "呱...
2021-10-11 19:56:12
126
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1