建设网站教程论坛,学网页设计有什么网站,个人flash网站,许昌网络推广哪家好http://codeforces.com/contest/231/problem/C 昨天的cf。比赛的时候其实有点思路的#xff0c;但是因为B搞错方向了没敢写C。刚刚写了下#xff0c;AC了。用的思路还真是昨天晚上的。囧。昨天晚上看的时候有一个地方不知道怎么转换#xff0c;就是怎么快速求出i--ians需…http://codeforces.com/contest/231/problem/C 昨天的cf。比赛的时候其实有点思路的但是因为B搞错方向了没敢写C。刚刚写了下AC了。用的思路还真是昨天晚上的。囧。昨天晚上看的时候有一个地方不知道怎么转换就是怎么快速求出i--ians需要加多少个1.刚刚化了下。得到了cntsum[i-1m]-sum[i]-(i-1)*(a[i-1m]-a[i])。sum[i]表示1--i需要加多少个1使得1--i都变为a[i]。自己写下就能得到上面那个式子。昨天就是这里没深入。 然后刚刚做的时候想到了 sum[]定义为__int64 觉得a数组应该不需要定义为__int64的。可是错了。改了后AC了。。不知道为啥。。。 1 #include iostream2 #include cstdio3 #include cstring4 #include queue5 #include algorithm6 #include cmath7 #include stack8 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 i1;in;i)
21 scanf(%I64d,a[i]);
22 sort(a1,an1);
23 sum[0]0;
24 sum[1]0;
25 for(int i2;in;i)
26 sum[i]sum[i-1](i-1)*(a[i]-a[i-1]);
27 int ans;
28 int num;
29 int left1,rightn;
30 while(leftright)
31 {
32 int m(leftright)1;
33 bool flag0;
34 int i1;
35 for(i1;i-1mn;i)
36 if(sum[i-1m]-sum[i]-(i-1)*(a[i-1m]-a[i])k)
37 {
38 flag1;
39 break;
40 }
41 if(flag)
42 {
43 leftm1;
44 ansm;
45 numa[i-1m];
46 }
47 else
48 rightm-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