2024省选联测1

2024省选联测1

题目来源: 2024省选联测1

\(T1\) HZTG5808. interval \(40pts\)

  • 原题: QOJ 1173. Knowledge Is..

  • 考虑按照左端点升序排序后反悔贪心。

  • 分别维护已经匹配的区间对和未被匹配的区间,若当前区间 \(a\) 可以和前面剩余的未被匹配的区间匹配则直接匹配;否则尝试找到一对已经匹配的区间 \(x,y\) ,若 \(y\) 的右端点比 \(a\) 的右端点靠左则替换成 \(x,a\) 进行匹配,可以证明将 \(y\) 换成 \(a\) 扩大了 \(y\) 能匹配的区间(如果不换就是 \(a\) 的匹配区间),一定不劣。

  • 优先队列按照右端点升序排序即可。

    点击查看代码
    pair<int,int>a[500010];
    priority_queue<int,vector<int>,greater<int> >used,wait;
    int main()
    {
    #define Isaac
    #ifdef Isaacfreopen("interval.in","r",stdin);freopen("interval.out","w",stdout);
    #endifint n,ans=0,i;scanf("%d",&n);for(i=1;i<=n;i++){scanf("%d%d",&a[i].first,&a[i].second);}sort(a+1,a+1+n);for(i=1;i<=n;i++){if(wait.empty()==0&&wait.top()<a[i].first){ans++;used.push(a[i].second);wait.pop();}else{if(used.empty()==0&&used.top()<a[i].second){wait.push(used.top());used.pop();used.push(a[i].second);}else{wait.push(a[i].second);}}}printf("%d\n",ans);	return 0;
    }
    
  • 输出方案时只需要记录下来源后倒着给予编号即可。

    点击查看代码
    struct node
    {int l,r,id;
    }a[500010];
    int col[500010];
    priority_queue<pair<int,int>,vector<pair<int,int> >,greater<pair<int,int> > >used,wait;
    bool cmp(node a,node b)
    {return (a.l==b.l)?(a.r<b.r):(a.l<b.l);
    }
    int main()
    {
    // #define Isaac
    #ifdef Isaacfreopen("interval.in","r",stdin);freopen("interval.out","w",stdout);
    #endifint n,m,i;scanf("%d%d",&n,&m);for(i=1;i<=n;i++){scanf("%d%d",&a[i].l,&a[i].r);a[i].id=i;}sort(a+1,a+1+n,cmp);for(i=1;i<=n;i++){if(wait.empty()==0&&wait.top().first<a[i].l){col[wait.top().second]=col[a[i].id]=m;m--;used.push(make_pair(a[i].r,a[i].id));wait.pop();if(m==0){break;}}else{if(used.empty()==0&&used.top().first<a[i].r){wait.push(used.top());col[a[i].id]=col[used.top().second];col[used.top().second]=0;used.pop();used.push(make_pair(a[i].r,a[i].id));}else{wait.push(make_pair(a[i].r,a[i].id));}}}for(i=1;i<=n;i++){if(col[i]==0&&m>=1){col[i]=m;m--;}printf("%d ",col[i]);}return 0;
    }

\(T2\) HZTG5809. apers \(0pts\)

  • 原题: QOJ 1359. Setting Maps

  • 等学了网络流再来写。

\(T3\) HZTG5810. circles \(0pts\)

  • 原题: QOJ 838. Horrible Cycles

  • 先按照 \(\{ a \}\) 升序排序。

  • 观察到最终的环一定是左右部点交错出现。在枚举右部点的过程中,每加入一个左部点与此同时与先前的所有右部点进行连边,可以看做左部点将若干个链连接形成了环。

  • \(f_{i,j}\) 表示处理到第 \(i\) 个右部点且还需要 \(j\) 个左部点进行连接的环的数量。当新加入一个右部点的时候,可以作为一条单独的链加入先前状态集合,有 \(f_{i,j} \gets f_{i-1,j}+(j-1)f_{i-1,j-1}\) ,边界为 \(f_{i,1} \gets f_{i-1,1}+1\) 。接着添加左端点,类似地,有 \(f_{i,j} \gets f_{i,j}+(j+1)f_{i,j+1}\)

  • 在更新过程中每个环仅会在最大左部点断开位置处进行计算,但每个环在两个方向上均会对答案产生一次贡献;且每条边产生了一次贡献但不应在最终的答案中,故 \(\frac{1}{2}(f_{0}-\sum\limits_{i=1}^{n}a_{i})\) 即为所求。

    点击查看代码
    const ll p=1000000007;
    ll a[5010],f[5010];
    ll qpow(ll a,ll b,ll p)
    {ll ans=1;while(b){if(b&1){ans=ans*a%p;}b>>=1;a=a*a%p;}return ans;
    }
    int main()
    {
    #define Isaac
    #ifdef Isaacfreopen("circles.in","r",stdin);freopen("circles.out","w",stdout);
    #endifll n,sum=0,i,j,k;cin>>n;for(i=1;i<=n;i++){cin>>a[i];sum=(sum+a[i])%p;}sort(a+1,a+1+n);for(i=j=1;i<=n;i++){for(k=n;k>=2;k--){f[k]=(f[k]+(k-1)*f[k-1]%p)%p;}f[1]=(f[1]+1)%p;for(;j<=n&&a[j]==i;j++){for(k=0;k<=n;k++){f[k]=(f[k]+(k+1)*f[k+1]%p)%p;}}}cout<<(f[0]-sum+p)%p*qpow(2,p-2,p)%p<<endl;return 0;
    }
    

