梦熊十三连测第二场题解
T1
手动模拟一下过程可以发现:
- 若
为奇数,答案为 。 - 若
为偶数,答案为 。
时间复杂度
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e6+10;
int n;
int a[N];
int b[N];
signed main(){
freopen("reverse.in","r",stdin);
freopen("reverse.ans","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
int cnt=0;
for(int i=n,j=1;i>(n%2==1?-1:0);i-=2,j++){
b[j]=a[i];
if(i!=1)b[n-j+1]=a[i-1];
}
for(int i=1;i<=n;i++)cout<<b[i]<<" ";
return 0;
}
T2
如果一条边不在图中一棵最小生成树中,那么加入一条新边之后的新图中也可以不用考虑这条边了。(考虑kruskal将边排序的过程)
对原图使用 prim 求出最小生成树的
时间复杂度
T3
若
那么交换
则对于
设
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=3e5+10,mod=998244353;
int n,T;
struct node{
int pos,val;
}a[N],b[N];
bool cmp(node x,node y){
return x.val<y.val;
}
int ans;
int sum;
int id;
int vis[N];
int dfncnt;
int dfn[N],fa[N];
int stc[N];
int tp;
vector < int > edge[N],ring[N];
void dfs(int x){
dfn[x]=++dfncnt;
for(auto v :edge[x]){
if(v==fa[x])continue;
if(!dfn[v]){
fa[v]=x;
dfs(v);
}
else if(dfn[v] > dfn[x]){
int tmp=v;
id++;
while(tmp!=fa[x]){
vis[tmp]=1;
ring[id].push_back(tmp);
tmp=fa[tmp];
}
}
}
}
signed main(){
freopen("sequence.in","r",stdin);
freopen("sequence.ans","w",stdout);
cin>>n>>T;
for(int i=1;i<=n;i++)a[i].pos=i,b[i].pos=i;
for(int i=1;i<=n;i++)cin>>a[i].val;
for(int i=1;i<=n;i++)cin>>b[i].val;
sort(a+1,a+1+n,cmp);
sort(b+1,b+1+n,cmp);
for(int i=1;i<=n;i++){
edge[a[i].pos].push_back(b[i].pos);
edge[b[i].pos].push_back(a[i].pos);
sum+=(((a[i].val-b[i].val)%mod)*((a[i].val-b[i].val)%mod))%mod;
}
sum%=mod;
for(int i=1;i<=n;i++){
if(!dfn[i]){
dfs(i);
}
}
for(int i=1;i<=id;i++){
ans+=ring[i].size()-1;
}
cout<<sum;
if(T==1)cout<<' '<<ans<<'\n';
//fclose(stdin);
//fclose(stdout);
return 0;
}
T4
枚举方阵的大小为
一个合法的方阵也一定可以由一组
但是
令
此时
将
容斥求得答案为
最后对所有可能的
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂
· 凌晨三点救火实录:Java内存泄漏的七个神坑,你至少踩过三个!