-
思路:map标记,map输出。
AC代码:
#include<bits/stdc++.h> using namespace std; map<int,int> mp; int main(void){ int n; cin >> n; int a[n]; for(int i = 1; i <= n; i++){ cin >> a[i]; mp[a[i]]++; a[i] = mp[a[i]]; cout<<a[i]<<" "; } cout<<endl; return 0; }
-
思路:模拟,发现每一次斜着走的坐标值和是定值,模拟即可。
AC代码:
#include<bits/stdc++.h> using namespace std; const int maxn = 510; int a[maxn][maxn]; int main(void){ int n; cin >> n; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin >> a[i][j]; cout<<a[1][1]<<" "; bool flag = 1; for(int sum = 3; sum <= n*2; sum++){ if(flag){ for(int i = 1; i < sum; i++) if(sum-i<=n&&i<=n) cout<<a[i][sum-i]<<" "; flag = 0; } else{ for(int i = 1; i < sum; i++) if(sum-i<=n&&i<=n) cout<<a[sum-i][i]<<" "; flag = 1; } } return 0; }
-
思路:
AC代码:
-
思路:裸最小生成树
AC代码:
#include<bits/stdc++.h> using namespace std; const int maxn = 1e5+10; int f[maxn]; int n,m; void Init(){ for(int i = 1; i <= maxn; i++) f[i] = i; } int getf(int x){ return x==f[x]?x:f[x] = getf(f[x]); } struct Node{ int u,v,w; }node[maxn]; bool cmp(Node a, Node b){ return a.w < b.w; } int main(void){ cin >> n >> m; int sum = 0; Init(); for(int i = 1; i <= m; i++) cin >> node[i].u >> node[i].v >> node[i].w; sort(node+1,node+1+m,cmp); for(int i = 1; i <= m; i++){ int u = getf(node[i].u); int v = getf(node[i].v); if(u!=v){ sum += node[i].w; f[u] = v; } } cout<<sum<<endl; return 0; }
『CCF题解』2014年12月【A】【B】【C】【D】
猜你喜欢
转载自blog.csdn.net/wxd1233/article/details/105641132
今日推荐
周排行