SMU寒假训练周报4

news/2025/2/23 19:06:19/文章来源:https://www.cnblogs.com/violet-hty/p/18732637

1.网络寻路

原题链接:P8605 [蓝桥杯 2013 国 AC] 网络寻路 - 洛谷

这题做过但还是误会题意了,题目严格要求当且仅当深度为3的路才会被记录,我以为是大于等于3。。所以记录一个头结点,在深度为二时遍历计数即可

查看代码

#include<bits/stdc++.h>
using namespace std;
#define int long long
vector<int>v[1000000];
int sign[10010];
int ans=0;
void dfs(int tou,int x,int deep)
{if(deep==2){for(int i=0;i<v[x].size();i++){if(v[x][i]==tou||!sign[v[x][i]])ans++;}return;}for(int i=0;i<v[x].size();i++){if(!sign[v[x][i]]){sign[v[x][i]]=1;dfs(tou,v[x][i], deep + 1);sign[v[x][i]]=0;}}
}
signed main()
{ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n,m;cin>>n>>m;for(int i=1;i<=m;i++){int x,y;cin>>x>>y;v[x].push_back(y);v[y].push_back(x);}for(int i=1;i<=n;i++){//memset(sign,0,sizeof sign);sign[i]=1;dfs(i,i,0);sign[i]=0;}cout<<ans;return 0;
}

2.宝石组合

原题链接:P10426 [蓝桥杯 2024 省 B] 宝石组合 - 洛谷

化简之后得知实际是求gcd(a,b,c),根据定义可得所找的就是三个数中最大的公共因数,因此我们令 v[i] 数组为有哪些数包含因数 i,在处理后我们只需要从大到小遍历所有因数,找到首个 v[i] 的长度大于 3 的数即为答案(意义为在给出的数组中有大于等于 3 个数的其中一个因数为 i),其中包含的三个数的具体数值即为我们要找的答案,题目中要求字典序最小,故在此之前对数组进行排序即可

查看代码
 #include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 100010;
vector<int> v[N];
int a[N];
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int n;cin >> n;for(int i = 1;i<=n;i++){cin >> a[i];}sort(a+1,a+1+n);for(int i = 1;i<=n;i++){for(int j = 1;j * j <= a[i];j++){if(a[i] % j == 0){if(v[j].size() < 3){v[j].push_back(a[i]);}if(j * j < a[i] && v[a[i]/j].size() < 3){v[a[i]/j].push_back(a[i]);}}}}for(int i = 100000;i>=1;i--){if(v[i].size() == 3){cout << v[i][0] << " " << v[i][1] << " " << v[i][2] << endl;break;}}return 0;
}

3.环境治理

原题链接:P8794 [蓝桥杯 2022 国 A] 环境治理 - 洛谷

这个题大意了,其实已经用floyd写出来了,但是没考虑到其实一条路的灰尘度和其所连的两个点都有关系,只考虑了一个点哎,就是最短路和二分的结合

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
int n,q;
int a[1010][1010],b[1010][1010];
int f[1010][1010],p[1010][1010];
int dis[1000000];
bool check(int x)
{for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){f[i][j]=a[i][j];}}int y=x/n;int z=x%n;for(int i=1;i<=n;i++)dis[i]=y;for(int i=1;i<=z;i++)dis[i]++;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){f[i][j]-=dis[i]+dis[j];f[i][j]=max(f[i][j],b[i][j]);}}for (int i = 1; i <= n; i++) {for (int j = 1; j <= n; j++) {for (int k = 1; k <= n; k++) {f[j][k] = min(f[j][k], f[j][i] + f[i][k]);}}}int sum=0;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){sum+=f[i][j];}}return sum>q;
}
signed main()
{//ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);cin>>n>>q;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a[i][j];}}for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>b[i][j];}}int l=0,r=1e7;int ans=1e9;while(l<=r){int mid=l+r>>1;if(check(mid))l=mid+1;else r=mid-1,ans=mid;}if(ans==1e9)cout<<-1;else cout<<ans;//cout<<l;return 0;
}

4.拔河

原题链接:P10429 [蓝桥杯 2024 省 B] 拔河 - 洛谷

其实只需要把所有范围都算出来,排序后找出相邻差值最小的一组即可了

查看代码
 #include<bits/stdc++.h>
