码迷,mamicode.com
首页 > 其他好文 > 详细

Codeforces Round #577 (Div. 2) (A、B、C)

时间:2019-08-11 00:27:40      阅读:87      评论:0      收藏:0      [点我收藏+]

标签:code   max   sig   sum   return   char   splay   函数   bae   

A、Important Exam

简单贪心即可

技术图片
 1 #include<iostream>
 2 #include<sstream>
 3 #include<fstream>
 4 #include<algorithm>
 5 #include<cstring>
 6 #include<iomanip>
 7 #include<cstdlib>
 8 #include<cctype>
 9 #include<vector>
10 #include<string>
11 #include<cmath>
12 #include<ctime>
13 #include<stack>
14 #include<queue>
15 #include<map>
16 #include<set>
17 #define mem(a,b) memset(a,b,sizeof(a))
18 #define random(a,b) (rand()%(b-a+1)+a)
19 #define ll long long
20 #define ull unsigned long long
21 #define e 2.71828182
22 #define Pi acos(-1.0)
23 #define ls(rt) (rt<<1)
24 #define rs(rt) (rt<<1|1)
25 #define lowbit(x) (x&(-x))
26 using namespace std;
27 const int MAXM=1e3+5;
28 int read()
29 {
30     int s=1,x=0;
31     char ch=getchar();
32     while(!isdigit(ch)) {if(ch==-) s=-1;ch=getchar();}
33     while(isdigit(ch)) {x=10*x+ch-0;ch=getchar();}
34     return x*s;
35 }
36 int num[MAXM][6];
37 int maxmum[MAXM];
38 int main()
39 {
40     int n=read(),m=read();
41     int t;
42     string answer;
43     for(int i=1;i<=n;++i)
44     {
45         cin>>answer;
46         for(int j=0;j<m;++j)
47         {
48             t=answer[j]-A+1;
49             num[j][t]++;
50             if(num[j][t]>maxmum[j]) maxmum[j]=num[j][t];
51         }
52     }
53     int ans=0;
54     for(int i=0;i<m;++i)
55     {
56         t=read();
57         ans+=t*maxmum[i];
58     }
59     cout<<ans<<endl;
60 }
View Code

 

B、 Zero Array

思维

1、总和需为偶数

2、最大值不大于其余n-1个数的和

技术图片
 1 #include<iostream>
 2 #include<sstream>
 3 #include<fstream>
 4 #include<algorithm>
 5 #include<cstring>
 6 #include<iomanip>
 7 #include<cstdlib>
 8 #include<cctype>
 9 #include<vector>
10 #include<string>
11 #include<cmath>
12 #include<ctime>
13 #include<stack>
14 #include<queue>
15 #include<map>
16 #include<set>
17 #define mem(a,b) memset(a,b,sizeof(a))
18 #define random(a,b) (rand()%(b-a+1)+a)
19 #define ll long long
20 #define ull unsigned long long
21 #define e 2.71828182
22 #define Pi acos(-1.0)
23 #define ls(rt) (rt<<1)
24 #define rs(rt) (rt<<1|1)
25 #define lowbit(x) (x&(-x))
26 using namespace std;
27 const int MAXN=1e5+5;
28 ll a[MAXN],sum[MAXN],n;
29 ll read()
30 {
31     ll s=1,x=0;
32     char ch=getchar();
33     while(!isdigit(ch)) {if(ch==-) s=-1;ch=getchar();}
34     while(isdigit(ch)) {x=10*x+ch-0;ch=getchar();}
35     return x*s;
36 }
37 int main()
38 {
39     n=read();
40     for(int i=1;i<=n;++i) 
41     a[i]=read();
42     sort(a+1,a+n+1);
43     ll sum=0;
44     for(int i=1;i<n;++i)
45     sum+=a[i];
46     if(sum>=a[n]&&(sum+a[n])%2==0)
47     cout<<"YES\n";
48     else cout<<"NO\n";
49     return 0;
50 }
View Code

 

C、 Maximum Median

也有点贪心的味道

技术图片
 1 #include<iostream>
 2 #include<sstream>
 3 #include<fstream>
 4 #include<algorithm>
 5 #include<cstring>
 6 #include<iomanip>
 7 #include<cstdlib>
 8 #include<cctype>
 9 #include<vector>
