日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

P1982 小朋友的数字

發布時間:2024/9/5 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 P1982 小朋友的数字 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目描述

有 n 個小朋友排成一列。每個小朋友手上都有一個數字,這個數字可正可負。規定每個

小朋友的特征值等于排在他前面(包括他本人)的小朋友中連續若干個(最少有一個)小朋

友手上的數字之和的最大值。

作為這些小朋友的老師,你需要給每個小朋友一個分數,分數是這樣規定的:第一個小

朋友的分數是他的特征值,其它小朋友的分數為排在他前面的所有小朋友中(不包括他本人),

小朋友分數加上其特征值的最大值。

請計算所有小朋友分數的最大值,輸出時保持最大值的符號,將其絕對值對 p 取模后

輸出。

輸入輸出格式

輸入格式:

?

輸入文件為 number.in。

第一行包含兩個正整數 n、p,之間用一個空格隔開。

第二行包含 n 個數,每兩個整數之間用一個空格隔開,表示每個小朋友手上的數字。

?

輸出格式:

?

輸出文件名為 number.out。

輸出只有一行,包含一個整數,表示最大分數對 p 取模的結果。

?

輸入輸出樣例

輸入樣例#1:
5 997 1 2 3 4 5 輸出樣例#1:
21 輸入樣例#2:
5 7 -1 -1 -1 -1 -1 輸出樣例#2:
-1

說明

Case 1:

小朋友的特征值分別為 1、3、6、10、15,分數分別為 1、2、5、11、21,最大值 21

對 997 的模是 21。

Case 2:

小朋友的特征值分別為-1、-1、-1、-1、-1,分數分別為-1、-2、-2、-2、-2,最大值

-1 對 7 的模為-1,輸出-1。

對于 50%的數據,1 ≤ n ≤ 1,000,1 ≤ p ≤ 1,000所有數字的絕對值不超過 1000;

對于 100%的數據,1 ≤ n ≤ 1,000,000,1 ≤ p ≤ 10^9,其他數字的絕對值均不超過 10^9

?

?

我們用dptz表示特征的最大值。

用dpfs表示分數的最大值

?

1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<cmath> 5 #include<queue> 6 #include<algorithm> 7 #define lli long long int 8 using namespace std; 9 const lli MAXN=1000001; 10 void read(lli &n) 11 { 12 char c='+';lli x=0,flag=1; 13 while(c<'0'||c>'9'){c=getchar();if(c=='-')flag=-1;} 14 while(c>='0'&&c<='9'){x=x*10+c-48;c=getchar();} 15 n=x*flag; 16 } 17 lli n,mod; 18 lli dptz[MAXN]; 19 lli dpfs[MAXN]; 20 lli a[MAXN]; 21 lli now=0;// 當前最大字段和 22 lli ans=-1270000; 23 int main() 24 { 25 read(n);read(mod); 26 for(lli i=1;i<=n;i++) 27 read(a[i]); 28 dptz[1]=a[1]; 29 for(lli i=1;i<=n;i++) 30 { 31 now+=a[i]; 32 dptz[i]=now; 33 if(now<0) 34 now=0; 35 } 36 for(lli i=2;i<=n;i++) 37 dptz[i]=max(dptz[i],dptz[i-1]); 38 dpfs[1]=dptz[1]; 39 dpfs[2]=dpfs[1]+dptz[1]; 40 bool flag=0; 41 for(lli i=3;i<=n;i++) 42 { 43 dpfs[i]=dpfs[i-1]; 44 if(dptz[i-1]>0) 45 dpfs[i]+=dptz[i-1]; 46 if(dpfs[i]>dpfs[1])flag=1; 47 if(flag==1) 48 dpfs[i]=dpfs[i]%mod; 49 } 50 if(flag==1) 51 printf("%lld",dpfs[n]); 52 else 53 printf("%lld",dpfs[1]); 54 return 0; 55 }

?

轉載于:https://www.cnblogs.com/zwfymqz/p/7125046.html

總結

以上是生活随笔為你收集整理的P1982 小朋友的数字的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。