AC修炼计划(AtCoder Regular Contest 167)
传送门:AtCoder Regular Contest 167 - AtCoder
再次感谢樱雪喵大佬的题解,讲的很详细,Orz。
大佬的博客链接如下:Atcoder Regular Contest 167 - 樱雪喵 - 博客园 (cnblogs.com)
第一题很签到,就省略掉了。
第二题其实也不算难,要想清楚因子之间的关系(可是本人没长脑子被卡了俩小时)。通过分解质因数来得出最后的数有多少个因子,然后两两匹配,如果因子个数是奇数,说明存在完全平方数因子的情况,于是单独计算出这样的贡献。
代码如下:
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<int,int> PII;
const int N=998244353;
const int MX=0x3f3f3f3f3f3f3f3f;
// void read(__int128 &x)
// {
// x=0;
// int f=1;
// char ch;
// if((ch=getchar())=='-')
// f=-f;
// else
// x=x*10+ch-'0';// while((ch=getchar())>='0'&&ch<='9')
// x=x*10+ch-'0';
// x*=f;
// }
// void print(__int128 x){// if(x<0){
// putchar('-');
// x=-x;
// }
// if(x>9)
// print(x/10);// putchar(x%10+'0');
// }
int n,m;
int an;
int su[1000005];
bool c[1000005];void suu(int x){for(int i=2;i<=x;i++){if(!c[i])su[++an]=i;for(int j=1;j<=an&&su[j]*i<=x;j++){c[su[j]*i]=1;if(i%su[j]==0)break;}}
}
int kuai(int a,int b){int ans=1;while(b){if(b&1)ans=ans*a%N;b>>=1;a=a*a%N;}return ans%N;
}
void icealsoheat(){cin>>n>>m;int bn=n;if(m==0){cout<<0;return;}vector<PII>ve;for(int i=1;i<=an&&su[i]<=sqrt(n);i++){if(n%su[i]==0){ve.push_back({su[i],0});while(n>1&&n%su[i]==0){ve.back().second++;n/=su[i];}}}if(n>1){ve.push_back({n,1});}int sum=1;int cnt=0;for(auto [i,j]:ve){if(m%2==1&&j%2==1)cnt=1;sum=sum*(m%N*j%N+1ll)%N;}int ans=0;// ans=sum*kuai(2ll,N-2)%N*(m%N)%N;// // if(cnt==0)ans=(ans+m/2)%N;// if(cnt==0){// ans=((ans-1)%N+N)%N;// ans=ans=(ans+m/2)%N;// }if(cnt==0){sum=((sum-1)%N+N)%N;}ans=sum*kuai(2ll,N-2)%N*(m%N)%N;if(cnt==0)ans=(ans+m/2)%N;cout<<ans;}
signed main(){ios::sync_with_stdio(false);cin.tie();cout.tie();suu(1000000);int _;_=1;// cin>>_;while(_--){icealsoheat();}
}
C - MST on Line++

c,写着题的时候真的很想骂娘。没想到要在限制下标并且在各种顺序的情况下,还得考虑最小生成树的贡献。。。。。。。脑子快炸了,看大佬的代码,好不容易才磕出来。同时也学到了一种新思路。首先,计算这种排列组合题,一般都会想到求出每一个值对答案的贡献,然后相加。在用kruskal算法求最小生成树的时候,我们发现我们只用考虑边全值的大小,对其优先排列。那我们只要求出每一个Ai对应的有几个边的长度就好了。因为我们需要求的是最小值,所以,尽可能的让所有数小才是最优的,按照数值顺序来说,相邻的会尽可能的小。这里看Atcoder Regular Contest 167 - 樱雪喵 - 博客园 (cnblogs.com)
佬的博客吧,解释的特别清楚。
代码如下:
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<int,int> PII;
const int N=998244353;
const int MX=0x3f3f3f3f3f3f3f3f;
int n,k;
int an;
int a[500005];
int c[5005][5005];
int f[500005];
int be[500005];
void init(int mx)
{for(int i=0;i<=mx;i++)for(int j=0;j<=i;j++) c[i][j]=j?(c[i-1][j-1]+c[i-1][j])%N:1;
}
void icealsoheat(){cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i];}sort(a+1,a+1+n);be[0]=1;for(int i=1;i<=n;i++){be[i]=be[i-1]*i%N;}for(int i=1;i<=n;i++){for(int j=1;j<=k;j++){f[i]=(f[i]+(i-1)*c[n-j][i-1]%N)%N;}f[i]=be[i]*be[n-i]%N*f[i]%N;}int ans=0;for(int i=1;i<=n;i++){ans=(ans+((f[i]-f[i-1])%N+N)%N*a[i]%N)%N;}cout<<ans;}
signed main(){ios::sync_with_stdio(false);cin.tie();cout.tie();int _;_=1;init(5000);// cin>>_;while(_--){icealsoheat();}
}
D - Good Permutation

