• 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"<<'
    '<<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<<'
    ';
    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
    
    */
  • 相关阅读:
    codechef Graph on a Table
    CF1063F. String Journey
    BZOJ1547: 周末晚会
    maxsigma
    LOJ#2351. 「JOI 2018 Final」毒蛇越狱
    BZOJ3632: 外太空旅行
    图论:tarjan相关算法复习
    Codeforces 321E. Ciel and Gondolas(凸优化+决策单调性)
    5031. 【NOI2017模拟3.27】B (k次狄利克雷卷积)
    CSAcademy Round 10 Yury's Tree(有根树点分树或kruskal重构树)
  • 原文地址:https://www.cnblogs.com/pengge666/p/12077521.html
Copyright © 2020-2023  润新知