//记录每个点左边的G的个数(代码中数组b),包括该点,右边的R的个数(代码中数组f),不包括该点,然后 //然后找到b[i]+f[i]的最小值 #include <iostream> #include <string> #include <vector> using namespace std; int main(int argc,char* argv[]){     string s("RGRGR");     cin>>s;     int n=(int)s.length();     int count_1=0;     vector<int> b(n,0);     vector<int> f(n,0);     for(int i=0;i<n;i++){         if(s[i]=='G')             count_1++;         b[i]=count_1;     }     int count_2=0;     for(int i=n-2;i>=0;i--){         if(s[i+1]=='R')             count_2++;         f[i]=count_2;     }     int mm=0x7FFFFFFF;     for(int i=0;i<n;i++){         if(b[i]+f[i]<mm){             mm=b[i]+f[i];         }     }     if(n==0) mm=0;     cout<<mm<<endl; } //暴力和比较优的都写了,作对比。 #include <iostream> #include <string> #include <vector> using namespace std; bool isTrue(long num){     if(num<10) return false;     else{         int a=0,b=0;         a=num%10;         b=(num/10)%10;         return a==b;     }     return false; } long count(long num){     if(num<10) return 0;     else{         long n100=num/100;         num=num%100;         long n1=num%10;         long n10=num/10;         long ans;         if(n1>=n10){             ans=n100*10+n10;         }         else{             ans=n100*10+n10-1;         }         return ans;     }     return 0; } int main(int argc,char* argv[]){     long L=0,R=0;     cin>>L>>R;     cout<<count(R)-count(L-1)<<endl;     long cnt=0;     for(long i=L;i<=R;i++){         if(isTrue(i))             cnt++;     }     cout<<cnt<<endl;     return 0; } //找到规律就好 #include <iostream> #include <vector> #include <algorithm> using namespace std; int main(int argc,char* argv[]){     int n=0;     cin>>n;     vector<int> mvec(n,0);     for(int i=0;i<n;i++){         cin>>mvec[i];     }     sort(mvec.begin(),mvec.end());     long ans=1;     for(int i=0;i<n;i++){         ans*=mvec[i]-i;         if(ans>1000000007){             ans=ans%1000000007;         }     }     cout<<ans<<endl; }
点赞 评论

相关推荐

牛客网
牛客网在线编程
牛客网题解
牛客企业服务