Perfect square number 2023“钉耙编程”中国大学生算法设计超级联赛(6)hdu7341

news/2025/1/15 8:35:09/

Problem - 7341

题目大意:给出一个数组a,要将一个数修改成[1,300]内的任意一个数,问区间和是完全平方数的区间最多有多少个

1<=n<=300;1<=ai<=300

思路:因为n的范围是300,所以我们可以遍历每一个数,用前缀和维护区间和,统计对于每一个包含这个数的区间,将它修改成哪些数,能够使当前区间的区间和变成完全平方数,那么变成的这个数的贡献就+1,修改后区间和的范围即为[sum[r]-sum[l-1]-a[i]+1,sum[r]-sum[l-1]-s[i]+300]

对于不包含这个数的区间,其区间和如果是完全平方数就贡献+1,遍历完所有区间后,统计每个位置

#include<bits/stdc++.h>
//#include<__msvc_all_public_headers.hpp>
using namespace std;
typedef long long ll;
const int N = 305;
const ll MOD = 998244353;
int a[N];
int sum[N];
void solve()
{int n;cin >> n;for (int i = 1; i <= n; i++){cin >> a[i];sum[i] = sum[i - 1] + a[i];//用前缀和维护区间和}int ans = 0;for (int i = 1; i <= n; i++){vector<int>cnt(305);int cnt2 = 0;for (int j = 1; j <= n; j++){for (int k = j; k <= n; k++){//遍历所有区间if (j <= i && k >= i){int su = sum[k] - sum[j - 1];int mi = su - a[i] + 1;//这个位置修改后能产生的区间和的最小值int ma = su - a[i] + 300;//这个位置修改后能产生的区间和的最大值int x = sqrtl(mi);if (x * x != mi){//找到最小的能被修改成的完全平方数x++;}int y = sqrtl(ma);//最大的能被修改成的完全平方数for (int l = x; l <= y; l++){cnt[l * l - mi+1]++;//修改成哪些数能使和变成完全平方数}}else{int su = sum[k] - sum[j - 1];int x = sqrtl(su);//对于其他区间,直接判断和是否唯完全平方数int flag = 0;for (int temp = x - 5; temp <= x + 5; temp++){//避免sqrt精度丢失if (temp * temp == su){flag = 1;break;}}cnt2 += flag;}                }}int cnt1 = 0;for (int j = 1; j <= 300; j++){//每个位置修改成哪个数贡献最大cnt1 = max(cnt1, cnt[j]);}ans = max(ans, cnt1 + cnt2);}cout << ans << endl;
}
int main()
{ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);int t;cin >> t;while (t--){solve();}return 0;
}

的贡献,维护答案的最大值


http://www.ppmy.cn/news/1006532.html

相关文章

linux安装Java11,maven,docker,mysql,rabbitmq,nacos,redis,es一条龙服务

1 安装jdk11 # 第一步&#xff1a;上传或下载安装包 cd /usr/local jdk-11.0.9_linux-x64_bin.tar.gz# 第二步&#xff1a;解压安装包 tar -xzvf jdk-11.0.9_linux-x64_bin.tar.gz# 第三步&#xff1a;修改环境变量 vim /etc/profile#在末尾加入 JAVA_HOME/usr/local/jdk-11.…

Maven中Servlet的坐标为什么要添加<scope>provided</scope>

Maven中Servlet的坐标 在Maven中&#xff0c;我们使用坐标&#xff08;Coordinates&#xff09;来唯一标识一个依赖库。对于Servlet&#xff0c;其坐标通常是指定servlet-api包。在使用Servlet时&#xff0c;我们需要将其添加到项目的依赖中&#xff0c;以便在编译、运行和测试…

如何维护你的电脑:打造IT人的重要武器

文章目录 方向一&#xff1a;介绍我的电脑方向二&#xff1a;介绍我的日常维护措施1. 定期清理和优化2. 保持良好的上网习惯和安全防护3. 合理安排软件和硬件的使用4. 数据备份和系统还原 方向三&#xff1a;推荐的维护技巧1. 数据分区和多系统安装2. 内部清洁和散热优化3. 安全…

Grafana集成prometheus(2.Grafana安装)

查找镜像 docker search grafana下载指定版本 docker pull grafana/grafana:10.0.1启动容器脚本 docker run -d -p 3000:3000 --namegrafana grafana/grafana:10.0.1查看是否启动 docker ps防火墙开启 检查防火墙3000端口是否开启 默认用户及密码 admin/admin 登录 ht…

AI介绍——chat gpt/文心一言/claude/bard/星火大模型/bing AI

AI体验 1. AI 介绍&#xff08;注册和使用&#xff09;1.1 Chat GPT1.2 文心一言1.3 Slack 上的 Claude1.3.1 Claude 介绍1.3.2 Claude 使用 1.4 Google的Bard1.4.1 Bard 介绍1.4.2 Bard 使用 1.5 科大讯飞的星火大模型1.5.1 星火大模型 介绍1.5.2 星火大模型 使用 1.6 new bin…

FDM3D打印系列——超可动可变形机体打印

大家好&#xff0c;我是阿赵。继续来分享一下3D打印的成果。   这次打印的对象不得了&#xff0c;是超时空要塞系列的可变形VF战机。打印完这个模型&#xff0c;绝对是学习到了很多的东西&#xff0c;下面给大家分享一下。 一、成果展示&#xff1a; 不要怀疑&#xff0c;不…

WS-DAN apply in CUB-200-2011

摘要 本文复现了WS-DAN&#xff08;Weakly Supervised Data Augmentation Network&#xff09;在CUB-200-2011上的运行效果&#xff0c;测试集准确率达到了论文&#xff08;See Better Before Looking Closer: Weakly Supervised Data Augmentation Network for Fine-Grained …

OPENCV C++(五)滤波函数+sobel边缘检测+人脸磨皮mask

滤波函数 中值滤波 medianBlur(frame, detectmat, 5); 平均滤波 blur(frame, detectmat, Size(5, 5)); 高斯滤波&#xff08;最后一个是方差 越大越模糊&#xff09; GaussianBlur(frame, detectmat, Size(5, 5),0); sobel的边缘检测函数 Sobel(gray, dx, CV_16S, 1, 0, 3…