Codeforces Round #493 (Div. 2) 【A,B,C】

 简单思维题

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 #define int long long
 4 #define inf 0x3f3f3f3f3f3f3f
 5 int a[654634];
 6 signed main(){
 7     int n;cin>>n;
 8     int minx=inf;int x=0;
 9     for(int i=1;i<=n;i++) {
10         cin>>a[i];
11         if(a[i]<minx){
12             x=i;    minx=min(minx,a[i]);
13         }
14     
15     }
16     if(n==1){
17         cout<<"-1";
18         return 0;
19     }
20     if(n==2&&a[1]==a[2]){
21         cout<<"-1";return 0;
22     }
23     cout<<"1"<<'\n'<<x;
24     return 0;
25 }

 1 #include<bits/stdc++.h>
 2  
 3 using namespace std;
 4 #define int long long
 5 int arr[5636531];
 6 int sum[6516584];
 7 signed main(){
 8     int n,m;
 9     cin>>n>>m;int cnt=0;
10     int s=0;
11     for(int i=1;i<=n;i++) cin>>arr[i];
12     for(int i=1;i<n;i++){
13         
14         if(arr[i]%2){
15             s--;
16         }else{
17             s++;
18         }
19         if(s==0&&i!=n){
20             sum[cnt++]=abs(arr[i+1]-arr[i]);
21         }
22     }
23     int add=0;
24     int ans=0;
25     sort(sum,sum+cnt);
26 /*    cout<<cnt<<'\n';
27     for(int i=0;i<cnt;i++) cout<<sum[i]<<" ";
28     */
29     for(int i=0;i<cnt;i++){
30         add+=sum[i];
31         if(add>m){
32             break;
33         }
34         ans++;
35     }
36     cout<<ans;
37     return 0;
38 }
39 /*
40 10 100
41 94 65 24 47 29 98 20 65 6 17
42 */

//x :翻转
//y :置数
#include<bits/stdc++.h>
using namespace std;
#define int long long

signed main(){
    int n,x,y;
    cin>>n>>x>>y;
    string str;
    cin>>str;
    stack<int> s;
    for(int i=0;i<str.size();i++){
        if(s.empty()){
            s.push((str[i]-'0'));
        }else{
            int temp=s.top();
            if(temp==(str[i]-'0')){
                continue;
            }else{
                s.push((str[i]-'0'));
            }
        }
    }
    if(s.size()==1&&str[0]=='1'){
        cout<<"0";
        return 0;
    }int ans=0;
    if(s.size()%2==0){ // 偶数 
        ans=min((s.size()/2-1)*x+y,s.size()/2*y);
        cout<<ans;
    }else{
        int temp=s.top();
        
        if(temp==1){
            ans=min((s.size()/2-1)*x+y,(s.size()/2)*y);
            cout<<ans;
        }else{
            ans=min(((s.size()/2)*x+y),(s.size()/2+1)*y);
            cout<<ans;
        }
    }
    return 0;
} 
/*
2 0
4 1
6 2
8 3
01011 5 1
011 3 1
0101011
01011
01010 5 2
010 3 1

*/

猜你喜欢

转载自www.cnblogs.com/pengge666/p/12077521.html