2025寒假新生营第一次训练
7-1 A + B ?简单输入输出
123456789101112#include <bits/stdc++.h>using namespace std;int main(){ int n,a,b; cin>>n; for(int i=1;i<=n;i++){ cin>>a>>b; cout<<a+b<<endl; } return 0;}
7-2 鸡兔同笼问题典型数学解方程问题
x+y=a
2x+4y=b
y=(b-2a)/2 , x=a-(b-2a)/2;
12345678910#include <bits/stdc++.h>using namespace std;int main(){ int a,b; cin>>a>>b; cout<<"The number of hens is ...
2025寒假新生营开营测试
7-1 建校日期直接输出2025-01-11
12345#include<iostream>using namespace std;int main(){ cout << "1921-10-18" << "\n"; //相当于c语言printf("1921-10-18\n");}
7-2 精准打击很简单就是计算圆面积,需要注意保留两位小数(输出时只输出小数点后两位)
123456789#include<iostream>#define PII 3.14using namespace std;double R,S;int main(){ cin >> R; S = R*R*PII; printf("%.2lf",S);}
7-3 小孩子才做选择,大人全都要有题意可知:
假设两个盲盒中的狗粮或储蓄盒容量分别为c1,c2
阿汪只会在两个盲盒之间选择1个有狗粮且狗粮最多的一个。则让阿汪选能吃到的狗粮 A=max(0,c1,c2)
铲屎官会两个盲盒都要,则铲屎官全都要能 ...
2024暑假知行进阶营第三周题解
7-1123456789101112131415161718192021222324252627#include <iostream>#include <cstring>using namespace std;const int N = 510 , MAX = 1e9 ;int n;int a[N][N] ,f[N][N] ; int main () { cin >> n ; for (int i = 1 ; i <= n ; i ++ ) for (int j = 1 ; j <= i ; j ++ ) cin >> a[i][j] ; for (int i = 0 ; i <= n ; i++) for (int j = 0 ; j <= i + 1 ; j ++ ) f[i][j] = -MAX ; f[1][1] = a[1][1]; for (int i = 2 ; i <= n ; i + ...
2024暑假知行进阶营第二周题解
7-1村村通用并查集将有道路的城市连通起来,最后检查有多少个连通分量,需要的道路数就是连通分量数-1。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253#include<bits/stdc++.h>using namespace std;int fa[1010];int find(int x){ if(fa[x]==x) return fa[x]; else { fa[x]=find(fa[x]); return fa[x]; }}void merge(int a,int b){ int a1=find(a); int b1=find(b); if(a1!=b1) { fa[a1]=b1; }}int main(){ int n,m ...
2024暑假知行进阶营第一周题解
*7-1入度与出度 *选定数据结构后分别用两个数组记录出度和入度即可。
7-2 图的存储—邻接表根据题意读入数据建立邻接表,按要求输出即可。
12345678910111213141516171819202122232425#include <iostream>#include <cstdio>#include <vector>using namespace std;vector <int> gr[20];int main() { int n, m, s; cin >> n >> m >> s; for(int i = 1; i <= m; ++i) { int u, v; cin >> u >> v; gr[u].push_back(v); if(!s) gr[v].push_back(u); } for(int i = 1; i <= n; ++i) { cout << i-1 << ":" ...
2023暑假知行进阶营第五周题解
7-1 图的先深搜索朴素的 DFS
12345678910111213141516171819202122232425262728293031323334353637383940#include<bitsdc++.h>using namespace std;int head[11];bool vis[11];int n,m,a,cnt,t;struct edge{ int to; int last;}e[51];void add(int x,int y){ cnt++; e[cnt].to=y; e[cnt].last=head[x]; head[x]=cnt;}void dfs(int k){ if(t==n) return; vis[k]=true; t++; cout<<k<<" "; for(int i=head[k];i>=1;i=e[i].last){ if(!vis[e[i].to]) dfs(e[i].to); ...
2023暑假知行进阶营第四周题解
第四周题解7-1 根据后续和中序遍历输出先序遍历利用数组保存树的后序遍历和中序遍历,根据后续遍历和中序遍历的特点还原树,并根据先序遍历的顺序,即根左右,利用函数递归输出打印,注意输出格式的正确性。
1234567891011121314151617181920212223#include<bits/stdc++.h>using namespace std;const int N = 40;typedef long long LL;int in[N], last[N];int n;void pre(int root, int s, int e) //root:当前子树的根节点;s:中序遍历的起始位置;e:中序遍历的终止位置{ if(s > e) return; //边界 int idx = s; while(in[idx] != last[root]) idx++; //找到root位于中序遍历中的下标idx cout << " " << last[root]; pre(root - (e - idx) - ...
2023暑假知行进阶营第三周题解
markdown 文章内容
7-1词典这道题用map写很快的,有些同学是用字符串数组遍历查找做的,数据量大的话会超时,建议大家好好学一下c++,很好用。
1234567891011121314151617181920#include <iostream>#include <map>using namespace std;int main(){ int n,m; cin>>n>>m; map<string,string>mp; while(n--){ string s1,s2; cin>>s1>>s2; mp[s2]=s1; } while(m--){ string s; cin>>s; if(mp.count(s)) cout<<mp[s]<<endl; else cout<< ...
2023暑假知行进阶营第二周题解
markdown 文章内容
7-1 计算阶乘和
求的是前n项的阶乘和,阶乘可以递归方式定义:0!=1,n!=(n-1)!×n
1234567891011121314151617181920212223242526272829const int N = 15;int f[N];//全局变量int solve(int i) { f[i] = i * f[i - 1]; return f[i];}int main() { f[0] = 1; int n; cin >> n; int sum = 0; for (int i = 1; i <= n; i++) { sum += solve(i); } cout << sum;
7-2 求两个一元多项式的和
利用map。
map可以直接查找键值对。把指数当做键,因为不同指数惟一的,系数当做值。
map默认按照键值升序排列,题目输入是按指数降序,计算过程按指数有序。最后输出结果时要再按指数降序输出,可以利用rbegin(),rend()(还可以 ...
2023暑假知行进阶营第一周题解
1:__gcd函数显然可以直接调用__gcd(a, b)这个函数返回a,b的最大公因数, 而最小公倍数=a * b / __gcd(a, b);
12int a, b; cin >> a >> b;cout << __gcd(a, b) << ' ' << a * b / __gcd(a, b);
1-2 素数判断显然只需要处理出1e5之内的素数,然后相邻判断是否差为2即可
1234567891011121314int n; cin >> n;vector<int> v;for (int i = 2; i <= n; i ++ ) { bool fg = true; for (int j = 2; j <= sqrt(i); j ++ ) if(i % j == 0) fg = false; if(fg) v.pb(i);}int cnt = 0;for (int i = 1; i < v.size(); i ++ ) ...