10 #include<string>
11 #include<cmath>
12 #include<ctime>
13 #include<stack>
14 #include<queue>
15 #include<map>
16 #include<set>
17 #define mem(a,b) memset(a,b,sizeof(a))
18 #define random(a,b) (rand()%(b-a+1)+a)
19 #define ll long long
20 #define ull unsigned long long
21 #define e 2.71828182
22 #define Pi acos(-1.0)
23 #define ls(rt) (rt<<1)
24 #define rs(rt) (rt<<1|1)
25 #define lowbit(x) (x&(-x))
26 using namespace std;
27 const int MAXN=2e5+5;
28 ll a[MAXN];
29 ll read()
30 {
31     int s=1,x=0;
32     char ch=getchar();
33     while(!isdigit(ch)) {if(ch==-) s=-1;ch=getchar();}
34     while(isdigit(ch)) {x=10*x+ch-0;ch=getchar();}
35     return x*s;
36 }
37 int main()
38 {
39     int n=read(),k=read();
40     for(int i=1;i<=n;++i) a[i]=read();
41     sort(a+1,a+n+1);
42     int mid=n/2+1;
43     
44     int ans=a[mid];
45     
46     for(int i=mid+1;i<=n;++i)//将a[mid]到a[i-1]补刀a[i] 
47     {
48         ll need=(a[i]-a[i-1])*(i-mid);
49         //cout<<need<<endl;
50         if(k>=need)
51         {
52             k-=need;
53             ans=a[i];
54         }
55         else 
56         {
57             ans+=k/(i-mid);
58             k=0;
59             break;
60         }     
61     }
62     ans+=k/mid;
63     cout<<ans<<endl;
64 }
View Code

有看到别人用二分写。如果最优值类问题实在想不出可以试试二分,主要是写出判断函数。

二分:

技术图片
 1 #include<iostream>
 2 #include<sstream>
 3 #include<fstream>
 4 #include<algorithm>
 5 #include<cstring>
 6 #include<iomanip>
 7 #include<cstdlib>
 8 #include<cctype>
 9 #include<vector>
10 #include<string>
11 #include<cmath>
12 #include<ctime>
13 #include<stack>
14 #include<queue>
15 #include<map>
16 #include<set>
17 #define mem(a,b) memset(a,b,sizeof(a))
18 #define random(a,b) (rand()%(b-a+1)+a)
19 #define ll long long
20 #define ull unsigned long long
21 #define e 2.71828182
22 #define Pi acos(-1.0)
23 #define ls(rt) (rt<<1)
24 #define rs(rt) (rt<<1|1)
25 #define lowbit(x) (x&(-x))
26 using namespace std;
27 const int MAXN=2e5+5;
28 ll a[MAXN],n,m;
29 ll read()
30 {
31     int s=1,x=0;
32     char ch=getchar();
33     while(!isdigit(ch)) {if(ch==-) s=-1;ch=getchar();}
34     while(isdigit(ch)) {x=10*x+ch-0;ch=getchar();}
35     return x*s;
36 }
37 bool C(ll k)//a[mid]为k是否ok
38 {
39     if(a[n/2+1]>=k) return true;
40     ll need=0;
41     for(int i=n/2+1;i<=n;++i)
42     {
43         if(a[i]<k)
44         {
45             need+=k-a[i];
46             if(need>m) return false;
47         }
48     }
49     return true;
50 } 
51 int main()
52 {
53     n=read(),m=read();
54     for(int i=1;i<=n;++i) a[i]=read();
55     if(n==1) 
56     {
57         cout<<a[1]+m<<endl;
58         return 0;
59     }
60     sort(a+1,a+n+1);
61     ll l=-1,r=a[n/2+1]+m+233;
62     while(l+1!=r)
63     {
64         ll mid=(l+r)>>1;
65         if(C(mid)) l=mid;
66         else r=mid;
67     }
68     cout<<l<<endl;
69     return 0;
70 }
View Code

 

Codeforces Round #577 (Div. 2) (A、B、C)

标签:code   max   sig   sum   return   char   splay   函数   bae   

原文地址:https://www.cnblogs.com/wangzhebufangqi/p/11333408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!