现在的位置: 首页 > 综合 > 正文

CF 230 div2

2014年04月05日 ⁄ 综合 ⁄ 共 1522字 ⁄ 字号 评论关闭


水过了两个题。话说这次A题比B题难。。不幸的是A题交了不久就被hack了,好忧桑。先过了B题又去改A题了。我在考虑以后要不要变幻做题顺序。


http://codeforces.com/contest/393/problem/A

题意:给你一个字符串,你可以重新排列他们。问最后这个字符串中最多含有几个“nineteen”。

思路:注意到每个“nineteen”有三个n和e,一个i和t。而且对于“nineteenineteen”前一个“nineteen”与后一个“nineteen”共一个'n'。但是'e,i,t'是不能共用的。所以计算出'i'和't'的最小值t1,优先与'e'的个数比较,再与'n'的个数比较。其中'n'的个数最少要有2*x+1。(x为要求的最多个数).

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

char str[110];

int main()
{
    while(~scanf("%s",str))
    {
        int nn = 0,ni = 0, ne = 0, nt = 0;
        for(int i = 0; str[i]; i++)
        {
            if(str[i] == 'n')
                nn++;
            else if(str[i] == 'i')
                ni++;
            else if(str[i] == 'e')
                ne++;
            else if(str[i] == 't')
                nt++;
        }

        int t1 = min(ni,nt);


        if(ne >= 3*t1)
        {
            if(nn >= 2*t1+1)
                printf("%d\n",t1);
            else
                printf("%d\n",(nn-1)/2);
        }

        else
        {
            int t2 = ne/3;
            if(nn >= t2*2+1)
                printf("%d\n",t2);
            else printf("%d\n",(nn-1)/2);
        }
    }
    return 0;
}

http://codeforces.com/contest/393/problem/B

题意:把一个矩阵w分成两个矩阵a,b,满足:

a[i][j] = a[j][i]

b[i][j] = -b[j][i]

w[i][j] = w[j][i]

联立以上得:

a[i][j] = a[j][i] = (w[i][j] + w[j][i])/2;

b[i][j] = -b[j][i] = w[i][j]-a[i][j]。

#include <stdio.h>
#include <string.h>

const int maxn = 180;
int w[maxn][maxn];
double a[maxn][maxn],b[maxn][maxn];

int main()
{
    int n;
    while(~scanf("%d",&n))
    {

        for(int i = 1; i <= n; i++)
        {
            for(int j = 1; j <= n; j++)
                scanf("%d",&w[i][j]);
        }

        for(int i = 1; i <= n; i++)
        {
            for(int j = 1; j <= n; j++)
            {
                if(i == j)
                {
                    a[i][j] = w[i][j]*1.0;
                    b[i][j] = 0;
                }

                else
                {
                    a[j][i] = a[i][j] = (w[i][j]+w[j][i])*1.0/2;
                    b[i][j] = w[i][j]-a[i][j];
                    b[j][i] = -b[i][j];
                }
            }
        }

        for(int i = 1; i <= n; i++)
        {
            for(int j = 1; j < n; j++)
                printf("%.8lf ",a[i][j]);
            printf("%.8lf\n",a[i][n]);
        }
        for(int i = 1; i <= n; i++)
        {
            for(int j = 1; j < n; j++)
                printf("%.8lf ",b[i][j]);
            printf("%.8lf\n",b[i][n]);
        }
    }
    return 0;
}

抱歉!评论已关闭.