2022-01-09周总结

一、AcWing-838:堆排序

1.1 问题描述

img

1.2 问题解决

#include <iostream>
using namespace std;

const int N = 1e5+10;

int n, m;
int q[N];

void heap_adjust(int q[], int n, int i)
{
    for (int j = i*2 + 1; j <= n-1; j = j*2 + 1)
    {
        if(j < n-1 && q[j] < q[j+1]) j++;
        if(q[i] > q[j]) break;
        swap(q[i], q[j]);
        i = j;
    }
}

void heap_sort(int q[], int n)
{
    // 构造堆
    for (int i = n/2 - 1; i >= 0; i--) heap_adjust(q, n, i);
    
    // 排序
    for (int i = n-1; i >= 0; i--)
    {
        swap(q[0], q[i]);
        heap_adjust(q, i, 0);
    }
}

int main()
{
    int n, m;
    scanf("%d%d", &n, &m);
    
    for (int i = 0; i < n; i ++ ) scanf("%d", &q[i]);
    
    heap_sort(q, n);
    
    for (int i = 0; i < m; i++) cout << q[i] << ' ';
    putchar('\n');
    
    return 0;
}

二、AcWing-795:前缀和

2.1 问题描述

img

2.2 问题解决

#include <iostream>
using namespace std;

const int N = 1e5+10;

int n, m;
int a[N], s[N];

int main()
{
    scanf("%d%d", &n, &m);
    
    for (int i = 1; i <= n; i ++ ) scanf("%d", &a[i]);
    
    for (int i = 1; i <= n; i ++ ) s[i] = s[i-1] + a[i];
        
    while (m -- )
    {
        int l, r;
        scanf("%d%d", &l, &r);
        
        printf("%d\n", s[r] - s[l-1]);
    }
    
    return 0;
}

三、AcWing-797:差分

3.1 问题描述

img

3.2 问题解决

#include <iostream>
using namespace std;

const int N = 1e5 + 10;
int n, m;
int a[N],b[N];

void insert(int l, int r, int x)
{
    b[l] += x;
    b[r+1] -= x; 
}

int main()
{
    scanf("%d%d", &n, &m);
    
    for (int i = 1; i <= n; i ++ ) scanf("%d", &a[i]);
    
    // 构造差分数组b[]
    for (int i = 1; i <= n; i ++ ) insert(i, i, a[i]);
    
    while (m -- )
    {
        int l, r, c;
        scanf("%d%d%d", &l, &r, &c);
        
        insert(l, r, c);
    }
    
    for (int i = 1; i <= n; i ++ ) b[i] += b[i-1];
    
    for (int i = 1; i <= n; i ++ ) printf("%d ", b[i]);
    putchar('\n');
        
    return 0;
}

四、AcWing-796:子矩阵的和

4.1 问题描述

img

4.2 问题解决

#include <iostream>
using namespace std;

const int N = 1010;
int n, m, q;
int a[N][N], s[N][N];

int main()
{
    scanf("%d%d%d", &n, &m, &q);
    
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= m; j++) scanf("%d", &a[i][j]);
        
    // 构造前缀和
    for (int i = 1; i <= n; i ++ )
        for (int j = 1; j <= m; 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;
        scanf("%d%d%d%d", &x1, &y1, &x2, &y2);
        
        printf("%d\n", s[x2][y2] - s[x1-1][y2] - s[x2][y1-1] + s[x1-1][y1-1]);        
    }
    
    
    return 0;
}

五 AcWing-798:差分矩阵

5.1 问题描述

img

5.2 问题解决

#include <iostream>
using namespace std;

const int N = 1010;
int n, m, q;
int a[N][N], b[N][N];

void modify(int x1, int y1, int x2, int y2, int c)
{
    b[x1][y1] += c;
    b[x1][y2+1] -= c;
    b[x2+1][y1] -= c;
    b[x2+1][y2+1] += c;
}

int main()
{
    scanf("%d%d%d", &n, &m, &q);
    
    for(int i = 1; i <= n ; i++)
        for(int j = 1; j <= m; j++) scanf("%d", &a[i][j]);
    
    // 构造差分矩阵
    for(int i = 1; i <= n ; i++)
        for(int j = 1; j <= m; j++) modify(i, j, i, j, a[i][j]);
    
    while(q--)
    {
        int x1, y1, x2, y2, c;
        scanf("%d%d%d%d%d", &x1, &y1, &x2, &y2, &c);
        
        modify(x1, y1, x2, y2, c);
    }
    
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= m; j++)
            b[i][j] += b[i-1][j] + b[i][j-1] - b[i-1][j-1];
    
    for(int i = 1; i <= n; i++)
    {
        for(int j = 1; j <= m; j++) printf("%d ", b[i][j]);
        putchar('\n');
    } 
        
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现甘特图,需要使用Echarts的Gantt模块。首先,需要引入Echarts和Gantt模块的JS文件,在HTML中建立一个容器用于渲染图表。然后,需要定义一个包含任务信息的JSON数据,例如funListT07。最后,使用Echarts的API绘制甘特图,可以参考以下代码: ``` // 引入Echarts和Gantt模块 <script src="https://cdn.jsdelivr.net/npm/echarts/dist/echarts.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/dataTool.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/bmap.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/echarts/dist/extension/gantt.min.js"></script> // 在HTML中建立容器 <div id="container" style="height:600px;"></div> // 定义任务信息的JSON数据 var data = [ { id: 1, name: "零部件01", start: "2022-01-01", end: "2022-01-05", }, { id: 2, name: "零部件02", start: "2022-01-03", end: "2022-01-08", }, { id: 3, name: "零部件03", start: "2022-01-06", end: "2022-01-10", }, { id: 4, name: "零部件04", start: "2022-01-02", end: "2022-01-09", }, { id: 5, name: "零部件05", start: "2022-01-05", end: "2022-01-10", }, { id: 6, name: "零部件06", start: "2022-01-06", end: "2022-01-12", }, { id: 7, name: "零部件07", start: "2022-01-03", end: "2022-01-10", }, ]; // 绘制甘特图 var chart = echarts.init(document.getElementById('container')); var option = { tooltip: {}, legend: { data: ['任务'], textStyle: { fontSize: 14, }, }, grid: { top: '10%', bottom: '10%', }, xAxis: { type: 'time', splitLine: { show: false, }, }, yAxis: { type: 'category', data: data.map(function (item) { return item.name; }), splitLine: { show: false, }, }, series: [ { name: '任务', type: 'gantt', data: data.map(function (item) { return { name: item.name, value: [ item.start, item.end, item.id, ], }; }), label: { position: 'inside', formatter: function (params) { return params.name; }, }, }, ], }; chart.setOption(option); ``` 以上代码就可以绘制出funListT07的甘特图了。需要注意的是,数据中的日期格式必须为"yyyy-MM-dd",并且时间轴的类型必须为"time"。同时,还可以根据需要进行其他的样式和配置调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值