第二天

A. Set of Strings

 

链接:http://codeforces.com/problemset/problem/544/A

题目大意:

给你一个K和一串字符,然后吧这个字符分成k份,并且每一份的开头字母都不一样

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<queue>
using namespace std;
#define INF 0xfffffff
#define N 200

int main()
{
    char s[N];
    int k,i;
    while(scanf("%d %s",&k,s)!=EOF)
    {
        int a[N],vis[30],m=0;///vis表示这个字母是否出现过,a表示不一样的字母的下标
        memset(vis,0,sizeof(vis));
        for(i=0;s[i];i++)
        {
            if(vis[s[i]-'a']==0)
            {
                vis[s[i]-'a']=1;
                a[m++]=i;
            }
        }
        if(k>m)
        {
            printf("NO\n");
            continue;
        }
        printf("YES\n");
        m=0;
        for(i=1;i<k;i++)
        {
            for(int j=a[m];j<a[m+1];j++)
            {
                printf("%c",s[j]);
            }
            printf("\n");
            m++;
        }
        for(i=a[m];s[i];i++)
            printf("%c",s[i]);
        printf("\n");
    }
    return 0;
}

B. Sea and Islands

http://codeforces.com/problemset/problem/544/B

题目大意:

给你一个n表示海洋n行n列,然后给你一个K,让你在海洋上加沙滩,看可不可以加k个

如果可以  输出加过的图形(只要符合题目都可以)

 

分析:

先求出这个图形能加的最多的沙滩有多少个

等差数列求和  公差为-2

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<algorithm>
#include<iostream>
#include<queue>
using namespace std;
#define INF 0xfffffff
#define N 110

int main()
{
    int n,m,k,i,j;
    while(scanf("%d %d",&m,&k)!=EOF)
    {
        n=(m+1)/2;
        int S=n*m+n*(n-1)/2*(-2)+(n-1)*(m-2)+(n-1)*(n-2)/2*(-2);
        if(k>S)
        {
            printf("NO\n");
            continue;
        }
        printf("YES\n");
        int ans=0;
        for(i=0; i<m; i++)
        {
            for(j=1; j<=m; j++)
            {
                if(ans<k)
                {
                    if((i%2==0 && j%2==1)||(i%2==1 && j%2==0))
                    {
                        printf("L");
                        ans++;
                    }
                    else
                        printf("S");
                }
                else
                    printf("S");
            }
            printf("\n");
        }
    }
    return 0;
}

 

posted @ 2015-11-27 18:13  啦咯  阅读(144)  评论(0编辑  收藏  举报