最小和 求一類數字區間問題

2021-06-16 04:42:41 字數 865 閱讀 1358

先看題目:

1.n個數排成一排,你可以任意選擇連續的若干個數,算出它們的和。問該如何選擇才能使得和的絕對值最小。

如:n=8時,8

個數如下:

1    2    3    4    5    6    7    8

-20   90  -30   -20   80  -70  -60   125

如果我們選擇1到4

這4個數,和為

20,還可以選擇6到

8這3個數,和為-5,

|-5|=5,

該方案獲得的和的絕對值最小。

輸入格式:

第一行輸入n

,表示數字的個數。接下來

n行描述這

n個數字。

輸出格式:

第一行輸出乙個整數,表示最小絕對值的和,第二行包含乙個整數表示形成該絕對值和最長序列的長度。

1<= n<=100000或者

2. n個數圍成一圈,要求從中選擇若干個連續的數(注意每個數最多只能選一次)加起來,問能形成的最大的和。

n<=100000

這樣的題目,一般可以用字首和來做。

以第一題為例子

我們設s[i]為前i個數字之和.那麼s[i]-s[j] (i>j) 就為j+1到i的數字之和。這樣我們就可以任意求出一段區間的和是多少。

在利用題目的條件,看看能不能利用字首和的性質。

還是對於第一題。我們把得到的字首和進行排序,那麼可以知道min就是答案。注意排序前加入乙個s[0]=0,因為s[i]-s[j] (i>j) 表示j+1到i的數字之和

因為字首和排序後。以i為一段的區間的最小絕對值一定是 min 這裡的n是i在排序以後的位置

用快排nlongn就能排好,加上o(n)的掃瞄。

一類求和問題 類歐幾里得

自 今天要來介紹的是用類歐幾里得演算法來解決一類求和問題。給出 n,a,b,c 對於每組資料,分別輸出 f,h,g 的值,答案對 998244353 取模。n leq 10 9 由於這三個函式是互相依賴的,所以我們將其放在乙個函式裡求解 分別算會產生大量的重複計算 include include u...

一類棋盤互不攻擊問題

一類棋盤互不攻擊問題 農夫三拳 seu drizzlecrj gmail.com 最近在sgu上做了一些棋盤上互不攻擊的題目,稍稍的總結一下 1.sgu 220 little bishops 以及 sgu 221 big bishops 問題 求n n的棋盤上放置k個互不攻擊的象的個數。解法 將棋盤...

Integer一類的比較問題

總體主要分為兩個方面 比較的是值 一 基本資料型別與引用資料型別進行比較時,引用資料型別會進行拆箱 自動拆裝箱需要在jdk1.5以上 然後與基本資料型別進行值的比較 舉例 int i 12 integer j new integer 12 i j 返回的是true 二 引用資料型別與基本資料型別進行...