【训练记录】2024年莆田市高中信息学奥赛国庆集训CSP-S提高组(第二天场外)

news/2024/12/22 9:03:05/文章来源:https://www.cnblogs.com/longxingx/p/18444547

训练情况

rk#4

\(100 + 100 + 100 + 70 = 370\)

赛后反思

没什么很严重的失误,只是国庆早八起不来,打到后面时间不够做第四题了QAQ,下次一定早起TAT

A题




开场怎么是CF Div4 原题,显然因为 \(a,b,c,d\) 互不相同,最后切出来的结果只有三块或四块,三块的情况是两线没有交叉,四块的情况是两线交叉了,我们考虑从时钟的最外面走一圈,若出现交叉的情况输出 \(4\) 否则输出 \(3\) 即可。

#include <bits/stdc++.h>
#define int long longusing namespace std;void solve(){int a,b,c,d; cin>>a>>b>>c>>d;string s;for(int i = 1;i<=12;i++){if(i == a || i == b) s += "0";if(i == c || i == d) s += "1";}if(s[0] == s[2] && s[1] == s[3]) cout<<4<<endl;else cout<<3<<endl;
}signed main(){freopen("time.in","r",stdin);freopen("time.out","w",stdout);int T; cin>>T; while(T--)solve();return 0;
}

B题





背包DP缝合题(?)带双重容量+种类01背包,挺板的

DP状态转移方程:

\[dp[pi][li]=max(dp[pi][li],dp[pi-p[i]][li-l[i]]+b[i]) \]

#include <bits/stdc++.h>
#define int long long
using namespace std;const int N=1e3+5;int n,t,w,k[N];
int p[N],l[N],b[N];
int dp[N][N];void solve(){cin>>n>>t>>w;for(int i=1;i<=n;i++) cin>>k[i];for(int i=1;i<=n;i++) cin>>p[i]>>l[i]>>b[i];for(int i=1;i<=n;i++){while(k[i]--){for(int pi=w;pi>=p[i];pi--){for(int li=t;li>=l[i];li--){dp[pi][li]=max(dp[pi][li],dp[pi-p[i]][li-l[i]]+b[i]);}}}}cout<<dp[w][t]<<endl;
}signed main(){freopen("hui.in","r",stdin);freopen("hui.out","w",stdout);// int T; cin>>T; while(T--)solve();
}

C题






模拟题,直接模拟即可,注意一下pow会爆,要自己写 \(10^n\) ,右边补一就 n*=10,n++ 即可,左边补 3 就直接加 \(3\times 10^{len+i-1}\)

#include <bits/stdc++.h>
#define int long longusing namespace std;const int mod = 1e9 + 7;int x;void solve(){cin>>x;int cs = x;for(int k = 1;k<=cs;k++){int cnt0 = 0,cnt1 = 0,cnt2 = 0,cnt3 = 0;int tmp = x;while(tmp){if(tmp % 10 == 0) cnt0++;else if(tmp % 10 == 1) cnt1++;else if(tmp % 10 == 2) cnt2++;else if(tmp % 10 == 3) cnt3++;tmp/=10;}for(int i = 1;i<=cnt0;i++) x*=10,x++;for(int i = 1;i<=cnt1;i++) x*=2;tmp = x;int len = 0;while(tmp)len++,tmp/=10;for(int i = 1;i<=cnt2;i++){int add = 3;for(int j = 1;j<=len+i-1;j++) add *= 10;x += add;}if(cnt3) x += 123456;x += k;x %= mod;// cout<<x<<endl;}cout<<x<<endl;
}signed main(){freopen("all.in","r",stdin);freopen("all.out","w",stdout);// int T; cin>>T; while(T--)solve();return 0;
}

D题




双指针题,考虑每一种类的每个人都扔到一个数组里,然后双指针维护即可,种类数 \(< n\) 右边界右移,否则左边界右移,种类数达到 \(n\) 更新答案最小值,极差使用 set 进行维护(要重载运算符)

下面的代码只有 \(70\) 分,不知道挂哪了,待调。

#include <bits/stdc++.h>
#define int long longusing namespace std;const int N = 1e6 + 3;int n;
int vis[N];struct node{int c,t;bool operator <(const node &x)const{return t < x.t;}
};
vector<node> a;
set<node> s;bool cmp(node x,node y){return x.t < y.t;
}void solve(){cin>>n;for(int i = 1;i<=n;i++){int ci; cin>>ci;for(int j = 1;j<=ci;j++){int t; cin>>t;a.push_back((node){i,t});}}sort(a.begin(),a.end(),cmp);int l = 0,r = 0;int ans = LONG_LONG_MAX;int kind = 0;while(l <= r && r<a.size()){if(kind<n){r++;s.insert(a[r-1]);vis[a[r-1].c]++;if(vis[a[r-1].c] == 1) kind++;} else {auto it = s.end(); it--;node ma = *it;node mi = *s.begin();ans = min(ans,ma.t - mi.t);s.erase(a[l]);vis[a[l].c]--;if(!vis[a[l].c]) kind--;l++;}}cout<<ans<<endl;
}signed main(){freopen("buhezuo.in","r",stdin);freopen("buhezuo.out","w",stdout);// int T; cin>>T; while(T--)solve();return 0;
}

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

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

