Codeforces Rounds #254 div2:A,B,C

來源:互聯網
上載者:User

標籤:style   blog   http   color   2014   for   

A:

這是一道紅果果的水題啊。。。。好坑爹。。。暴力一直不過。。。。WA了4遍呐。。。。。。時間過了1個小時後,打算用dfs寫。。。浪費了好多腦細胞。。。大神2分鐘就過了。。。我還要1個多小時才過。。。我還是太弱了。。。我是白癡。。。5555。。。今天一早知道了學姐的做法,奇行奇列和偶行偶列用B,其他的用W。。。。要是能想到果然很水。。。。哭暈在廁所惹。。。接下來倆種代碼都貼一下吧。。。

//dfs#include <stdio.h>int n,m;char a[105][105];int limit(int x,int y){    if(x>=0&&x<n&&y>=0&&y<m&&a[x][y]=='.')        return 1;    return 0;}void dfs(int x,int y){    if(limit(x-1,y))    {        if(a[x][y]=='B')            a[x-1][y]='W';        else a[x-1][y]='B';        dfs(x-1,y);    }    if(limit(x+1,y))    {        if(a[x][y]=='B')            a[x+1][y]='W';        else a[x+1][y]='B';        dfs(x+1,y);    }    if(limit(x,y-1))    {        if(a[x][y]=='B')            a[x][y-1]='W';        else a[x][y-1]='B';        dfs(x,y-1);    }    if(limit(x,y+1))    {        if(a[x][y]=='B')            a[x][y+1]='W';        else a[x][y+1]='B';        dfs(x,y+1);    }}int main(){    int i,j, ff;    while(~scanf("%d%d%*c",&n,&m))    {        for(i=0;i<n;i++)           gets(a[i]);        for(i=0;i<n; i++)            for(j=0;j<m; j++)                if(a[i][j]=='.')                {                    a[i][j]='B';                    dfs(i,j);                }        for(i=0;i<n;i++)            puts(a[i]);    }    return 0;}

//水過~~~代碼親測能過da~~#include <stdio.h>int main(){    int n,m, i,j;    char a[105][105];    while(~scanf("%d%d%*c",&n,&m))    {        for(i=0;i<n;i++)           gets(a[i]);        for(i=0;i<n; i++)        {            for(j=0;j<m; j++)            {                if(a[i][j]=='.')                {                if((i%2&&j%2)||(i%2==0&&j%2==0))                    printf("B");                else printf("W");                }                else printf("-");            }            printf("\n");        }    }    return 0;}


B:

用並查集做的,先找有幾個沒有連在一起的,總的減去它,就是有最多種的化學藥品能混在一起,再用2的次方就能求出最大危險值。這隻是我的理解,有什麼錯誤請各位大神斧正~~~以下是代碼:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>int N,M;int set[1005];int temp;int find(int x){return set[x]=(set[x]==x?x:find(set[x]));}void merge(int a,int b){for(int i=1;i<=N;i++){int x=find(a),y=find(b);if(x!=y){set[x]=y;temp--;}}}int main(){while(~scanf("%d%d",&N,&M)){int a,b;temp=N-1;for(int j=1;j<=N;j++){set[j]=j;}for(int i=1;i<=M;i++){scanf("%d%d",&a,&b);merge(a,b);}printf("%.0lf\n",pow(2,N-temp-1));}return 0;}


C:

C題真的要哭暈在廁所惹了啦~~~。。。草雞大水題。。。。5555.就這麼放過了。。。好討厭啦。。。。。。主要是我英語渣。。。。不想看英語。英語和智商皆是硬傷啊。。。。。。說多了都是水啊。。。55555以下是代碼

#include <cstdio>#define N 517double MAX(double a, double b){return a>b?a:b;}int main(){int n, m;int x[N];int a, b, c;while(~scanf("%d%d",&n,&m)){int i, j;for(i = 1; i <= n; i++){scanf("%d",&x[i]);}double max = 0, t;for(i = 1; i <= m; i++){scanf("%d%d%d",&a,&b,&c);t =(double) (x[a]+x[b])/c;max = MAX(max, t);}printf("%.15f\n",max);}return 0;}


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.