当前位置: 首页 > news >正文

2024/2/4 备战蓝桥杯 5-1 前缀和

目录

求和

0求和 - 蓝桥云课 (lanqiao.cn)

可获得的最小取值

0可获得的最小取值 - 蓝桥云课 (lanqiao.cn)

领地选择

P2004 领地选择 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)


求和

0求和 - 蓝桥云课 (lanqiao.cn)

思路:先对公式进行合并同类相,然后用前缀和

完整代码:

#include <bits/stdc++.h>
#define int long long
const int N = 2e6 + 10;
int a[N], sum[N];
int ans;
signed main() {int n;std::cin >> n;for (int i = 1; i <= n; i++) {std::cin >> a[i];sum[i] = a[i] + sum[i - 1];}for (int i = 1; i <= n; i++) {ans += a[i] * (sum[n] - sum[i]);}std::cout << ans;return 0;
}

可获得的最小取值

0可获得的最小取值 - 蓝桥云课 (lanqiao.cn)

思路:

第一个情况是取数组前面两个数,第二个情况是取数组末尾的一个元素,如果循环k次一一比较的话,那么{1,1,1,1,1,1,3},若k=3,最小值就是6,这个是贪心的思想,可是最小值应该是5(3+1+1)。

如果第一个情况做 p 次的话,第二个情况就做 k-p 次

此时的总和为

所以遍历一遍p的值 

完整代码:

#include <bits/stdc++.h>
#define int long long
const int N = 2e5+10;
int a[N],s[N];
signed main()
{int n,k;std::cin >> n >> k;for(int i = 1;i <= n;i ++){std::cin >> a[i];}std::sort(a+1,a+1+n);
//    for(int i = 1;i <= n;i ++)
//    {
//        std::cout<<a[i]<<" ";
//    }
//    std::cout<<"\n";for(int i = 1;i <= n;i ++){s[i]=s[i-1]+a[i];}
//    for(int i = 1;i <= n;i ++)
//    {
//        std::cout<<s[i]<<" ";
//    }
//    std::cout<<"\n";int ans=1e18;for(int i = 1;i <= k;i ++){ans=std::min(ans,s[n]-s[n-(k-i)]+s[2*i]);}std::cout<<ans;return 0;
}

领地选择

P2004 领地选择 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路:

这道题用暴力会超时,先用一个数组记录二维前缀和,再来遍历

二位前缀和

从原点开始:s[i,j]=s[i,j-1]+s[i-1,j]-s[i-1,j-1]+a[i,j]

(x1,y1),(x2,y2)中的所有数之和为

s[x2,y2]+s[x1-1,y1-1]-s[x1-1,y2]-s[x2,y1-1]

完整代码:

#include <bits/stdc++.h>
#define int long long
const int N = 1e3+10;
int a[N][N];
int sum[N][N];
signed main()
{int n,m,c;std::cin >> n >> m >> c;for(int i = 1;i <= n;i ++){for(int j = 1;j <= m;j ++){std::cin >> a[i][j];sum[i][j]=a[i][j]+sum[i][j-1]+sum[i-1][j]-sum[i-1][j-1];}}int maxx=-1e18,maxy=-1e18,ans=-1e18;for(int i = 1;i <= n-c+1;i ++){for(int j = 1;j <= m-c+1;j ++){int x1=i,y1=j,x2=i+c-1,y2=j+c-1;int num=sum[x2][y2]+sum[x1-1][y1-1]-sum[x1-1][y2]-sum[x2][y1-1];if(num>ans){ans=num;maxx=x1;maxy=y1;}}}std::cout<<maxx<<" "<<maxy;return 0;
}

相关文章:

  • mac检查CPU温度和风扇速度软件:Macs Fan Control Pro 1.5.17中文版
  • 决策树之scikit-learn
  • qt学习:arm摄像头+c调用v412框架驱动+qt调用v412框架驱动 显示摄像头画面
  • containerd中文翻译系列(五)客户端选项
  • 单片机学习笔记---DS1302时钟
  • 安全之护网(HVV)、红蓝对抗
  • 数据结构——单向链表和双向链表的实现(C语言版)
  • 图像处理常用算法—6个算子 !!
  • uniapp踩坑之项目:简易版不同角色显示不一样的tabbar和页面
  • 【JS逆向一】逆向某站的 加密参数算法--仅供学习参考
  • STM32内部Flash
  • 跟着cherno手搓游戏引擎【23】项目维护、2D引擎之前的一些准备
  • 西工大计算机学院复试问题整理
  • 第6章 智能租房——前期准备
  • 第59讲订单数据下拉实现
  • 实现windows 窗体的自己画,网上摘抄的,学习了
  • [译] 怎样写一个基础的编译器
  • 《Java编程思想》读书笔记-对象导论
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Flannel解读
  • JS函数式编程 数组部分风格 ES6版
  • JS专题之继承
  • maya建模与骨骼动画快速实现人工鱼
  • mysql 5.6 原生Online DDL解析
  • Rancher-k8s加速安装文档
  • Rancher如何对接Ceph-RBD块存储
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Webpack 4 学习01(基础配置)
  • webpack项目中使用grunt监听文件变动自动打包编译
  • 仿天猫超市收藏抛物线动画工具库
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 漫谈开发设计中的一些“原则”及“设计哲学”
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 浅谈sql中的in与not in,exists与not exists的区别
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • ​油烟净化器电源安全,保障健康餐饮生活
  • (C语言)逆序输出字符串
  • (附源码)ssm跨平台教学系统 毕业设计 280843
  • (附源码)计算机毕业设计SSM教师教学质量评价系统
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (七)Knockout 创建自定义绑定
  • *p++,*(p++),*++p,(*p)++区别?
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • :“Failed to access IIS metabase”解决方法
  • [23] GaussianAvatars: Photorealistic Head Avatars with Rigged 3D Gaussians
  • [BeginCTF]真龙之力
  • [BZOJ1089][SCOI2003]严格n元树(递推+高精度)
  • [C#] 如何调用Python脚本程序
  • [CentOs7]搭建ftp服务器(2)——添加用户
  • [exgcd] Jzoj P1158 荒岛野人
  • [github配置] 远程访问仓库以及问题解决
  • [JavaWeb]—前端篇
  • [leetcode] 3Sum
  • [NOIP2015] 运输计划