- 博客(17)
- 收藏
- 关注
原创 浮点数二分
790. 数的三次方根 给定一个浮点数 nn,求它的三次方根。输入格式共一行,包含一个浮点数 nn。输出格式共一行,包含一个浮点数,表示问题的解。注意,结果保留 66 位小数。数据范围−10000≤n≤10000输入样例:1000.00输出样例:10.000000难度:简单 时/空限制:1s / 64MB 总通过数:42945 总尝试数:82633 来源:模板题,AcWing ...
2022-02-05 12:30:10
7147
原创 整数二分模板
重点:所求之包含在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
178
原创 第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
603
原创 区间合并题
步骤: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
1084
原创 高精加减法
如果不进行类型转换(-‘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
164
原创 双层循环: 超时
#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
396
原创 利用归并计算逆序对的数量
逆序对的定义如下:对于数列的第 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
499
原创 归并排序解析
#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
530
原创 快速排序模板
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
150
原创 【无标题】
根据客户代码定义分数类并实现两个分数相加,使得程序输出结果如要求(注意相加结果是化简形式)。输入输出示例
2021-11-25 22:47:08
160
原创 组合类调用内嵌类对象的私有成员的方法在“《”处
#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
225
原创 【无标题】结构体冒泡排序在“////”处
#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
299
原创 有点奇怪的数组元素倒置算法
#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
96
原创 汉诺塔问题
//输入输出示例输入为一个整数后面跟三个单字符。整数为盘子的数目,后三个字符表示三个杆子的名字,分别是左边,右边,中间杆。输出每一步移动盘子的记录及总移动次数。每次移动的记录为例如 a->3->b 的形式,即把编号为3的盘子从a杆移至b杆。#include<iostream&.
2021-11-04 01:23:13
231
原创 取值范围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
77
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人