Codeforces 625

http://codeforces.com/problemset/problem/625/A
题意:换饮料瓶,买最多饮料的问题,思想就是分类讨论然后,处理一下就ok了,注意减法的思想以及提前减去的思想!!!!
其实就相当于你是在最后的时候先拿了返回的c元,然后再去买,所以刚开始的时候要把它减掉(你为什么可以用这个价钱去买到,相当于你提前把返的钱给要回来了)注意分类讨论

#include 

using namespace std;

int main()
{
    long long int a,b,c,n,ans;
    cin>>n>>a>>b>>c;
    if(a == b-c || a < b-c)
        cout<else{
        if(n>=b)
            ans=(n-c)/(b-c);
        ans+=(n-ans*(b-c))/a;
        cout<

http://codeforces.com/problemset/problem/625/B
太水了,破题,找非重叠子串个数就ok了!!下回直接用高级语言.count就ok了!!!

#include
using namespace std;

int const MAX_N = 100100;

char st_1[200100],st_2[200100];

int main() {
    gets(st_1);
    gets(st_2);

    int len_1 = (int) strlen(st_1);
    int len_2 = (int) strlen(st_2);

    int ans = 0;
    for (int i=0; i+len_2-1 < len_1; i++) {
        int bg = 1;
        for (int j=0; jif (st_1[i+j] != st_2[j])
                bg = 0;
        if (bg) {
            ans++;
            //st_1[i + len_2 - 1] = '#';
            i = i + len_2 - 1 ;
        }
    }
    cout<return 0;
}

http://codeforces.com/problemset/problem/625/C
构造,使得第k列的数尽可能的大,特别水!

#include
using namespace std;
#define ll long long
const int maxn=5e2+10;
int n,k;int a[maxn][maxn];
int main(){
    cin>>n>>k;int num=n*n;int sum=0;
    for(int i=1;i<=n;i++){
        for(int j=n;j>=k;j--){
            a[i][j]=num--;
        }
        sum+=a[i][k];
    }
    for(int i=1;i<=n;i++){
        for(int j=k-1;j>=1;j--){
            a[i][j]=num--;
        }
    }
    printf("%d\n",sum);
    for(int i=1;i<=n;i++){
        for(int j=1;jprintf("%d ",a[i][j]);
        }
        printf("%d\n",a[i][n]);
    }
}

你可能感兴趣的:(ACM,水,思维)