大庆市城乡建设局网站,方圆网 网站建设,网站建设的实训总结,内江建设局网站题目链接#xff1a;https://vjudge.net/contest/630537#overview 文章目录 A题题意思路编程 B题题意思路编程 C题题意思路编程 D题题意思路编程 E题题意思路编程 F题题意思路编程 O题题意思路编程 写在前面#xff1a;今天的训练赛出的题目偏简单#xff0c;与XCPC的难度差…题目链接https://vjudge.net/contest/630537#overview 文章目录 A题题意思路编程 B题题意思路编程 C题题意思路编程 D题题意思路编程 E题题意思路编程 F题题意思路编程 O题题意思路编程 写在前面今天的训练赛出的题目偏简单与XCPC的难度差别较大但是我们这次打的也不是很好卡在思维题卡了很久也没写出来还需继续努力······ 回归正题
A题
题意
输入abcd四个数按题意输出。
思路
签到题直接输出即可。
编程
#includebits/stdc.h
#define int long long
#define endl \n
#define fi first
#define se second
#define PII pairint,int
using namespace std;
const int N1e65;
int a[N];
void solve(){int a,b,c,d;cin a b c d;cout ab2*c3*d endl; return ;
}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t1;//cin t;while(t--) solve();return 0;
}B题
题意
给定起始坐标xy在给出它转动的时间和圈数求这个点转动后和起始坐标点位移。
思路
数学思维求出起始坐标转动的角度然后套用数学公式即可
编程
#includebits/stdc.h
//#define int long long
#define endl \n
#define fi first
#define se second
#define PII pairint,int
#define PI 3.1415926535
using namespace std;
const int N1e65;
int a[N];
void solve(){double x,y,t,v;cin x y t v;double rsqrt(x*xy*y);double qt*v-int(t*v);qq*360;if(q180){q360-q;}qq*PI/180;printf(%.10f,sqrt(2*r*r-2*r*r*cos(q)));return ;
}
signed main(){//ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t1;//cin t;while(t--) solve();return 0;
}C题
题意
给你两个整数xy代表纵向坐标将它转化为平面坐标
思路
套题目给的公式即可
编程
#includebits/stdc.h
#define int long long
#define endl \n
#define fi first
#define se second
#define PII pairint,int
#define PI 3.1415926
using namespace std;
const int N1e65;
int a[N];
void solve(){double x,y;cin x y;double ax/2y/2,bx/2*pow(3,0.5)-y/2*pow(3,0.5);printf(%.6f %.6f,a,b);return ;
}
signed main(){//ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t1;//cin t;while(t--) solve();return 0;
}D题
题意
一共n个人请找出一条链接图连接这n个数且影的力量必须大于等于0
思路
考虑最基础的情况将所有结点构造成一条链由于支配关系是可传递的而且只需要保证影的力量非负构造一条链即可
我们有两种支配的方法第一种1 是总支配者其余每人都支配他后面一个人也就是每个人支配他后面的所有人。第二种n 是总支配者其余每人都支配他前面一个人也就是每个人支配他前面的所有人。对于每次输入的xy如果xy,我们让sum反之sum–若sum大于等于0选择方案一反之选择方案二
编程
#includebits/stdc.h
#define int long long
#define endl \n
#define fi first
#define se second
#define PII pairint,int
using namespace std;
const int N1e55;
void solve(){int n,m;cin n m;int sum0;for(int i1;im;i){int x,y;cin x y;if(xy) sum;else sum--;}if(sum0){for(int i1;in;i){cout i1 ;//前面支配后面}cout 0;}else{cout 0 ;for(int i2;in;i){//后面支配前面cout i-1 ;}}return ;
}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t1;//cin t;while(t--) solve();return 0;
}E题
题意
给出n个数的序列ai要求还原所有楼的大小关系按照楼层的高低进行升序排序。
思路
从0进行入手0是代表当前序列的前面所有序列都比当前序列高那么我们可以倒着遍历这个序列当遇到0的时候直接输出该下标若遍历的数不是0那么就将该下标存入到ai的序列里面跟在ai的后面输出即可
编程
#includebits/stdc.h
#define int long long
#define endl \n
#define fi first
#define se second
#define PII pairint,int
using namespace std;
const int N2e55;
vectorint a;
vectorint b[N];
void solve(){int n;cin n;a.resize(n1); for(int i1;in;i){cin a[i];b[i].push_back(i);//先存入当前下标}for(int in;i1;--i){if(a[i]0){//遇到0直接输出b[i]数组里面所有的数for(auto j : b[i]){cout j ;}}else{for(auto j : b[i]){b[a[i]].push_back(j); //将当前下标存入的所有数存入到b[a[i]]里面}}}return ;
}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t1;//cin t;while(t--) solve();return 0;
}F题
题意
给出n个数的序列ai若ai相同则为同一个骑士团求每两个骑士团所获得的最大收益
思路
将每个骑士团的值进行相加然后将两个骑士团相加完后的值相乘即可
编程
#includebits/stdc.h
#define int long long
#define endl \n
#define fi first
#define se second
#define PII pairint,int
using namespace std;
const int N1e65;
mapint,int mp;
void solve(){int n,m; cin n m;for(int i1;in;i){int x;cin x;mp[x]i;}while(m--){int a,b;int ans0;cin a b;ansmp[a]*mp[b];cout ans endl;} return ;
}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t1;//cin t;while(t--) solve();return 0;
}O题
题意 思路
找规律最终找到的规律为n*n直接输出即可
编程
#includebits/stdc.h
#define int long long
#define endl \n
#define fi first
#define se second
#define PII pairint,int
using namespace std;
const int N1e65;
int a[N];
void solve(){int n;cinn;coutn*n;return ;
}
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t1;//cin t;while(t--) solve();return 0;
}