AtCoder Beginner Contest 075 总结
来源:互联网 发布:苹果cms采集规则教程 编辑:程序博客网 时间:2024/06/05 04:00
题目不难,但是只做出了两道题。今天补题的时候发现全是暴力……= =
还是太菜了。:(
题目链接:点击打开链接
A
#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;}//*/
D
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;}
阅读全文
0 0
- AtCoder Beginner Contest 075 总结
- AtCoder Beginner Contest 075
- AtCoder Beginner Contest 075 D
- AtCoder Beginner Contest 055
- AtCoder Beginner Contest 052
- AtCoder Beginner Contest 057
- AtCoder Beginner Contest 063
- AtCoder Beginner Contest 069
- AtCoder Beginner Contest 069
- AtCoder Beginner Contest 070
- AtCoder Beginner Contest 072
- AtCoder Beginner Contest 072
- AtCoder Beginner Contest 072
- AtCoder Beginner Contest 073
- AtCoder Beginner Contest 072
- AtCoder Beginner Contest 081
- AtCoder Beginner Contest 081
- AtCoder Beginner Contest 082
- linux命令--su/sudo
- 汇编实现屏幕中指定内容打印
- 可靠数据传输原理
- 缓存管理工具类
- neuq-oj-1042
- AtCoder Beginner Contest 075 总结
- 异步消息处理机制(一)
- windows下python2和python3共存
- 自定义模板引擎
- Android Studio的设备连接后设备名后为[null]
- 【Spring】Spring与Hibernate整合(十六)
- nginx常用命令
- maven配置jdk插件
- Android自定义View实现下拉刷新控件