相关文章

抽烟行为识别预警系统

抽烟行为识别预警系统基于AI视觉智能分析技术,抽烟行为识别预警系统通过监测现场人员抽烟行为自动存档进行报警提示同步回传后台提醒值班人员及时处理。抽烟行为识别预警系统对现场人员吸烟行为进行7*24小时不间断识别监测,当发现有人抽烟时主动抓拍存档并同步触发报警。抽烟…

明厨亮灶AI智能分析盒

明厨亮灶AI智能分析盒通过AI视频分析技术,明厨亮灶AI智能分析盒赋能现场普通监控具备了AI智能检测的功能,能够迅速高效的识别厨房内的工作人员的着装状况:口罩穿戴识别、厨师服穿戴识别、吸烟识别、厨师帽穿戴识别、后厨鼠害识别、玩手机识别等。明厨亮灶AI智能分析盒对餐厅…

安全生产劳保穿戴监测系统

安全生产劳保穿戴监测系统通过计算机智能视频分析技术,安全生产劳保穿戴监测系统对现场区域施工作业人员防护用品穿戴是否合规进行自动监测,当安全生产劳保穿戴监测系统监测到现场施工人员没有按施工要求穿戴防护用品时,不需人为干预系统立即自动触发告警并抓拍存档同步提醒…

c++ vector容器、字符串

c++ vector容器 字符串:

2024.9.24 模拟赛 CSP4

模拟赛 暴力场。出题人学政治的? T1 商品值域线段树 直接看值域上,每两个相邻的点的差提供的贡献,相当于值域上某一区间每一个位置都有 \(1\) 的贡献再减一。 所以直接值域线段树,查询区间和。贪心发现左右端点一定挂在某个点上时最优。注意左右端点挂住的情况分别跑一遍。…

记一次内存告警

刚好国庆最后一天上班,遇到一个实例内存使用率100%的告警。 分析JVM内存常用的命令得总结一下:

Leetcode 275. H 指数 II

1.题目基本信息 1.1.题目描述 给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数,citations 已经按照 升序排列 。计算并返回该研究者的 h 指数。 h 指数的定义:h 代表“高引用次数”(high citations),一名科研人员的 h 指数是指他(她…

7、卷积神经网络基础

1、边缘检测示例(Edge Detection Example)卷积运算(convolutional operation)是卷积神经网络最基本的组成部分,使用边缘检测(edge detection)作为入门样例。接下来,你会看到卷积是如何进行运算的。在之前的人脸例子中,我们知道神经网络的前几层是如何检测边缘的,然后…

truffle 和 ganache 打印账号列表和发送eth

打印 ganache环境的账户列表const localhost = "http://127.0.0.1:7545"; const {Web3} = require("web3"); const web3 = new Web3(new Web3.providers.HttpProvider(localhost));web3.eth.getAccounts().then(function (result) {console.log("账户…

前端无代码-表单页面的查看和编辑| uiotos致敬amis、appsmith、codewave、goview、dataroom、iotrouter、FUXA、乐吾乐、dooring等

上位机或管理系统,增删改查属于常规操作。其中以点击以查看和编辑,弹出表单页面,最为常见。 UIOTOS支持页面嵌套、属性继承(包括只读属性)。通过配置和连线,也能对表单页面区分查看和编辑,但有些繁琐。 可以利用容器组件的表单只读属性,勾选后,连线传入表单数据,将只…

前端零代码-技术原理:对话框嵌套和自定义按钮| uiotos致敬amis、appsmith、codewave、goview、dataroom、iotrouter、FUXA、乐吾乐、dooring等

对话框有默认标题头和脚,带有默认的取消、确定、关闭等按钮: 对话框编辑状态和运行状态 UIOTOS中对话框属常见容器,内容由任意其他页面嵌套而来。如下所示: UIOT…

数字经济与新质生产力:地理信息与遥感视角下的深度分析

在数字化浪潮的推动下,我们正见证着生产力的一次历史性飞跃。数字经济如何重塑生产力的三大要素:劳动对象、劳动资料和劳动者?让我们来深度分析数字经济如何推动新质生产力的发展。一、数字经济与地理信息的融合地理信息与遥感技术是数字经济中不可或缺的一环。它们为我们提…