当前位置: 首页 > news >正文

2025 -- 云智计划 -- 【CSP-S】模拟赛 #6_总结+题解

总结

T1

场上很快就想出来,并且把它做掉了。没有问题。

T2

场上推了一会儿式子,发觉按照长度分类会更简单,于是就很快的把它且掉了,没有问题。

T3

场上想到了一个非常暴力的做法,但是要求最大团,现学了一个贪心的做法。结果最后发现人不需要用最大团。(悲)

题解

T1

不难发觉,如果说我要让每一个字段都拥有当前这个数的话,那么任意两个数之间的间隔不能超过 \(m-1\)。枚举每个数,然后再看它中间是否隔了超过 \(m-1\),如果是输出这个数即可。

代码

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f3f3f3f3f
#define int long long
#define endl '\n'
using namespace std;
const long long maxn=2e5+5;
int a[maxn];
vector<int> v[maxn];
signed main()
{freopen("mex.in","r",stdin);freopen("mex.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);int n,m;cin>>n>>m;for(int i=0;i<maxn;i++) v[i].push_back(0);for(int i=1;i<=n;i++) cin>>a[i],v[a[i]].push_back(i);for(int i=0;i<maxn;i++) v[i].push_back(n+1);int f=-1;for(int i=0;i<maxn;i++){for(int j=1;j<v[i].size();j++){if(v[i][j]-v[i][j-1]>m){f=i;break;}}if(f!=-1){cout<<f;return 0;}}return 0;
}

T2

我们会发现,如果说。长度大于等于三,那么我们如果去枚举,会发现它的枚举的量非常小。于是我们长度大于等于三的我们就去枚举。而小于三的情况只有一个二和一的情况,这个是很好做的。

我们可以解二次函数取二分。如果说\(mid\times (mid+1)\)恰好等于 \(n\) 的话。就有姐,如果无解输出两个 \(n\)

代码

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f3f3f3f3f
#define int long long
#define endl '\n'
using namespace std;
const long long maxn=2e5+5;
map<int,pair<int,int> > ans;
void init()
{for(int l=1;l<=15000000;l++){int sum=l*(l+1);for(int r=l+2;;r++){sum/=__gcd(sum,r);if(sum>1e18/r) break;sum*=r;if(ans.find(sum)==ans.end()) ans[sum]={l,r};}}
}
signed main()
{freopen("operation.in","r",stdin);freopen("operation.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);init();int t;cin>>t;while(t--){int n;cin>>n;if(ans.find(n)!=ans.end()){cout<<ans[n].first<<' '<<ans[n].second<<endl;continue;}int l=1,r=n,ans=-1;while(l<=r){int mid=(l+r)>>1;int x=n%mid,y=n/mid;if(y==mid+1&&!x){ans=mid;break;}else if(y>=mid+1) l=mid+1;else r=mid-1;}if(ans!=-1) cout<<ans<<' '<<ans+1<<endl;else cout<<n<<' '<<n<<endl;}return 0;
}

T3

我们一开始会去想最的团。但是我们只能用贪心去求,不难发现贪心求最大团不一定能求得出来。

不难发现,题目里面最大团一定很小。因为题目里面写了:边数一定小于K。

于是我们就有了一个比较暴力的做法。

我们去枚举每一个点。每个点和它相邻的点,我们去考虑二进制枚举。如果当前枚举的情况符合条件,那么加入答案中就可以了。

优化比较简单,弄一个标记数组就可以了。这样子可以保证每一个点都只来一次。

时间复杂度 \(O(nk2^k)\)

代码

#include<bits/stdc++.h>
#define inf 0x3f3f3f3f3f3f3f3f
#define int long long
#define endl '\n'
using namespace std;
const int maxn=1e6+5;
set<int> g[maxn];
int in[maxn],vis[maxn],ans,f[maxn];
void solve(vector<int> v)
{int n=v.size();for(int i=0;i<n;i++){f[i]=0;for(int j=0;j<n;j++) if(i==j||g[v[i]].find(v[j])!=g[v[i]].end()) f[i]|=(1<<j);}for(int i=1;i<(1<<n);i++){int flag=1;for(int j=0;j<n;j++)if(((i>>j)&1)==1&&(f[j]&i)!=i){flag=0;break;}if(flag) ans=max(ans,(int)__builtin_popcount(i));}
}
signed main()
{freopen("world.in","r",stdin);freopen("world.out","w",stdout);ios::sync_with_stdio(0);cin.tie(0); cout.tie(0);int n,k;cin>>n>>k;set<pair<int,int> > s;for(int i=0;i<n;i++){int x;cin>>x;in[i]=x;for(int j=0;j<x;j++){int tmp;cin>>tmp;g[i].insert(tmp);}s.insert({in[i],i});}while(!s.empty()){int now=s.begin()->second;s.erase(s.begin());vis[now]=1;vector<int> v;v.push_back(now);for(auto to:g[now]) if(!vis[to]) v.push_back(to);solve(v);for(auto to:g[now]) if(!vis[to]) s.erase({in[to],to}),s.insert({--in[to],to});}cout<<ans;return 0;
}
http://www.sczhlp.com/news/3441/

相关文章:

  • MySQL主从倒换常见问题及构造手段
  • [FZYZOJ6734] 树上LCM
  • Cradle:颠覆AI Agent 操作本地软件,AI驱动的通用计算机控制框架,如何让基础模型像人一样操作你的电脑?
  • 哪个有针对于Vista,Win7,Win10,Win11的AMD PCNET Family Ethernet Adapter (PCI)虚拟机网卡驱动
  • 8月1号
  • GSPO:Qwen让大模型强化学习训练告别崩溃,解决序列级强化学习中的稳定性问题
  • GitHub 开源爆款工具|MediaCrawler:程序员零门槛采集抖音/小红书/B站等社交评论,30K star 背后的场景实战揭秘!
  • AI 调酒师上岗!接管酒吧吧台
  • 洛谷 P2024 拓展域并查集
  • 基于 Rust 和土木工程、设备故障诊断、混凝土养护、GPS追踪、供应链物流跟踪系统、地下水监测等领域的实例 - 详解
  • 1.3 操作系统
  • AI HR重磅奖项发布!易路接连斩获思旗奖及人力资源AI企业25强
  • [COCI 2023/2024 #2] Dizalo
  • 表级锁-间隙锁/临键锁 - Charlie
  • 8月1日总结
  • Nuxt3项目中引用nuxt-swiper时,slideTo方法失效?
  • C语言中死锁的产生原因及预防
  • 英语背单词 专八词汇 中英对照 2025年08月
  • [特殊字符] 数字孪生 + 数据可视化:实战经验分享,让物理世界素材 “会说话”
  • 对象存储 RustFS 用户的删除和创建
  • JavaScript
  • cs106l assignment 2025spring
  • CodeGeeX体验GLM4.5模型与实践
  • 【自学嵌入式:51单片机】用UART串口通信和矩阵按键实现快速打开win系统中的一些程序
  • CEC协议_1_cecMsg数据帧是如何定义的?
  • Doris 性能优化
  • 惊艳!GitHub 开发者一键接入!4.2k star 项目 Champ,用一张照片秒变动画
  • CH395调试与使用
  • 免费,Qwen3-Coder不限量!
  • ModelGate 支持 Claude Code,一键设置 A编程助手,开发效率极速提升!