总结

  • 整场都在罚坐。

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

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

相关文章

2024-2025-1 20241407《计算机基础与程序设计》第十四周学习总结

作业信息这个作业属于哪个课程 2024-2025-1计算机基础与程序设计这个作业要求在哪里 2024-2025-1计算机基础与程序设计第十四周作业这个作业的目标 学习二进制文件和文本文件,文件的打开和关闭,顺序读写与随机读写,标准输入和输出及其重定向作业正文 本博客教材学习内容总结…

GraphMAE2(解码增强型掩码自监督图学习器)

GraphMAE2: A Decoding-Enhanced Masked Self-Supervised Graph Learner 解码增强型掩码自监督图学习器 背景 ​ 近年来,自监督学习(Self-supervised Learning,SSL)得到了广泛的探索,特别是生成式自监督学习在自然语言处理以及其他人工智能领域已经取得了新兴的成功,像…

PTA第7~8次大作业分析及总结

一、前言 本次Blog为第七~八次大作业的总结。两次大作业主要考察抽象类及继承方面的相关内容,是在第六次大作业基础上的进一步升级,难度大幅提升,由于前面的作业我没有很好地完成,这两次大作业也没有拿到好成绩,这也算是提醒我:在进行一个设计时要提前为后续更加预留空间…

python3网络爬虫开发实战-第2版PDF免费下载

本书介绍了如何利用 Python 3 开发网络爬虫。本书为第 2 版,相比于第 1 版,为每个知识点的实战项目配备了针对性的练习平台,避免了案例过期的问题。另外,主要增加了异步爬虫、JavaScript 逆向、App 逆向、页面智能解析、深度学习识别验证码、Kubernetes 运维及部署等知识点…

Java大作业总结

Java大作业总结 目录Java大作业总结一.前言第七次大作业1.设计与分析2.踩坑心得(一)电阻值处理(二)设备状态更新顺序3.改进建议(一)错误处理与异常机制(二)性能优化(三)代码结构调整第八次大作业1.设计与分析2.踩坑心得3.改进建议期末总结 一.前言 这2次大作业都是前…

题目集 7 - 8 总结性 Blog

一、前言 在本学期的学习旅程中,题目集 7 和题目集 8 犹如两座重要的里程碑,引领我们在编程的道路上不断探索与前行。这两个题目集总计包含了2道题目,它们犹如一把把钥匙,开启了面向对象编程世界的大门,引领我们逐步深入其中,领略其复杂与精妙之处。题目集 7 宛如基石,着…

PHP_network

PHP PHP基础教程 语法PHP 脚本以<? php 开头 ,以?>结尾php语句以 ;结尾,php代码块的关闭标签也会自动标名 ;php支持的三种注释 //单行注释 单行注释 /* 多行注释 */php中,所有用户定义的函数、类和关键词都对大小写不敏感; 但所有变量都对大小写敏感变量 变量规则…

Python读取栅格图像并对像元数据处理后导出到表格文件中

本文介绍基于Python语言中的gdal模块,读取一景.tif格式的栅格遥感影像文件,提取其中每一个像元的像素数值,对像素值加以计算(辐射定标)后,再以一列数据的形式将计算后的各像元像素数据保存在一个.csv格式文件中的方法~本文介绍基于Python语言中的gdal模块,读取一景.tif格…

22207321-王郅坚-第三次BLOG

前言 这两次电器控制系统的开发迭代,涵盖了不同的编程知识点、设计思路与系统逻辑。第一次迭代实现了一个基础的电器控制系统,通过简单的电器类型和基本操作设置,实现了电器状态的管理与切换。这一阶段主要考察基本数据结构的使用、输入输出处理、以及简单的判断与循环逻辑。…

OO7-8次作业总结

Java习题集总结:家居强电电路模拟设计与优化 前言 在本阶段的学习中,我们完成了以家居强电电路模拟程序为核心的Java习题集任务,共涉及两套题目。两次习题集在内容设计上有明显的层级递进,不仅加深了我们对Java语言的理解,也培养了我们解决实际工程问题的能力。 习题特点:…

8086汇编(16位汇编)学习笔记08.函数

https://bpsend.net/thread-138-1-2.html函数结构 函数结构的演变 函数的结构并不是随随便便就出来的而是解决了很多问题之后,大家统一认为那个结构是最好的一种方式 例如:模拟函数实现2个数相加 不用函数实现两个数相加 ;这是栈段 stack segment stackdb 512 dup(0) stack en…