CSP模拟7

news/2024/10/9 19:14:11

欠的太多了,就少说点吧

T1.median

把数组 \(a,b,c,d,e\) 存到一起,标记类型,然后排序,枚举每个数为中位数,算贡献即可。

点击查看代码
#include<bits/stdc++.h>
using namespace std;#define int long long
const int N=1e5+107;
const int mod=998244353;
int n;struct lmy
{int val,op;int s[6];int h[6];
}a[N*5];bool comp(lmy a,lmy b)
{return a.val<b.val;
}int read()
{int f=1,s=0;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){s=(s<<1)+(s<<3)+(ch^48);ch=getchar();}return f*s;
}int get(int i)
{int x=a[i].op;
//	cout<<x<<endl;int s1=a[i].s[1],s2=a[i].s[2],s3=a[i].s[3],s4=a[i].s[4],s5=a[i].s[5];int h1=a[i].h[1],h2=a[i].h[2],h3=a[i].h[3],h4=a[i].h[4],h5=a[i].h[5];int ans1=(x!=1?0:s2*s3%mod*h4%mod*h5%mod+s2*s4%mod*h3%mod*h5%mod+s2*s5%mod*h3%mod*h4%mod+s3*s4%mod*h2%mod*h5%mod+s3*s5%mod*h2%mod*h4%mod+s4*s5%mod*h2%mod*h3%mod);int ans2=(x!=2?0:s1*s3%mod*h4%mod*h5%mod+s1*s4%mod*h3%mod*h5%mod+s1*s5%mod*h3%mod*h4%mod+s3*s4%mod*h1%mod*h5%mod+s3*s5%mod*h1%mod*h4%mod+s4*s5%mod*h1%mod*h3%mod);int ans3=(x!=3?0:s2*s1%mod*h4%mod*h5%mod+s2*s4%mod*h1%mod*h5%mod+s2*s5%mod*h1%mod*h4%mod+s1*s4%mod*h2%mod*h5%mod+s1*s5%mod*h2%mod*h4%mod+s4*s5%mod*h2%mod*h1%mod);
//	if(a[3].op==x) cout<<s1<<" "<<s2<<" "<<s3<<" "<<s4<<" "<<s5<<endl;					   int ans4=(x!=4?0:s2*s3%mod*h1%mod*h5%mod+s2*s1%mod*h3%mod*h5%mod+s2*s5%mod*h3%mod*h1%mod+s3*s1%mod*h2%mod*h5%mod+s3*s5%mod*h2%mod*h1%mod+s1*s5%mod*h2%mod*h3%mod);int ans5=(x!=5?0:s2*s3%mod*h4%mod*h1%mod+s2*s4%mod*h3%mod*h1%mod+s2*s1%mod*h3%mod*h4%mod+s3*s4%mod*h2%mod*h1%mod+s3*s1%mod*h2%mod*h4%mod+s4*s1%mod*h2%mod*h3%mod);return ans1+ans2+ans3+ans4+ans5;
}signed main()
{freopen("median.in","r",stdin);freopen("median.out","w",stdout);n=read();for(int i=1;i<=5;i++){for(int j=1;j<=n;j++){a[(i-1)*n+j]={read(),i};}}sort(a+1,a+1+n*5,comp);for(int i=1;i<=n*5;i++){for(int j=1;j<=5;j++){a[i].s[j]=a[i-1].s[j]+(a[i].op==j);}}for(int i=n*5;i>=1;i--){for(int j=1;j<=5;j++){a[i].h[j]=a[i+1].h[j]+(a[i].op==j);}}//	for(int i=1;i<=n*5;i++)
//	{
//		cout<<a[i].op<<" ";
//	}cout<<endl;
//	for(int i=1;i<=n*5;i++)
//	{
//		cout<<a[i].val<<" ";
//	}cout<<endl;//	for(int i=1;i<=n*5;i++)
//	{
//		cout<<"------------------\n";
//		cout<<i<<" "<<a[i].val<<" "<<a[i].op<<endl;
//		for(int j=1;j<=5;j++)
//		{
//			cout<<a[i].s[j]<<" ";
//		}cout<<endl;
//		for(int j=1;j<=5;j++)
//		{
//			cout<<a[i].h[j]<<" ";
//		}cout<<endl;
//		cout<<a[i].val*get(i)<<endl;
//	}int ans=0;for(int i=1;i<=n*5;i++){ans=(ans+a[i].val*get(i)%mod)%mod;}printf("%lld",ans);
}

T2.travel

题目看着挺难受,但要求的比较简单,我们只需要判一下环,然后看是否有两个自环相联通,直接 \(dfs\) 一遍即可。

