本文主要是介绍【#254_DIV2】-A B C,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:http://codeforces.com/contest/445
解题报告:
俄国人今天不知道为什么九点钟就比赛了。只过了两道题,第三题完全没思路,有时间单独去刷第三题吧,看起来很难
A - DZY Loves Chessboard
太水了。。。
直接W、B错开填,顺便先抹上“ - ” 就完了
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;char grid[120][120],ans[120][120];int main()
{int n,m,i,j;cin>>n>>m;for(i=0;i<n;i++){scanf("%s",grid[i]);}for(i=0;i<n;i++){for(j=0;j<m;j++){if(grid[i][j] == '-') {ans[i][j] = '-'; continue;}if(i%2 == 0){if(j%2 ==0) ans[i][j] = 'W';elseans[i][j] = 'B';}else{if(j%2 ==0) ans[i][j] = 'B';elseans[i][j] = 'W';}}}for(i=0;i<n;i++) printf("%s\n",ans[i]);return 0;
}
B -DZY Loves Chemistry
并查集直接搞,答案是 2 的 (n - m)次幂。
n 是药品种类数,m 是并查集并出来的集合的个数。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
typedef unsigned long long ll;int arr[55];int find(int x)
{return arr[x]==x?x:find(arr[x]);
}void mer(int a,int b)
{int fa,fb;fa=find(a);fb=find(b);if(fa!= fb) arr[fa]=fb;
}ll p(int x,int y)
{ll ans = 1;for(int i=1;i<=y;i++)ans *= x;return ans;
}int main()
{int i,j,n,m,from,to;cin>>n>>m;for(i=1;i<=n;i++) arr[i] = i;while(m--){scanf("%d%d",&from,&to);mer(from,to);}//for(i=1;i<=n;i++) cout<<arr[i]<<" "; cout<<endl;int t=0;for(i=1;i<=n;i++){if(arr[i]==i) t++;}ll ans = p(2,n-t);cout<<ans<<endl;return 0;
}
C - DZY Loves Physics
去看这道题的AC代码了,,,我擦,,,不该放弃这题的。。。
哈哈哈。。捶地笑,,,其实就是。
只剩两个点了!!!!!!!!!!!!!!!!!!!
不信你拿这个代码去试第三组数据,发现没有!
int main()
{freopen("input.txt","r",stdin);int n,m,c,from,to,i;cin>>n>>m;for(i=1;i<=n;i++) cin>>val[i];while(m--){cin>>from>>to>>c;cout<<(val[from]+val[to])/c<<endl;}return 0;
}
完整的AC代码如下:
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;double val[550];int main()
{//freopen("input.txt","r",stdin);int n,m,c,from,to,i;cin>>n>>m;for(i=1;i<=n;i++) cin>>val[i];double ans = 0;while(m--){cin>>from>>to>>c;ans = max(ans,(val[from]+val[to])/c);}printf("%.12f\n",ans);return 0;
}
这篇关于【#254_DIV2】-A B C的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!