using namespace std;
#define int long long
int a[1000000];
signed main()
{//ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n;cin>>n;for(int i=1;i<=n;i++)cin>>a[i];vector<int>v;for(int i=1;i<=n;i++){int sum=0;for(int j=i;j<=n;j++){sum+=a[j];v.push_back(sum);}}sort(v.begin(),v.end());int mi=LLONG_MAX;for(int i=1;i<v.size();i++){int t=v[i]-v[i-1];mi=min(mi,t);}cout<<mi;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/888516.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双向广搜 P1032 洛谷 [NOIP 2002 提高组] 字串变换

双向广搜 P1032 洛谷 [NOIP 2002 提高组] 字串变换 题目背景 本题不保证存在靠谱的多项式复杂度的做法。测试数据非常的水,各种做法都可以通过,不代表算法正确。因此本题题目和数据仅供参考。 本题为搜索题,本题不接受 hack 数据。关于此类题目的详细内容 题目描述 已知有两…

uniapp uview u-form表单校验:表单有值却校验不通过的问题

<u-form-item label="数量" required prop="num"><u-input v-model="form.num"></u-input> </u-form-item>检查校验不通过的字段值类型是什么,如果是非string类型,要在rules上指定值类型。原因:u-form的校验规则是值…

BUS设计中的DeadLock死锁问题

本文讨论一下 BUS 设计中的 DeadLock 死锁问题,或者叫做 Cyclic Dependency 循环依赖问题。其含义是指 A 的动作导致 B 的动作无法进行下去,同样 B 的动作导致 A 的动作无法进行下去,二者相互依赖,形成死锁。 1 AXI握手死锁 在学习 AXI 协议时,手册中提到了 AXI 握手死锁,…

字符串-str

字符串-str 1.1 特点需要加上引号,单引号与双引号都可以,包含了多行内容的时候还可以用三引号name = rock #报错,没有引号识别为变量名, name = "rock" print(name) name = kyle print(name) name = """rock #多行内容时使用三引号,区分三引…

X00221-基于多智能体强化学习的车联网频谱共享python完整代码

研究基于多智能体强化学习的车联网频谱共享问题,其中多个车与车(V2V)链路复用由车与基础设施(V2I)链路占用的频谱。由于高速移动的车联网环境中信道变化快速,导致基站无法收集到准确的瞬时信道状态信息,从而无法进行集中式资源管理。对此,将资源共享建模为一个多智能体…

Week01【ElementPlus Layout 布局】

Week01【ElementPlus Layout 布局】 📅 2025/02/22 Layout 布局【ElementPlus】 通过基础的 24 分栏,迅速简便地创建布局。组件默认使用 Flex 布局,不需要手动设置 type="flex"。 请注意父容器避免使用 inline 相关样式,会导致组件宽度不能撑满(宽度坍塌)。. …

Linux 中 source命令 和 bash命令的区别

001、 Linuxbash和source命令的区别在于,当你用bash命令执行脚本时,它告诉Linux内核创建一个新的Bash进程来读取和执行脚本,将输出复制到原先的shell进程中,并显示下来. 然而source命令是一个外置的shell,它读取和评估当前shell进程中的文件。为此,脚本所做的所有修改都将…

字符串的编码及解码

1. 字符串的编码及解码解释str类型转换为bytes类型为编码bytes类型转换为str类型为解码2. 字符串的编码str类型转换为bytes类型使用字符串encode()方法语法格式:str.encode(encodeing= utf8,errors=strict/ignore/replace)出错方式:strict:严格的;报错。 ignore:忽略;rep…

3.正向传播与反向传播 - 学习率LR - Batch size - 激活函数 - 损失函数

正向传播尽量降低损失函数梯度梯度是一个向量(矢量),函数在一点处沿着该点的梯度方向变化最快,变化率最大。换而言之,自变量沿着梯度方向变化,能够使应变量(函数值)变化最大。如图:如果想要 w 下降最快就沿着梯度的负方向下降,就能降低损失函数方向传播更新各个参数的…

Qt报错error: member access into incomplete type QTcpSocket

现象解决办法 在mainwindow.cpp文件中添加头文件。 #include <QTcpSocket>

Spring Boot中如何优雅地读取Jar包中的Resources目录下的文件

在Java的Spring Boot项目中,我们经常需要从resources目录下读取配置文件或其他资源文件。在本地开发环境中,我们可以轻松地使用绝对路径访问这些文件,但项目一旦打包成Jar包并部署到服务器上,这种访问方式就失效了。 因此,掌握在Jar包中读取resources目录下文件的方法至关…

开学测试总结owo

经过这次的小测,在这次测试中,我个人认为最大的变化,就是逻辑性增强,sql语句的要求更多了, 这就反应了对于web应用开发这门课对我们专业的用处,还有,前端页面的美化,我认为前端代码,多 数交给AI就可以了,但主要是你自己要明白需求到底是什么,你要完成的项目是什么,…