【vjudge训练记录】11月个人训练赛1

news/2024/11/7 9:28:30/文章来源:https://www.cnblogs.com/longxingx/p/18523882

训练情况

赛后反思

被小数据背刺了,吃了几发RE,不过还是调出来了

A题

我们先考虑将连续的 v 先换成 w,之后就是统计子序列 wow 的个数,我们只需要找每个 o 前面有多少个 w,之后有多少个 w,根据乘法原理可知,这个 o 对答案的贡献就是两个相乘,维护前面和后面的 w 我们可以考虑使用前后缀和。

#include <bits/stdc++.h>
#define int long longusing namespace std;signed main(){string s; cin>>s;int n = s.size();if(n<=2){cout<<0<<endl;return 0;}string t;for(int i = 0;i<n;i++){if(s[i] == 'o') t+="o";if(i==0) continue;if(s[i] == 'v' && s[i-1] == 'v') t+="w";}n = t.size();vector<int> pre(n+1);vector<int> suf(n+1);pre[0] = (t[0] == 'w');suf[n-1] = (t[n-1] == 'w');for(int i = 1;i<n;i++){pre[i] = pre[i-1] + (t[i] == 'w');}for(int i = n-2;~i;i--){suf[i] = suf[i+1] + (t[i] == 'w');}int ans = 0;for(int i = 0;i<n;i++){if(t[i] == 'o') ans += (pre[i]*suf[i]);}cout<<ans<<endl;return 0;
}

B题

找数列中是否有 \(m\) 个大于 \(\frac{sum}{4m}\) 个元素,我们先直接求个和,再判断每一位是否符合要求即可,注意除法会有精度和取整问题,所以我们考虑把除法移到左边去乘。

#include <bits/stdc++.h>using namespace std;int main(){int n,m; cin>>n>>m;vector<int> a(n + 1);int sum = 0;for(int i = 1;i<=n;i++) cin>>a[i],sum+=a[i];int cnt = 0;for(int i = 1;i<=n;i++){if(a[i]*4*m < sum) cnt++;}if(n-cnt>=m) cout<<"Yes"<<endl;else cout<<"No"<<endl;return 0;
}

C题

很显然要绝对值最接近 \(0\)\(n\) 要减去 \(k\) 倍的 \(m\),并且这个 \(k\) 要足够大,这就是直接 \(n \mod m\) 即可,再和负数的绝对值情况取大值即可。

#include <bits/stdc++.h>
#define int long long
using namespace std;signed main(){int n,m; cin>>n>>m;cout<<min(n%m,abs(n%m-m));return 0;
}

D题

简单的 DP,我们设计状态 \(dp_{ij}\) 为走到第 \(i\) 行,\(j\) 列的路线数,它可以从它的上一行和上一列转移过来,求一个和即可,记得跳过全部偶数的情况。

#include <bits/stdc++.h>
#define int long longusing namespace std;int dp[33][33];signed main(){int n,m; cin>>n>>m;dp[1][1] = 1;for(int i = 1;i<=n;i++){for(int j = 1;j<=m;j++){if(i%2==0&&j%2==0) continue;if(i==1&&j==1) continue;dp[i][j] = dp[i-1][j] + dp[i][j-1];}}
//	for(int i = 1;i<=n;i++){
//		for(int j = 1;j<=m;j++){
//			cout<<dp[i][j]<<" ";
//		}
//		cout<<endl;
//	}cout<<dp[n][m]<<endl;return 0;
}

E题

我们判断曲线是否会经过圆,我们只需要判断起点和终点一个在圆内,一个在圆外即可,这样无论曲线怎么画都得经过这个圆,直接统计答案即可。

#include <bits/stdc++.h>using namespace std;double dis(int x,int y,int xx,int yy){return sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy));
}int main(){int n; cin>>n;vector<int> x(n + 1),y(n + 1),r(n + 1);for(int i = 1;i<=n;i++) cin>>x[i];for(int i = 1;i<=n;i++) cin>>y[i];for(int i = 1;i<=n;i++) cin>>r[i];int xa,ya,xb,yb; cin>>xa>>ya>>xb>>yb;int ans = 0;for(int i = 1;i<=n;i++){double res1 = dis(xa,ya,x[i],y[i]);double res2 = dis(xb,yb,x[i],y[i]);if((res1<r[i]&&res2>r[i])||(res1>r[i]&&res2<r[i]))ans++;}cout<<ans<<endl;return 0;
}

F题

我们发现这是一道最长公共子序列题,但是这题没有办法使用 \(O(n^2)\) 的 DP,但是我们发现这一题是一个排列,我们可以考虑记录每个排列出现的位置,既然要最长公共子序列,我们只需要每一个排列的下标递增即可,通过下标位置的递增,这就可以转换成最长上升子序列,使用二分算法 \(O(nlogn)\) 做。

#include<bits/stdc++.h>using namespace std;int main(){int n; cin>>n;vector<int> a(n + 1);vector<int> b(n + 1);vector<int> pos(n + 1);for(int i = 1;i<=n;i++) cin>>a[i],pos[a[i]] = i;for(int i = 0;i<=n;i++) a[i] = INT_MAX;for(int i = 1;i<=n;i++) cin>>b[i];for(int i = 1;i<=n;i++){int p = lower_bound(a.begin() + 1,a.end(),pos[b[i]]) - a.begin();a[p] = pos[b[i]];}int ans = lower_bound(a.begin() + 1,a.end(),a[0]) - a.begin() - 1;cout<<ans<<endl;return 0;
}

