#include<bits/stdc++.h>#defineintlonglongusingnamespace std;signedmain(){int x;
cin >> x;int ans =0;int a[3];
a[0]= x /10%10;// 第二位b
a[1]= x %10;//第一位c
a[2]= x /100;//三位a
ans = ans + a[2]*100+ a[0]*10+ a[1]*1;
ans = ans + a[0]*100+ a[1]*10+ a[2]*1;
ans = ans + a[1]*100+ a[2]*10+ a[0]*1;
cout << ans << endl;return0;}
B - Climbing Takahashi
思路分析:
题目意思就是给你一个数组,然后一直往右走,当碰到右边的数不必当前位置大就停下,输出当前位置的值
代码如下:
#include<bits/stdc++.h>#defineintlonglongusingnamespace std;constint maxn =1e5+10;int a[maxn];signedmain(){int n;
cin >> n;for(int i =0; i < n; i++){
cin >> a[i];}int ans = a[0];for(int i =1; i < n; i++){if(a[i]> ans){
ans = a[i];}elsebreak;}
cout << ans << endl;return0;}
#include<bits/stdc++.h>usingnamespace std;constint maxn =2e5+10;int fa[maxn];int ans[maxn];int n, m, q;structedge{int u, v, w, f;edge(){ f =-1;}booloperator<(const edge &j)const{return w < j.w;}} edges[maxn <<1];intfind(int x){return(x == fa[x]? fa[x]: fa[x]=find(fa[x]));}signedmain(){
cin >> n >> m >> q;for(int i =1; i <= n; i++)
fa[i]= i;memset(ans,0,sizeof(ans));for(int i =0; i < m + q; i++){int u, v, w;
cin >> u >> v >> w;
edges[i].u = u;
edges[i].v = v;
edges[i].w = w;if(i >= m){
edges[i].f = i - m;}}sort(edges, edges + q + m);//先sortint cnt =0;// cnt == n - 1 break;for(int i =0; i < m + q; i++){if(cnt == n -1){break;}int u = edges[i].u;int v = edges[i].v;int fu =find(u);int fv =find(v);if(fu != fv){if(edges[i].f !=-1){
ans[edges[i].f]=1;continue;}
fa[fu]= fv;
cnt++;}}for(int i =0; i < q; i++){printf("%s\n",(ans[i]==1?"Yes":"No"));}return0;}