CF 230 div2

来源:互联网 发布:课程设计c语言豆 编辑:程序博客网 时间:2024/05/01 14:48


水过了两个题。话说这次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;}


0 0