noip模拟14

news/2024/11/16 17:51:27/文章来源:https://www.cnblogs.com/ccjjxx/p/18549600

A 字符串构造机

怎么是原啊。。原我还没找。

然后考完找打发现上次场切了,这次没有。。。

就是并查集连边,考虑限制条件有两种,一定相等和一定不相等。维护一下。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
int n,m;
const int N=1e3+3;
struct op{int x,y,z;
}a[N];
int f[N];
int find(int x)
{if(x!=f[x]) return f[x]=find(f[x]);return x;
}
int num[N],ans[N];
inline bool cmp(op x,op y)
{if(x.x==y.x) return x.y<y.y;return x.x<y.x;
}
struct node{int a,b;
}anti[N];
int cnt;
int dis[N][N],cnt1[N];
bool ck[N][N];
signed main()
{freopen("str.in","r",stdin);freopen("str.out","w",stdout);cin>>n>>m;for(int i=1;i<=n;i++) f[i]=i,ans[i]=-1;for(int i=1;i<=m;i++){int x,y,z;cin>>x>>y>>z;if(y<x) swap(x,y);for(int j=0;j<z;j++) f[find(y+j)]=f[find(x+j)];if(y+z<=n)anti[++cnt].a=x+z,anti[cnt].b=y+z;}for(int i=1;i<=cnt;i++){int u=find(anti[i].a),v=find(anti[i].b);if(u==v) return cout<<"-1",0;if(!ck[u][v]) dis[u][++cnt1[u]]=v,dis[v][++cnt1[v]]=u;ck[u][v]=1;}for(int i=1;i<=n;i++){int pre=find(i);if(ans[pre]!=-1){ans[i]=ans[pre];}else{int now=0;unordered_map<int,bool>mp{};for(int j=1;j<=cnt1[pre];j++) mp[ans[dis[pre][j]]]=1;while(mp[now])++now;ans[i]=ans[pre]=now;}}for(int i=1;i<=n;i++) cout<<ans[i]<<" ";return 0;
}

B 忍者小队

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=6e5+10,M=3e5;
int n,m,cnt[N],mn[N],mx[N],g[N];
int p[N],tot,vis[N],mu[N];
signed main()
{freopen("sor.in","r",stdin);freopen("sor.out","w",stdout);ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);mu[1]=1;for(int i=2;i<=M;i++){if(!vis[i]) p[++tot]=i,mu[i]=-1;for(int j=1;j<=tot&&p[j]*i<=M;j++){vis[p[j]*i]=1;if(i%p[j]==0) break;mu[i*p[j]]=-mu[i];}}cin>>n>>m;for(int i=1,x;i<=n;i++) cin>>x,cnt[x]++;memset(mn,0x3f,sizeof(mn));for(int i=1;i<=M;i++) for(int j=i;j<=M;j+=i) mx[i]+=cnt[j];for(int i=M;i;i--){if(cnt[i]){mn[i]=1;continue;}for(int j=1;i*j<=M;j++) g[j]=0;for(int j=1;i*j<=M;j++)for(int k=j;i*k<=M;k+=j)g[k]+=mx[i*j]*mu[j];for(int j=2;i*j<=M;j++)if(g[j]) mn[i]=min(mn[i],mn[i*j]+1);}for(int i=1;i<=m;i++)if(mn[i]>1e9) cout<<"-1 -1\n";else cout<<mn[i]<<" "<<mx[i]<<"\n";return 0;
}

C 狗卡

考虑怎么最小。

结论是当选到第 \(i\) 个的某个连续序列,当且仅当这一段的平均数最小,每次扔到优先队列里头搞就行。

然后第一个包用按 \(a\) 排序的优先队列。

