AtCoder Beginner Contest 075 总结

来源:互联网 发布:苹果cms采集规则教程 编辑:程序博客网 时间:2024/06/05 04:00

题目不难,但是只做出了两道题。今天补题的时候发现全是暴力……= =  

还是太菜了。:(

题目链接:点击打开链接


#include <iostream>#include <map>#include <set>#include <string>#include<string.h>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <queue>#include <vector>using namespace std;typedef long long ll;int main(){    int a,b,c;    scanf("%d%d%d",&a,&b,&c);    if(a==b) printf("%d\n",c);    else if(a==c) printf("%d\n",b);    else printf("%d\n",a);return 0;}

B
#include <iostream>#include <map>#include <set>#include <string>#include<string.h>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <queue>#include <vector>using namespace std;typedef long long ll;const int maxn=55;char mp[maxn][maxn];int f[maxn][maxn];int main(){    int h,w;    scanf("%d%d",&h,&w);    memset(f,0,sizeof(f));    for(int i=0;i<h;i++){        scanf("%s",mp[i]);    }    for(int i=0;i<h;i++){        for(int j=0;j<w;j++){            if(mp[i][j]=='#'){                if(i-1>=0){                    f[i-1][j]++;                }                if(j-1>=0){                    f[i][j-1]++;                }                if(i+1<h){                    f[i+1][j]++;                }                if(j+1<w){                    f[i][j+1]++;                }                if(i-1>=0&&j-1>=0){                    f[i-1][j-1]++;                }                if(i+1<h&&j-1>=0){                    f[i+1][j-1]++;                }                if(i-1>=0&&j+1<w){                    f[i-1][j+1]++;                }                if(i+1<h&&j+1<w){                    f[i+1][j+1]++;                }            }        }    }    for(int i=0;i<h;i++){        for(int j=0;j<w;j++){            if(mp[i][j]=='#') printf("#");            else printf("%d",f[i][j]);        }printf("\n");    }return 0;}

C 看到N的范围最大才50…可以暴力,DFS搜索,每次删除一条边看能不能访问到所有的点,

#include <iostream>#include <map>#include <set>#include <string>#include<string.h>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <queue>#include <vector>using namespace std;typedef long long ll;/*官方题解*/const int maxn=55;int n,m;int a[maxn],b[maxn];bool graph[maxn][maxn];bool vis[maxn];void dfs(int v){    vis[v]=true;    for(int v2=0;v2<n;++v2){        if(graph[v][v2]==false) continue;        if(vis[v2]==true) continue;        dfs(v2);    }}int main(){    cin>>n>>m;    for(int i=0;i<m;i++){        cin>>a[i]>>b[i];        a[i]--,b[i]--;        graph[a[i]][b[i]]=graph[b[i]][a[i]]=true;    }    int ans=0;    for(int i=0;i<m;i++){        graph[a[i]][b[i]]=graph[b[i]][a[i]]=false;        for(int j=0;j<n;j++){            vis[j]=false;        }        dfs(0);        bool bridge=false;        for(int i=0;i<n;i++){            if(!vis[i]) bridge=true;        }        if(bridge) ans++;        graph[a[i]][b[i]]=graph[b[i]][a[i]]=true;    }    cout<<ans<<endl;return 0;}//*/

 N最大是50 没错还是暴力,n^5的暴力……。不过要注意输出lld 和I64d的区别  传送门

#include <iostream>#include <map>#include <set>#include <string>#include<string.h>#include <cstring>#include <cstdio>#include <algorithm>#include <cmath>#include <queue>#include <vector>using namespace std;typedef long long ll;vector<long long> xray,yray;int main(){    int n,k;    scanf("%d%d",&n,&k);    vector<long long> x(n),y(n);    for(int i=0;i<n;i++){        cin>>x[i]>>y[i];        xray.push_back(x[i]);        yray.push_back(y[i]);    }    sort(xray.begin(),xray.end());    sort(yray.begin(),yray.end());    ll ans=1LL*(xray[n-1]-xray[0])*(yray[n-1]-yray[0]);    for(int x1=0;x1<n;x1++){        for(int x2=x1+1;x2<n;x2++){            for(int y1=0;y1<n;y1++){                for(int y2=y1+1;y2<n;y2++){                    ll lx=xray[x1],rx=xray[x2];                    ll uy=yray[y2],dy=yray[y1];                    int num=0;                    for(int i=0;i<n;i++){                        if(x[i]>=lx and x[i]<=rx&&y[i]<=uy&&y[i]>=dy){                            num++;                        }                    }                    if(num>=k) ans=min(ans,1LL*(rx-lx)*(uy-dy));                }            }        }    }    printf("%lld\n",ans);  //  printf("%I64d\n",ans);  // cout<<ans<<endl;return 0;}