点击查看代码
#include<bits/stdc++.h>
using namespace std;const int N=1e6+107;
int n,m;
int du[N];int read()
{int f=1,s=0;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){s=(s<<1)+(s<<3)+(ch^48);ch=getchar();}return f*s;
}int h[N],to[N],nxt[N],tot;
void add(int x,int y)
{to[++tot]=y;nxt[tot]=h[x];h[x]=tot;
}int dep[N],vis[N],flag[N];
int dfs(int u,int fa)
{dep[u]=1;int ans=vis[u];for(int i=h[u];i;i=nxt[i]){int v=to[i];if(dep[v]) return 2;ans+=dfs(v,u);}dep[u]=0;return ans;
}int main()
{freopen("travel.in","r",stdin);freopen("travel.out","w",stdout);n=read(),m=read();for(int i=1;i<=m;i++){int u=read(),v=read();if(u==v) vis[u]++;else add(u,v);if(vis[u]>=2) return printf("Yes\n"),0;}for(int i=1;i<=n;i++){if(dfs(i,i)>=2) return printf("Yes\n"),0;}printf("No\n");return 0;
}

T3.game

博弈论,结论是,如果是偶数并且两两相互配对则必胜,否则必败。

点击查看代码
#include<bits/stdc++.h>
using namespace std;const int N=5e5+107;
int n,a[N];int read()
{int f=1,s=0;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9'){s=(s<<1)+(s<<3)+(ch^48);ch=getchar();}return f*s;
}int main()
{freopen("game.in","r",stdin);freopen("game.out","w",stdout);int T=read();while(T--){int flag=0;n=read();for(int i=1;i<=n;i++) a[i]=read();sort(a+1,a+1+n);for(int i=1;i<=n;i+=2){if(a[i]!=a[i+1]) {flag=1;break;}}if(!(n&1)&&!flag) printf("No\n");else printf("Yes\n");}}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

『模拟赛』多校A层冲刺NOIP2024模拟赛04

『模拟赛记录』多校A层冲刺NOIP2024模拟赛04Rank 赤石场。A. 02表示法 签。 若干天前在洛谷随到过,不过当时只看了眼讨论区就走了www 还好本来不是很难。 发现大体上是一个拆分二的幂的问题,从大到小枚举 2 的幂,判断有没有这个幂只用比较大小关系,然后再对指数做一个同样的…

实现一个烟花效果

1. 首先创建一个烟花类,有烟花上升的效果,烟花爆炸的两种效果(爆炸型和球型)2. 创建线的属性方法,因为上升效果和爆炸效果都会用到3. 上升效果为了达到那种螺旋上升的效果可以通过sin函数实现一个点的偏移量4. 爆炸效果则是将随机生成多条半径不同的线5. 球形效果则是将规…

【Java】反射

Java中的反射机制 动态代理反射 允许对封装类的字段,方法和构造函数的信息进行编程访问 ==》 反射允许对成员变量,成员方法和构造方法的信息进行编程访问 基本操作:获取(获取class对象【字节码对象】) + 解剖 成员变量 Field —— 修饰符、名字、类型、赋值 构造方法 Cons…

DNShell

DNShell 一款基于DNS C2隧道的反弹shell工具。 支持 功能: 支持DNS-recordA-直连型 的C2隧道。 目标: Windows下基于Powershell的反弹。 Linux下基于ShellScript的反弹。 使用方法

【Redis】Redis学习笔记

概况 redis == remote Dictionary Server (远程字典服务) 基于内存的KV键值对内存数据库 作用:分布式缓存,与MySQL共同配合Redis -- 内存 MySQL -- 磁盘Redis -- NoSQL MySQL -- SQL内存存储 和 持久化(RDB+AOF)Redis支持一部将内存中的数据写入硬盘宕机 -- 可自行恢复高…

基于禁忌搜索算法的VRP问题求解matlab仿真,带GUI界面,可设置参数

1.程序功能描述基于禁忌搜索算法的VRP问题求解matlab仿真,带GUI界面,可设置参数。 2.测试软件版本以及运行结果展示MATLAB2022a版本运行 3.核心程序while COUNT<=Itertions ֲ L = zeros(Ant_Num,1); for i=1:Ant_Num Infor_Tabu_tmps = Infor_Tabu(i,:); R = Inf…

CMake 属性之全局属性

CMake 的全局属性是指在 CMake 配置过程中,对整个项目范围生效的设置。这些属性不同于目标 ( Target ) 属性或目录 ( Directory ) 属性,后者仅对特定的目标或目录生效。【写在前面】 CMake 的全局属性是指在 CMake 配置过程中,对整个项目范围生效的设置。 这些属性不同于目标…

自然人信息社工

人,是网络安全全流程中最大的弱点。针对人的攻击往往有出奇不意的效果。而想要利用人的弱点进行攻击,那么对目标的信息收集与了解就是非常重要的了。这篇文章记录了一些常用的用于对人进行身份信息收集的技术。这些技术常被用于溯源取证、社工攻击。 0x00 社工分析中的身份信…