UVALive2678子序列

UVALive2678

http://122.207.68.93:9090/csuacmtrain/problem/viewProblem.action?id=453§

【题目描述】:n个正整数组成的序列。给定整数S,求长度最短的连续序列,使他们的和大于等于S。

【算法分析】:

【二分】:

全是正整数,保证取的连续序列长度越长,和越可能大于等于S,所以满足二分的单调递增的条件,而这里,我们要找的最优解是最小的长度,就是和刚刚好大于等于S的区间长度。

【区间和优化到O(N)】:

使用C[i]数组,做差求和。方法不细说。要求自己,以后遇到区间求和问题,自然就要想到这个。

【运筹分析】:

决策方案:所有区间段,sigm(n+(n-1).......+1) == O(n^2)注意n<=10^5

限制条件:累和大于等于S

最优评判标准:区间长度最小

【完整代码】:

 1 #include<iostream>
 2 
 3 #include<stdio.h>
 4 
 5 #include<string.h>
 6 
 7 #include<algorithm>
 8 
 9 #include<stdlib.h>
10 
11 #include<math.h>
12 
13 #include<queue>
14 
15 #include<vector>
16 
17 #include<map>
18 
19 #define MAXN 100000+5
20 
21 #define MAXM 20000+5
22 
23 #define oo 9556531
24 
25 #define eps 0.000001
26 
27 #define PI acos(-1.0)//这个精确度高一些
28 
29 #define REP1(i,an) for(int i=0;i<=(n);i++)
30 
31 #define REP2(i,n) for(int i=1;i<=(n);i++)
32 
33 using namespace std;
34 
35 //这道题不是dp,而是二分,一是因为dp本身会超时,二是连续的状态是单调递增的
36 
37 int A[MAXN];
38 
39 int C[MAXN];
40 
41 int n,s;
42 
43 bool isok(int l)
44 
45 {
46 
47     for(int i=l;i<=n;i++)
48 
49     if(C[i]-C[i-l]>=s) return true;//优化到O(n)
50 
51     return false;
52 
53 }
54 
55 int main()
56 
57 {
58 
59     while(cin>>n>>s)
60 
61     {
62 
63         C[0]=0;
64 
65         for(int i=1;i<=n;i++)
66 
67         {
68 
69             cin>>A[i];
70 
71             C[i]=C[i-1]+A[i];
72 
73         }
74 
75         int l=1,r=n+1;
76 
77         while(l<r)//边界条件,保证能够跳出循环,找不到极值也可,画状态图确定
78 
79         {
80 
81             int m=(l+r)/2;
82 
83             if (isok(m)) r=m;else l=m+1;//根据除2取左的特点,保证能取到极值点
84 
85         }
86 
87         if (isok(l)) cout<<l<<endl;else cout<<0<<endl;
88 
89     }
90 
91     return 0;
92 
93 }

 

 

【关键词】:二分,思维

转载于:https://www.cnblogs.com/little-w/p/3525273.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260890.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Jupyter notebook 使用过程中的一些小技巧总结

Jupyter notebook 小技巧 这是自己使用Jupyter notebook 的过程&#xff0c;遇到的一些问题&#xff0c;还有一些使用的小技巧&#xff0c;希望可以帮且大家。会不定时更新 code 转 markdown&#xff1a; 按键 M code 转 markdown&#xff1a; 按键 Y 换行&#xff1a;打完一…

IOS 文件读取4种方法 转字符串 和data

//第一种方法&#xff1a; NSFileManager实例方法读取数据NSArray* paths NSSearchPathForDirectoriesInDomains(NSDesktopDirectory, NSUserDomainMask, YES);NSString* thepath [paths lastObject];thepath [thepath stringByAppendingPathComponent:"fd_list.txt&qu…

csgo怎么控制电脑玩家_电脑远程控制怎么弄

本教程以“Win 10”系统为例进行演示。方法一&#xff1a;1/6在“此电脑”单击鼠标右键选择“属性”2/6在弹出窗口中点击“远程设置”3/6勾选“允许远程协助连接这台计算机”&#xff0c;然后点击应用并确定4/6在微软小娜搜索“mstsc”5/6打开“远程桌面连接”6/6输入对方的IP地…

HTML 5 的自定义 data-* 属性和jquery的data()方法的使用

HTML 5 的自定义 data-* 属性和jquery的data()方法的使用 人们总喜欢往HTML标签上添加自定义属性来存储和操作数据。但这样做的问题是&#xff0c;你不知道将来会不会有其它脚本把你的自定义属性给重置掉&#xff0c;此外&#xff0c;你这样做也会导致html语法上不符合Html规范…

java。接口和抽象类区别

接口和抽象类区别 a.抽象类里可以有非抽象方法 接口里只能有抽象方法 b.接口是抽象类的变体&#xff0c;再接口中所有方法都是抽象的转载于:https://www.cnblogs.com/zhaozhaozhang/p/5759714.html

MNIST 手写数字识别,我是如何做到886个可训练参数,识别率达到98.2%? (参数、模型压缩), Keras实现,模型优化

一 项目展示 下面可以看到验证集可以到了0.9823了&#xff0c;实际上&#xff0c;在下面的另外一个训练&#xff0c;可以得到0.9839&#xff0c;我保守的写了0.982 二 项目参数展示 我们先来看看LeNet 5 的结构与参数&#xff0c;参数有61&#xff0c;706个。 这个是我用…