G题

我们想要 gcd 最大,我们显然发现一对数的 gcd 是会小于等于它的较小的数,所以我们构造的数列的 gcd 必定等于最小的 a,之后就是统计能这样构造的数组一共有多少个,只要每个数在 \(a_i\) 的范围内,并且都是那个 gcd (最小的 \(a_i\))的倍数即可,计算出每一位有多少种放置方法,最后根据乘法原理全部乘起来就是答案了。

#include <bits/stdc++.h>
#define int long longusing namespace std;
const int modd = 1e9+7;
signed main(){int n; cin>>n;vector<int> a(n + 1);for(int i = 1;i<=n;i++) cin>>a[i];sort(a.begin() + 1,a.end());int cnt = 1;for(int i=1;i<=n;i++){cnt = cnt % modd * (a[i]/a[1])%modd;}cout<<a[1]<<" "<<cnt%modd<<endl;return 0;
}

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

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

相关文章

数据采集和融合技术作业3

作业①: 1)指定一个网站,爬取这个网站中的所有的所有图片,例如:中国气象网(http://www.weather.com.cn)。使用scrapy框架分别实现单线程和多线程的方式爬取。 代码解析 weather_spiders.py文件 解析起始页面 def parse(self, response):urls = response.xpath(//div[@cla…

19-操作系统安全保护

19.1 概述 1)概念 一般来说,操作系统的安全是指满足安全策略要求,具有相应的安全机制及安全功能,符合特定的安全标准,在一定约束条件下,能够抵御常见的网络安全威胁,保障自身的安全运行及资源安全。 操作系统的安全可控目标分为两个层面:第一个层面,是指给定一个操作系…

2024-2025-1 20241313刘鸣宇《计算机基础与程序设计》第六周工作总结

作业信息这个作业属于哪个课程 <班级的链接>(如2024-2025-1-计算机基础与程序设计)这个作业要求在哪里 <作业要求的链接>(如2024-2025-1计算机基础与程序设计第一周作业)这个作业的目标 <写上具体方面>作业正文 ... 本博客链接教材学习内容总结 学习了有关…

mysql 5.7.x版本查看某张表、库的大小 思路方案说明

mysql 5.7.x版本查看某张表、库的大小 思路方案说明@目录摘要(推荐)第一种方案:查询information_schema.TABLES的字段DATA_LENGTH使用场景优点:网上大多案例都是查询系统表的字段DATA_LENGTH去计算大小缺点:DATA_LENGTH不都是实时更新的,由表引擎决定,同时DATA_LENGTH是…

Fluent Editor 富文本开源2个月的总结:增加格式刷、截屏、TypeScript 类型声明等新特性

你好,我是 Kagol,个人公众号:前端开源星球。 Fluent Editor 是一个基于 Quill 2.0 的富文本编辑器,在 Quill 基础上扩展了丰富的模块和格式,框架无关、 功能强大、开箱即用。 2024年8月12日,Fluent Editor 正式开源!源码:https://github.com/opentiny/fluent-editor/ 官…

JavaScript DOM

一 获取Element对象点击查看代码 Document对象中提供了以下获取 Element元素对象的函数 getElementById():根据id属性值获取,返回单个Element对象 getElementsByTagName():根据标签名称获取,返回Element对象数组 getElementsByName():根据name属性值获取,返回Element对象…

zblog列表页面包屑导航的代码 支持显示所有子分类

当前位置:<a href="{$host}">网站首页</a> {if $type==category} {php} $html=; function navcate($id){global $html;$cate = new Category;$cate->LoadInfoByID($id);$html = > <a href=".$cate->Url." title="查看.$cat…

zblog注册插件调用自定义模板的方法

操作步骤安装注册插件:安装官方提供的注册插件。修改插件文件:打开/zb_users/plugin/RegPage/include.php文件。替换模板名称:在第213行,将$article->Template改为自定义模板的名称,例如login。扫码添加技术【解决问题】专注中小企业网站建设、网站安全12年。熟悉各种C…

帝国CMS如何判断当前页面为首页高亮代码

<?php if(empty($GLOBALS[navclassid])){ echo class="active"; } ?>说明:如果当前栏目ID为空,则认为是首页,添加class="active"进行高亮。 特殊情况处理:如果不想在TAG页面和自定义页面也高亮,可以在这些页面顶部定义$GLOBALS[navclassid]为…

开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql

开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql@目录问题描述我的使用场景描述结论本人其他相关文章链接 问题描述开启慢SQL设置long_query_time=0.1为啥会统计的sql却存在小于100毫秒的sql?我的使用场景描述 我采用执行sql修改配置文件,也就是采用…

帝国CMS文章列表页模板动态刷新点击数代码

修改HTML代码:将点击数显示部分修改为:<em class="clickcount" data-class="[!--classid--]" data-id="[!--id--]">[!--onclick--]</em>添加JS代码:在模板页面尾部加入以下JS代码:<script> window.onload = function() {$…

人工智能技术:引领档案馆数字化转型新浪潮,档案专业人士必读(内有产品体验)

获取白皮书或产品体验,文末添加产品经理微信 在这个信息爆炸的时代,档案馆作为知识的宝库,承载着历史的记忆和文化的传承。如何让这些宝贵的信息更容易被检索、管理和利用,是档案管理领域面临的重大挑战。思通数科AI多模态平台,以前沿的人工智能技术,为档案馆的数字化转型…