標籤: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;}