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

重庆网站建设公司的网站西安做商铺的网站

重庆网站建设公司的网站,西安做商铺的网站,广州门户网站建设公司,校园跑腿小程序搭建做题思路 数列分段 Section IIhttps://www.luogu.com.cn/problem/P1182正如题目所说,我们需要得到一个最小的最大段的值,可能有人将注意力放在分段上,事实上,我们更多的应该关注结果。这是一道二分答案的题,你可以先确…

做题思路

数列分段 Section IIhttps://www.luogu.com.cn/problem/P1182正如题目所说,我们需要得到一个最小的最大段的值,可能有人将注意力放在分段上,事实上,我们更多的应该关注结果。这是一道二分答案的题,你可以先确认某次分段后的可能的最大段的值q,然后尽量往最大段的值方向去分段,这样,在保证了分段后的最大段的值小于等于q,再看所分的段数,如果大于限定的段数,说明不可能最大段的值是q。因为在保证所分段的值不超过q的情况下,无法减少段数使其达到要求,这时应该往大于q的范围上去找。如果小于等于限定的段数,说明可能还有更小的q。因为段数小于要求,可以将某段拆成多段来增大段数,这时可能有更小的q符合要求。而这时为了更快的找到q的值,我们可以使用二分查找的方式去找。对于n个数,最小的q就是每个一段分出n段时,n个数中的最大值,最大的q就是只分出1段时,n个数的和。

#include<stdio.h>
#include<stdlib.h>
int check(int max,int *data,int num,int limit_count){int current_sum=0,count=0;for(int i=0;i<num;i++){if(data[i]>max)return 0;if(current_sum+data[i]>max){count++;current_sum=data[i];}else current_sum+=data[i];}count++;return count<=limit_count;
}
int main() {int N, M, max = 0, sum = 0;scanf("%d %d", &N, &M);int *data = (int*)malloc(sizeof(int) * N);for (int i = 0; i < N; i++) {scanf("%d", &data[i]);sum += data[i];if (data[i] > max)max = data[i];}int left=max,right=sum;while(left<right){int mid=(left+right)/2;if(check(mid,data,N,M))right=mid;else left=mid+1;}printf("%d",left);free(data);return 0;
}

书的复制https://www.luogu.com.cn/problem/P1281 这道题的思路和上面的题一模一样,但要注意输出时的条件:行的起始编号应该从小到大排列,如果有多解,则尽可能让前面的人少抄写。

#include<stdio.h>
#include<stdlib.h>
int check(int max,int *data,int num,int limit_count){int current_sum=0,count=0;for(int i=0;i<num;i++){if(data[i]>max)return 0;if(current_sum+data[i]>max){count++;current_sum=data[i];}else current_sum+=data[i];}count++;return count<=limit_count;
}
int main() {int N, M, max = 0, sum = 0;scanf("%d %d", &N, &M);int *data = (int*)malloc(sizeof(int) * N);for (int i = 0; i < N; i++) {scanf("%d", &data[i]);sum += data[i];if (data[i] > max)max = data[i];}int left=max,right=sum;while(left<right){int mid=(left+right)/2;if(check(mid,data,N,M))right=mid;else left=mid+1;}int result[M][2],current_sum=0,count=0;result[0][1]=N,result[M-1][0]=1;for(int i=N;i>0;i--){if(current_sum+data[i-1]>left){result[count++][0]=i+1;result[count][1]=i;current_sum=data[i-1];}else current_sum+=data[i-1];}for(int i=M-1;i>=0;i--){printf("%d %d\n",result[i][0],result[i][1]);}free(data);return 0;
}
http://www.dtcms.com/a/439299.html

相关文章:

  • 嵌入式开发学习日志33——stm32之PWM舵机简单项目
  • 桂林旅游网站建设品牌营销的四大策略
  • 为什么Java线程栈容易溢出?
  • 怎么做福彩网站营销系统
  • Java 后端与 AI 融合:技术路径、实战案例与未来趋势
  • 一键建站公司wordpress 404 插件
  • 大连网站设计培训班网站建设公司推荐互赢网络
  • 网站一般建什么百度公司官网招聘
  • 如何使用unity制作游戏
  • Mosquitto 安全架构深度解析:security.c 与 security_default.c 的作用与协同机制
  • 国外打开网站会不会乱码龙岗做商城网站建设
  • css选择器继承性
  • 做投资的网站高端网站建设成都
  • 丹阳网站怎么做seo主机屋 WordPress 问题 多
  • 中文名字英文名字日本名字txt合集
  • 搜狗seo快速排名公司山东东营网络seo
  • 如何做百度的网站手工制作花朵
  • 【2025最新】ArcGIS for JS 实现地图卷帘效果
  • 网站域名备案密码新网站 被百度收录
  • 做网站开发没有人带贵阳市住房城乡建设局八大员网站
  • Vue3+TypeScript开发:从ProTable封装到Echarts联动
  • (二分、思维)洛谷 P4090 USACO17DEC Greedy Gift Takers P 题解
  • 业务层的抽取和业务层方法的实现详解
  • 【开题答辩全过程】以 “人和小区”便民快递平台为例,包含答辩的问题和答案
  • 找网络公司建网站每年收维护费手机网站会员中心模板
  • 网站建设公司谁管网络营销的发展趋势和前景
  • 网站建设公司包括哪些溧阳建设集团网站
  • wordpress访客统计插件网络优化怎么自己做网站
  • 小迪web自动笔记50
  • 网站模板交易seo 优化公司