这道题最开始我是用优先队列来维护的,因为我们要找在改变次数最小的基础上,要求词序也要最小。我们不妨把所有的序列都涂上各自的颜色,看看有几种颜色,然后每个都取最小的那个,进行不断的替换。但出现了问题。因为存在会误删一些边和点的情况。
后来看了佬的思路,感觉很奇妙,通过并查集来找所有所有的环,然后用set去维护这个环的最小值,如果当前的最小值小于后面环的最小值的话,就替换并且将两个环合并。否则我们不希望字典序变大,尽量不换。但如果这是它所在连通块的最后一个位置,必须要换,那就找后面最小的环值来替换这个值。
代码如下:
#include<bits/stdc++.h>
using namespace std;
#define int long long
typedef long long ll;
typedef pair<int,int> PII;
const int N=998244353;
const int MX=0x3f3f3f3f3f3f3f3f;
int n,k;
int an;
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
int col,tot,top,num;
// int co[200010];
// int dfn[200010];
// int low[200010];
// int a[200010];
int b[200005];
int pre[200005];
int fa[200005];
int c[200005];
int siz[200005];
int mn[200005];
set<PII>q;
int find(int x){if(fa[x]==x)return x;return fa[x]=find(fa[x]);
}
void icealsoheat(){cin>>n;q.clear();for(int i=1;i<=n;i++){cin>>b[i];pre[b[i]]=i;fa[i]=i;siz[i]=1;mn[i]=i;q.insert({i,i});}auto add=[&](int x,int y)->void{x=find(x);y=find(y);if(x==y)return;q.erase({mn[x],x});q.erase({mn[y],y});fa[x]=y;siz[y]+=siz[x];mn[y]=min(mn[x],mn[y]);q.insert({mn[y],y});};for(int i=1;i<=n;i++){add(i,b[i]);}// for(int i=1;i<=n;i++){// cout<<fa[i]<<"+++\n";// cout<<mn[fa[i]]<<"---\n";// cout<<pre[b[fa[i]]]<<"\n";// }for(int i=1;i<=n;i++){if(q.size()==1)break;auto it=q.begin();if(find(it->second)==find(i))it++;if(it->first<b[i]||siz[find(i)]==1){int j=pre[it->first];// cout<<i<<":"<<j<<"\n";swap(b[j],b[i]);swap(pre[b[j]],pre[b[i]]);add(i,j);}siz[find(i)]--;}for(int i=1;i<=n;i++)cout<<b[i]<<" ";cout<<"\n";
}
signed main(){ios::sync_with_stdio(false);cin.tie();cout.tie();int _;_=1;cin>>_;while(_--){icealsoheat();}
}
相关文章:
AC修炼计划(AtCoder Regular Contest 167)
传送门:AtCoder Regular Contest 167 - AtCoder 再次感谢樱雪喵大佬的题解,讲的很详细,Orz。 大佬的博客链接如下:Atcoder Regular Contest 167 - 樱雪喵 - 博客园 (cnblogs.com) 第一题很签到,就省略掉了。 第二题…...
暄桐四阶课程「自在行草」学习装备指南
在2011年,暄桐成立的最初,课程便是面向零基础的成年人设计的。在十余年的教学实践中,暄桐教室为同学们提供了一种系统、有趣、扎实,并可持续进阶的学习可能。许多同学都是在来到暄桐以后,才第一次拿起毛笔,…...
vue3 列表页开发【选择展示列】功能
目录 背景描述: 开发流程: 详细开发流程: 总结: 背景描述: 这个功能是基于之前写的 封装列表页 的功能继续写的,加了一个选择展示列的功能,可以随时控制表格里展示那些列的数据…...
uniapp——自定义组件插槽及使用
案例样式 自定义组件pageBox.vue <template><view><view class"bgColor" :style"{ height: bgHeight rpx }"></view><view class"main"><!-- 主要内容放这里 --><slot></slot></view>&…...
微信native-v3版支付对接流程及demo
1.将p12证书转为pem证书,得到商户私钥 openssl pkcs12 -in apiclient_cert.p12 -out apiclient_cert.pem -nodes 密码是:商户id 2.将获取到的apiclient_cert.pem证书,复制出这一块内容,其他的不要 3.下载这个工具包 https://gi…...
租用服务器后需要注意什么
租用服务器后需要注意什么 1、从IDC服务商中接收到服务器时,需要对服务器的各项性能进行测试确认,并做好记录以便对服务器的性能做到心中有数。 2、在服务器租用交接时,要了解服务器的安全设置情况,对服务器安全技术方面不了解的…...
【公众号开发】图像文字识别 · 模板消息推送 · 素材管理 · 带参数二维码的生成与事件的处理
【公众号开发】(4) 文章目录 【公众号开发】(4)1. 图像文字识别功能1.1 百度AI图像文字识别接口申请1.2 查看文档学习如何调用百度AI1.3 程序开发1.3.1 导入依赖:1.3.2 公众号发来post请求格式1.3.3 对image类型的消息…...
Linux---(三)基本指令大全
前提引入:历史上先出现的键盘还是鼠标? 答案:键盘 ✨所以刚开始的时候绝对没有图形化界面,因此操作系统刚开始兴起的时候绝对没有图形化界面,因为当时没有鼠标。 ✨因为没有图形化界面,只有键盘,…...
基于selenium的pyse自动化测试框架
介绍: pyse基于selenium(webdriver)进行了简单的二次封装,比selenium所提供的方法操作更简洁。 特点: 默认使用CSS定位,同时支持多种定位方法(id\name\class\link_text\xpath\css)…...
【微服务 SpringCloudAlibaba】实用篇 · Nacos注册中心
微服务(5) 文章目录 微服务(5)1. 认识和安装Nacos2. 服务注册到nacos和拉取服务1)引入依赖2)配置nacos地址3)重启 3. 服务分级存储模型3.1 给user-service配置集群3.2 同集群优先的负载均衡 4. …...
华为手机安卓扫描安装包apk在哪
1、在文件管理器里找,有的安装包没有搜索到2、在应用市场-我的-安装包管理,它会扫描整个手机,推荐...
IDEA 新版本设置菜单展开
使用了新版本的IDEA 新UI后,常用的file,view,菜单看不见了,不太适应,找了一下,有个配置可以修改。 打开settings里面把show main menu in a separate toolbar勾选上,应用保存就可以了...
Leetcode 350:两个数组的交集II
给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。 示例 1…...
【数据结构】队列的实现与优化指南
一、前言 队列是一种重要的数据结构,它按照“先入先出”(FIFO)的原则管理数据。本文将介绍队列的概念、应用场景,以及如何使用数组实现普通队列和环形队列。 二、内容 2.1 概述 (1)什么是队列࿱…...
视频太大怎么压缩变小?三分钟学会视频压缩
随着科技的不断发展,视频已经成为了我们日常生活中不可或缺的一部分,然而,大尺寸的视频文件常常会给我们带来诸多困扰,例如发送不便、存储空间不足等等,那么,如何将这些过大的视频文件压缩变小呢࿱…...
Rust 泛型
泛型 Generics泛型详解 使用泛型参数,有一个先决条件,必需在使用前对其进行声明: fn largest<T>(list: &[T]) -> T {该泛型函数的作用是从列表中找出最大的值,其中列表中的元素类型为 T。首先 largest<T> 对…...
STM32+2.9inch微雪墨水屏(电子纸)实现显示
本篇文章从硬件原理以及嵌入式编程等角度完整的介绍了墨水屏驱动过程,本例涉及的墨水屏为2.9inch e-Paper V2,它采用的是“微胶囊电泳显示”技术进行图像显示,其基本原理是悬浮在液体中的带电纳米粒子受到电场作用而产生迁移,从而改变显示屏各…...
Hadoop3教程(二十九):(生产调优篇)集群扩容及缩容(白名单与黑名单)
文章目录 (150)添加白名单(151)服役新服务器(152)服务器间数据均衡(153)黑名单退役服务器参考文献 这一章还算是比较重要的。 (150)添加白名单 白名单&#…...
NET7下用WebSocket做简易聊天室
NET7下用WebSocket做简易聊天室 步骤: 建立NET7的MVC视图模型控制器项目创建websocket之间通信的JSON字符串对应的实体类一个房间用同一个Websocketwebsocket集合类,N个房间创建websocket中间件代码Program.cs中的核心代码,使用Websocket聊…...
详解API基础知识
目录 什么是API: API 的设计原则包括: API 的开发流程包括以下几个步骤: API 的使用场景包括: API 的优势包括: 然而,API 也存在一些挑战和问题,例如: 什么是API: API(应用程…...
MPNet:旋转机械轻量化故障诊断模型详解python代码复现
目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...
label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
视频字幕质量评估的大规模细粒度基准
大家读完觉得有帮助记得关注和点赞!!! 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用,因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型(VLMs)在字幕生成方面…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)
UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化…...
