福州市 2025 国庆集训 Day2 前三题题解

news/2025/10/2 20:24:55/文章来源:https://www.cnblogs.com/Atserckcn/p/19123968

福州市 2025 国庆集训 Day2 前三题题解

T1

U614648 strip

首先不难想到,将最长的两个放在两端,并且最长的将非插头那端突出去是最合算的。

然后我们来看看中间的 \(s-2\) 个位置与 \(n-2\) 个插座的分配。

需要遵循的原则:

  • 插最多

  • 空间利用率要高

此时假设我们已经知道了最多插 \(x\) 个。那么绝对是用最短的 \(x\) 个插座。贪心一下。

那么插最多就是我们要求的,所以我们来看看如何使空间利用率最高。

因为每个插座的长度均为 \(3\),所以如果插座 \(A\) 的长度模 \(3\)\(1\),插座 \(B\) 的长度模 \(3\)\(2\),那么它俩余下的部分就可以刚好无缝衔接地占用一个插座的位置。两个余 \(1\) 的也同理。

所以我们可以二分答案 \(x\)。对于二分出来的 \(x\),计算是否可以塞下。不行则更新右端点,可以则更新左端点。

所以时间复杂度就是 \(O(Tn\log n)\)

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
typedef long long ljl;
int n,a[N],T;
ljl s;
bool check(int x)
{int cnt[3];ljl ts=0ll;memset(cnt,0,sizeof(cnt));for(int i=1;i<=x;++i)ts=ts+a[i]/3,++cnt[a[i]%3];if(cnt[2]>=cnt[1])ts=ts+cnt[1],cnt[2]-=cnt[1],ts+=cnt[2];else//cnt[1]>cnt[2]ts=ts+cnt[2],cnt[1]-=cnt[2],ts=ts+(cnt[1]+1)/2;return ts<=s;
}
void tpoint()
{int l=0,r=n,mid;while(l<r){
//		cout<<l<<' '<<r<<'\n';mid=(l+r+1)/2;if(check(mid))l=mid;else r=mid-1;}cout<<l+2<<'\n';return;
}
void Main()
{cin>>n>>s;for(int i=1;i<=n;++i)cin>>a[i];if(n==1||s==1){cout<<1<<'\n';return;}sort(a+1,a+n+1);s-=2;n-=2;
//	for(int i=1;i<=n;++i)cout<<a[i]<<' ';
//	cout<<'\n';tpoint();return;
}
int main(){ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>T;while(T--)Main();return 0;
}

T2

U614650 expr

恶心大模拟。为什么我的思路有点儿与众不同啊……

注意到每个运算在外边都会配上一对括号。所以用个栈,像括号序列匹配那样。

然后我们就开个 map,将每个下标映射两个值。一个是运算后的值。另一个是这个运算的右括号的下标。这样就可以直接访问该运算后边的那个运算符(如果有的话)。

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int T,n,ans;
stack<int> st; 
string s;
map<int,pair<int,int> > num;
int getnum(int a,int b,char opt)
{
//	cout<<a<<' '<<b<<' '<<opt<<'\n';if(opt=='!')return !a;if(opt=='&')return a&b;if(opt=='|')return a|b;if(opt=='^')return a^b;if(opt=='-')return (a&&!b?0:1);return -1;
}
void solve(int l,int r)
{
//	cout<<l<<' '<<r<<'\n';if(s[l+1]=='!'){num[l].first=!(num[l+2].first);num[l].second=r;return;}if(s[num[l+1].second+1]=='-')//((0->1)->1){num[l].first=getnum(num[l+1].first,num[num[l+1].second+3].first,'-');num[l].second=r;return;}int a=num[l+1].first,b=num[num[l+1].second+2].first;num[l].first=getnum(a,b,s[num[l+1].second+1]);num[l].second=r;return;
}
void Main()
{cin>>s;n=(int)s.size();num.clear();s=" "+s;ans=0;while(!st.empty())st.pop();for(int i=1;i<=n;++i){if(s[i]=='(')st.push(i);if(s[i]==')'){solve(st.top(),i);st.pop();}if(s[i]>='0'&&s[i]<='9'){num[i].first=s[i]-'0';num[i].second=i;}}if(s[1]>='0'&&s[1]<='9')ans=s[1]-'0';else ans=num[1].first;cout<<ans<<'\n';return;
}
int main(){
//	freopen("expr3.in","r",stdin);ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);cin>>T;while(T--)Main();return 0;
}

T3

U614651 course

推式子题。可惜我太菜了推出不来 /ll。

我们假设 \(\frac{\sum^k_{j=1}c_{i_j}}{\sum_{j=1}^k t_{i_j}}\ge x\)

那么有:

\[\sum ^k_{j=1} c_{i_j}\ge x\cdot \sum^k_{j=1}t_{i_j}\\ \sum ^k_{j=1} c_{i_j}-x\cdot \sum^k_{j=1}t_{i_j}\ge 0\\ \sum^k_{j=1}({c_{i,j}-x\cdot t_{i_j}})\ge 0 \]

所以我们可以定义新的权值 \(a_i=c_i-x\cdot t_i\),若 \(\sum^k_{j=1}a_j\ge 0\) 则合法。

想要 \(\sum^k_{j=1}a_j\ge 0\),显然是选择最大的 \(k\)\(a\),所以可以排个序。

所以只要二分 \(x\),判断是否合法即可。注意精度。

这里为什么不是小等于,而是大等于呢?

因为如果是小等于,则你随便给它一个大点的值(比如说 \(1\),其实也是不可能达到的上限)就能合法。

时间复杂度:\(O(n\log^2 n)\)

代码:

#include<bits/stdc++.h>
using namespace std;
typedef double db;
const int N=1e5+5;
int n,k;
db c[N],t[N],a[N];
bool cmp(db a,db b){return a>b;}
bool check(db x)
{for(int i=1;i<=n;++i)a[i]=c[i]-x*t[i];sort(a+1,a+n+1,cmp);db ans=0.0;for(int i=1;i<=k;++i)ans+=a[i];return ans>=0;
}
int main(){ios::sync_with_stdio(0);cin>>n>>k;for(int i=1;i<=n;++i)cin>>c[i];for(int i=1;i<=n;++i)cin>>t[i];db l=0.0,r=1.0,mid;while(l<r&&r-l>0.0001){
//		cout<<l<<' '<<r<<' '<<mid<<'\n';mid=(l+r)/2.0;if(check(mid))l=mid;else r=mid;}cout<<fixed<<setprecision(3)<<l<<'\n';return 0;
}

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

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

相关文章

2025 年马赛克厂家 TOP 企业品牌推荐排行榜,陶瓷,游泳池,喷墨,冰裂,拼花,防滑,复古,家装马赛克推荐这十家公司!

引言在当前建筑陶瓷行业中,马赛克产品的应用场景愈发广泛,从标准游泳池、水上乐园到别墅、酒店会所等,对马赛克的需求持续增长。然而,行业内也面临着诸多问题,部分厂家缺乏专业的研发能力,产品质量参差不齐,有的…

oppoR9m刷Linux系统: 手动备份系统与基带IMEI/NVRAM/QCN

前言全局说明某些原因,软件不能正确读取手机分区信息,那么就要手动创建脚本来备份注意:刷机,会丢失用户:照片、聊天等信息资料。请备份基带等信息。请慎重刷机 !!! 注意:刷机,会丢失用户:照片、聊天等信息资料…

原来你是这样的claude code aciton:没想象中好

需要占用 github action minutes,要用钱哦 并不是在客户端艾特,而是在 gh网页上 at github自动生成的 pull request workflow 文件不对,版本需要更新

2025/9/29

2025/9/291.统一建模语言训练 2.数据结构学习 3.学习Java开发思路

实用指南:【Python】正则表达式

实用指南:【Python】正则表达式pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&qu…

专门做调查的网站建设春秋龙卡信用卡网站

MYSQL避免全表扫描 1.对查询进行优化&#xff0c;应尽量避免全表扫描&#xff0c;首先应考虑在 where 及 order by 涉及的列上建立索引 2.应尽量避免在 where 子句中对字段进行 null 值判断&#xff0c;否则将导致引擎放弃使用索引而进行全表扫描 如&#xff1a;select id f…

FlareOn1 -- 5get_it

用 DIE 打开,是一个 dll用 ida 打开,简单分析一下,是一个记录键盘按键的程序。里面的每个虚拟键码都有一个函数返回字符串那么 flag 在哪里呢?看到左边函数窗口里看到有一个 DialogFunc,按 X 查找交叉引用,最后找…

2025/10/1

2025/10/1回家

2025 年阀门厂家 TOP 企业品牌推荐排行榜,管道阀门,气动,调节,电动执行器,生产,电磁,不锈钢,进口,耐高温阀门推荐这十家公司

在工业领域,阀门作为流体控制的关键部件,其质量优劣、性能好坏直接关系到整个系统的安全稳定运行。从市政工程的供水供气,到工业防爆场景的严苛环境,再到环保水处理、能源化工等行业,阀门无处不在。然而,当前阀门…

爬虫逆向-AST科技

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站开发如何查看请求体包头建设厅官方网站

之前做页面抓取&#xff0c;数据采集等功能的时候&#xff0c;第一个想到的就是用正则表达式去匹配页面内容。但是对于像我这种&#xff0c;正则只懂皮毛的人来说&#xff0c;写正则是真的很恶心的一件事。去网上找&#xff0c;也不一定能改成自己需要的正则。今天给大家推荐一…

2025/9/30

2025/9/30钳工工程实训 英语听说能力训练

天津购物网站搭建唐山地方志网站建设

来源&#xff1a;微信公众号科技咨询频道作者&#xff1a;谢黎、张志强&#xff0c;中国科学院成都文献情报中心兰德公司2021年5月24日发布《美国5G时代&#xff1a;在保障国家和人民的同时获得竞争优势》报告。报告援引美国国防创新委员会、联邦政府的观点&#xff0c;声称5G是…

做蛋糕需要建议网站不丹阳网站

这篇回答两个问题&#xff1a; 1.为什么在 pycharm中打开新的project&#xff0c;切换interpreter 之后发现自己之前装的库消失了&#xff1f; 2.为什么 interpreter 切换到python3.8了&#xff0c; terminal 还是在 3.9&#xff1f;&#xff1f; 问题的关键&#xff1a;搞懂什…

tcp与udp 协议 - 摘星

TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protocol,用户数据报协议) 是 TCP/IP 协议族中最核心的两种传输层协议,二者在可靠性、连接方式、传输效率等维度存在本质区别, 适用于不…

赛前训练4 extra 字典树

A 板子。实现 #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> #include <string> #include <stdlib.h> #include <vector> #include <…

CF1450E Capitalism

首先你发现这个条件特别能用差分约束描述,特别是构造方案。 但是你无法处理相同的情况,我们注意到相连的边的两个点的 \(a\) 奇偶性必定不同,于是这必定是一张二分图,检验一下是不是二分图即可。 然后跑普通的差分…

织梦如何做几种语言的网站移动互联网开发平台基于linux安卓

“同物异谱&#xff0c;同谱异物”会对影像分类产生的影响&#xff0c;加上高分辨率影像的光谱信息不是很丰富&#xff0c;还有经常伴有光谱相互影响的现象&#xff0c;这对基于像素的分类方法提出了一种挑战&#xff0c;面向对象的影像分类技术可以一定程度减少上述影响。 本…

手游网站怎么做可做百度百科参考资料的网站

编辑距离算法其实就是&#xff0c;在规定的编辑操作(替换字符串、插入字符串、删除字符串)中&#xff0c;经过几步可以把一个字符串变成另一个字符串&#xff0c;而这个所需的步数就是你的编辑距离。 测试样例&#xff1a; str1 abc str2 yabd 表里的每一个值都代表着将s…

网站建设一年600wordpress自动添加标签

声明常量&#xff1a;使用const关键字定义一个常量&#xff0c;不允许对其进行更改。例如&#xff1a; const int PI 3.1415926;修饰函数参数&#xff1a;加上const限定符可以确保函数不会修改传入的参数值。例如&#xff1a; void print(const int num) {// num不能在函数内…