【acwing算法基础课笔记】01-基础算法-习题课

  1. 786 求第k个数 - 快速选择
  2. 788 逆序对的数量 - 归并排序
  3. 790 数的三次方根 - 浮点数二分
  4. 796 子矩阵的和 - 前缀和
  5. 798 差分矩阵 - 差分
  6. 799 无重复字符的最长字串

给定一个浮点数 n,求它的三次方根。

790 数的三次方根 - 浮点数二分

输入格式

共一行,包含一个浮点数 n。

输出格式

共一行,包含一个浮点数,表示问题的解。

注意,结果保留 6 位小数。

数据范围

−10000≤n≤10000

输入样例:

1000.00

输出样例:

10.000000

#include<bits/stdc++.h>
using namespace std;
 
int main(){
    double x;cin>>x;
    double l=-10000,r=10000;
    while(r-l>1e-8){//-7的话可能四舍五入不对,比有效数多两位保险
        double mid=(r+l)/2;
        if(mid*mid*mid>=x)r=mid;
        else l=mid;
    }
    printf("%.6f",r);
}

796 子矩阵的和 - 前缀和

题目描述

输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。
对于每个询问输出子矩阵中所有数的和。

输入格式

第一行包含三个整数 n,m,q。
接下来 n 行,每行包含 m 个整数,表示整数矩阵。
接下来 q 行,每行包含四个整数 x1,y1,x2,y2,表示一组询问。

输出格式

共 q 行,每行输出一个询问的结果。

数据范围

1≤n,m≤1000,
1≤q≤200000,
1≤x1≤x2≤n,
1≤y1≤y2≤m,
-1000≤矩阵内元素的值≤1000

输入样例:

3 4 3
1 7 2 4
3 6 2 8
2 1 2 3
1 1 2 2
2 1 3 4
1 3 3 4

输出样例:

17
27
21

解 - 前缀和

#include <iostream>

using namespace std;

const int N = 1010; // 设置矩阵最大大小

int a[N][N], s[N][N]; // a:原始矩阵,s:a的前缀和矩阵

int main()
{
   
   
    int n, m, q;
    cin >> n >> m >> q;
    for (int i = 1; i <= n; ++i) // 从下标1开始,避免边界问题
        for (int j = 1; j <= n; ++j)
        {
   
   
            cin >> a[i][j];
            // 前缀和计算
            s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + a[i][j];
        }
    // 查询
    while (q--)
    {
   
   
        int x1, y1, x2, y2; // 查询的子矩阵左上右下坐标
        cin >> x1 >> y1 >>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值