javascript 计算两个坐标的距离 米_土方全面应用计算

各种土方量的计算方法汇总8.2.1 DTM法土方计算由DTM模型来计算土方量是根据实地测定的地面点坐标(X&#xff0c;Y&#xff0c;Z)和设计高程&#xff0c;通过生成三角网来计算每一个三棱锥的填挖方量&#xff0c;最后累计得到指定范围内填方和挖方的土方量&#xff0c;并绘出填…

VS2008 AJAX控件介绍

1 Accordion 2 AccordionPane 实现多面板&#xff0c;每次都只显示一个&#xff0c;其他收藏起来&#xff0c;可以设置显示隐藏的时间和渐变效果哦 3 AlwaysVisibleControlExtender 这个东西是将VerticalSide的值设置好后无论页面的滚动条滚动&#xff0c;这个目标控件一直都显…

py文件转exe时包含paramiko模块出错解决方法

问题描述&#xff1a;python代码中包含paramiko模块的远程登录ssh&#xff0c;在用pyInstaller转为exe时报错&#xff0c; 报错提示为“No handlers could be found for logger "paramiko.transport" 出错位置&#xff1a; ssh paramiko.SSHClient() ssh.set_missin…

unity 阳光插件_网络广告,阳光创信保驾护航

网络广告 就找阳光创信。网络营销的技术基础主要是以计算机网络技术为代表的信息技术。计算机网络是现代通信技术与计算机技术相结合的产物&#xff0c;它把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络&#xff0c;从而使众多的计算机…

第2章 Python 数字图像处理(DIP) --数字图像基础1 - 视觉感知要素 - 亮度适应与辨别

数字图像基础1视觉感知要素亮度适应与辨别import sys import numpy as np import cv2 import matplotlib import matplotlib.pyplot as plt import PIL from PIL import Imageprint(f"Python version: {sys.version}") print(f"Numpy version: {np.__version__…

快速幂与快速乘法

List 快速幂与快速乘法 ListKnowledge快速幂 原理code快速乘法 原理codeKnowledge 快速幂 原理 a^b%p 采用二进制得思想&#xff0c;将b转化为二进制数。 b c02^0c12^1c22^2c32^3……cn2^n a^b a^(a12^0)a^(c12^1)……a^(cn2^n) 所以我们可以在log(b)的时间内求出a^(2^0)…

Java程序设计 图形用户界面 小巫版简易计算器

/** 作者&#xff1a;wwj 时间&#xff1a;2012/4/13 功能&#xff1a;实现一个计算器应用程序实验要求&#xff1a;编写一个模拟计算器的应用程序&#xff0c;使用面板和网格布局&#xff0c; 添加一个文本框&#xff0c;10个数字按钮&#xff08;0~9&#xff09;&#xff0c;…

phpcms文件结构

主要目录部分 /admin 管理后台目录 -- /skin/ 后台样式 -- /templates/ 后台样式模板/api api接口 /corpandresize 在线图片处理 -- /css/ csss样式 -- /images/ 图片 -- /js/ 引用js文件 -- /tmp/ 临时文件/data 数据缓存…

第1章 Python 数字图像处理(DIP) --绪论

Python 数字图像处理 关于本专栏 此专栏为 Python 数字图像处理&#xff08;DIP&#xff09;&#xff08;冈萨雷斯版&#xff09;&#xff0c;专栏里文章的内容都是来自书里&#xff0c;全部手打&#xff0c;非OCR&#xff0c;因为很多公式&#xff0c;都是用LaTex输入&#xf…

phython在file同时写入两个_轻松支撑百万级数据点写入 京东智联云时序数据库HoraeDB架构解密...

本文将通过对时序数据的基本概念、应用场景以及京东智联云时序数据库HoraeDB的介绍&#xff0c;为大家揭秘HoraeDB的核心技术架构和解决方案。首先我们来了解下时序数据库的基本概念。时序数据库全称时间序列数据库&#xff0c;主要用于处理带时间标签的数据&#xff0c;带时间…

飞雪迎春

转载于:https://www.cnblogs.com/ysx4221/p/3537810.html

高可用集群技术之corosync应用详解(一)

Corosync概述:Corosync是集群管理套件的一部分&#xff0c;它在传递信息的时候可以通过一个简单的配置文件来定义信息传递的方式和协议等。它是一个新兴的软件&#xff0c;2008年推出&#xff0c;但其实它并不是一个真正意义上的新软件&#xff0c;在2002年的时候有一个项目Ope…

一天总结

这几天忙着弄毕业设计和论文&#xff0c;有好几天都没总结了&#xff01;学习进度也慢了下来&#xff01;接下几天把毕业答辩弄好后&#xff01;把精力放在数据库和编程熟练度上&#xff01;还有很多要学习的多看书多敲代码&#xff01;最重要的是要多思考&#xff0c;要有自己…

电脑dns_win10系统dns错误如何解决「系统天地」

最近有位win10系统用户在使用电脑的过程当中&#xff0c;碰到了dns错误的情况&#xff0c;用户不知道如何解决&#xff0c;为此非常苦恼&#xff0c;那么win10系统dns错误如何解决呢?下面为大家分享win10电脑dns错误的解决方法。第一步&#xff1a;使用 ipconfig /flushdns 命…