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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Codeforces Round #143 (Div. 2) C

發布時間:2023/12/10 编程问答 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Codeforces Round #143 (Div. 2) C 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

http://codeforces.com/contest/231/problem/C

昨天的cf。比賽的時候其實有點思路的,但是因為B搞錯方向了沒敢寫C。剛剛寫了下,AC了。用的思路還真是昨天晚上的。囧。昨天晚上看的時候有一個地方不知道怎么轉換,就是怎么快速求出i-->i+ans需要加多少個1.剛剛化了下。得到了:cnt=sum[i-1+m]-sum[i]-(i-1)*(a[i-1+m]-a[i])。sum[i]表示1-->i需要加多少個1使得1-->i都變為a[i]。自己寫下就能得到上面那個式子。昨天就是這里沒深入。

然后剛剛做的時候想到了 sum[]定義為__int64 覺得a數組應該不需要定義為__int64的??墒清e了。改了后AC了。。不知道為啥。。。

1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <queue> 5 #include <algorithm> 6 #include <cmath> 7 #include <stack> 8 9 using namespace std; 10 11 #define MAXN 100010 12 __int64 a[MAXN]; 13 __int64 sum[MAXN];//前i個數加多少個數使得前i個數變為a[i] 14 int n,k; 15 16 int main() 17 { 18 while(scanf("%d%d",&n,&k) != EOF) 19 { 20 for(int i=1;i<=n;i++) 21 scanf("%I64d",&a[i]); 22 sort(a+1,a+n+1); 23 sum[0]=0; 24 sum[1]=0; 25 for(int i=2;i<=n;i++) 26 sum[i]=sum[i-1]+(i-1)*(a[i]-a[i-1]); 27 int ans; 28 int num; 29 int left=1,right=n; 30 while(left<=right) 31 { 32 int m=(left+right)>>1; 33 bool flag=0; 34 int i=1; 35 for(i=1;i-1+m<=n;i++) 36 if(sum[i-1+m]-sum[i]-(i-1)*(a[i-1+m]-a[i])<=k) 37 { 38 flag=1; 39 break; 40 } 41 if(flag) 42 { 43 left=m+1; 44 ans=m; 45 num=a[i-1+m]; 46 } 47 else 48 right=m-1; 49 } 50 printf("%d %d\n",ans,num); 51 } 52 return 0; 53 }

轉載于:https://www.cnblogs.com/Missa/archive/2012/10/08/2715765.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Codeforces Round #143 (Div. 2) C的全部內容,希望文章能夠幫你解決所遇到的問題。

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