点击查看代码
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=6e5+5;
int n,m;
int k[N],*a[N];
inline int read()
{register int s=0;register char c=getchar();while(c<'0'||c>'9') c=getchar();while(c>='0'&&c<='9') s=(s<<1)+(s<<3)+(c^48),c=getchar();return s;
}
int cnt[N];
struct node{double so;int i,l,r;bool operator<(const node&ll) const{return so>ll.so;}
};
priority_queue<node>q;
signed main()
{freopen("dog.in","r",stdin);freopen("dog.out","w",stdout);n=read(),m=read();bool _=1;for(int i=1;i<=n;i++){k[i]=read();a[i]=new int [k[i]+2];int pos=0,sum=0;double mi=1e9;for(int j=1;j<=k[i];j++) {a[i][j]=read();if(j>1) _&=(a[i][j]>=a[i][j-1]);sum+=a[i][j];if(sum<mi*j) mi=1.0*sum/j,pos=j;}q.push({mi,i,1,pos});}if(_){priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >q{};for(int i=1;i<=n;i++) q.push({a[i][1],i});int tim=0,now=0;int ans=0;while(!q.empty()){int pos=q.top().second;int val=q.top().first;q.pop();ans+=now*(val-1),tim+=val; now++;ans+=now;if(cnt[pos]<k[pos]-1) q.push({a[pos][cnt[pos]+2],pos});cnt[pos]++;}ans=ans+(m-tim-1)*now;return cout<<ans,0;}int tim=0,v=0;int ans=0;while(!q.empty()){node now=q.top();
//		cout<<pos<<" "<<val<<"\n";q.pop();for(int i=now.l;i<=now.r;i++){ans+=v*a[now.i][i];tim+=a[now.i][i];++v;}int pos=0,sum=0;double mi=1e9;for(int j=now.r+1;j<=k[now.i];j++) {sum+=a[now.i][j];if(sum<mi*(j-now.r)) mi=1.0*sum/(j-now.r),pos=j;}if(now.r+1<=k[now.i])q.push({mi,now.i,now.r+1,pos});}ans=ans+(m-tim)*v;cout<<ans;
}

D 怪盗德基

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大模型应用开发基础 : 语言模型的重要里程碑

本文快速复习了基于统计的语言模型的基本玩法,然后介绍了语言模型发展过程中的三个重要里程碑:神经概率语言模型、词向量模型 和 预训练模型。基于这几个里程碑的发展,开启了NLP处理的新纪元,我们可以基于经过预训练的大模型进行微调,进而处理我们自己业务领域的实际问题。…

第七章 事务

事务是应用程序将多个读写操作组合成一个逻辑单元的一种方式 从概念上讲,事务中的所有读写操作被视作单个操作来执行:整个事务要么成功(提交(commit))要么失败(中止(abort),回滚(rollback))。如果失败,应用程序可以安全地重试。 并不是所有的应用都需要事务,有时…

AI摧毁很多岗位,也会诞生很多新的岗位,如小乔陪玩

未来5年随着AI革命带来的全球生产效率的提升,将会继续摧毁大量的就业岗位,那么新的产业形态必须来临,那就是情绪价值电商带来的就业,一种新型服务业,国家也会全面支持 情绪价值的提供,线下玩伴,是满足人类基因上的陪伴基因应运而生的项目.真的是一个不错的赛道,对于像我们…

甘特图

甘特图(Gantt chart)又称为横道图、条状图(Bar chart),通过条状图来显示项目、进度和其他时间相关的系统进展的内在关系随着时间进展的情况。

江苏科技大学大二《数据结构》课内实验报告模板答案

江苏科技大学 《数据结构》实验报告 (2024/2025学年第1学期) 学生姓名: 学生学号: 院 系: 计算机学院 专 业: 考核得分: 2024 年 12 月 实验一 线性表的操作 一、实验目的 掌握线性表的基本操作在存储结构上的实现,其中以单链表的操作作为重点。 …

20222315 2024-2025-1 《网络与系统攻防技术》实验六实验报告

1、实验内容 本实践目标是掌握metasploit的用法。 指导书参考Rapid7官网的指导教程。 https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/ 下载官方靶机Metasploitable2,完成下面实验内容。 (1)前期渗透 ①主机发现(可用Aux中的arp_sweep,search…

20222315 2024-2025-1 《网络与系统攻防实验六实验》实验六实验报告

1、实验内容 本实践目标是掌握metasploit的用法。 指导书参考Rapid7官网的指导教程。 https://docs.rapid7.com/metasploit/metasploitable-2-exploitability-guide/ 下载官方靶机Metasploitable2,完成下面实验内容。 (1)前期渗透 ①主机发现(可用Aux中的arp_sweep,search…

《Django 5 By Example》阅读笔记:p165-p210

《Django 5 By Example》学习第6天,p165-p210总结,总计46页。 一、技术总结 1.bookmarks项目 (1)登录认证 作者这里使用的是Django自带的auth。 (2)上传头像 图片处理,使用Pillow。 (3)扩展user 扩展user模型与自带的user使用外键进行关联,命名为profile。 二、英语总结(生…

记录---nextTick用过吗?讲一讲实现思路吧

🧑‍💻 写在开头 点赞 + 收藏 === 学会🤣🤣🤣源码实现思路(面试高分回答) 📖 面试官问我 Vue 的 nextTick 原理是怎么实现的,我这样回答: 在调用 this.$nextTick(cb) 之前:存在一个 callbacks 数组,用于存放所有的 cb 回调函数。 存在一个 flushCallbacks 函…

AI|经常崩溃的问题解决

Adobe Illustrator Crashes 网络上大部分说法都是重装AI,兼容性问题,管理员权限或者是版本不对,经测试均无效,甚至出现重装系统这种离谱的办法,正确的解决办法是把首选项的性能里的GPU取消勾选,或者再把电脑的虚拟内存扩大即可。Step1:打开首选项 Step 2:取消勾选GPU性…

吐槽ubuntu上pdf阅读器

! https://zhuanlan.zhihu.com/p/6483861108 细数(吐槽)ubuntu(linux)上pdf阅读器不好用的地方 作为一枚研究僧,有使用ubuntu(linux)的需求,同时也有在ubuntu上看学术文献的需求(毕竟有时候懒得切换回windows)。对于pdf学术文献阅读,最需要功能是高亮、点击跳转、(跳转后)返…