news 2026/4/23 8:48:32

noi-2025年12月16号作业

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
noi-2025年12月16号作业

题目:B4407 [语言月赛 202509] 逃避讲题的最好方法是:

网址:https://www.luogu.com.cn/problem/B4407

思路:我们分别使用mx、mn数组记录每一道题的最大值分数和最小分数,同时使用一个e数组来保存每一道题的分数。首先特判,如果人数小于等于2的话,一定要上台,然后我们记录一下要改变的次数并贪心地修改分数,如果需要改变的次数大于c的话,那么就一定要上台。最后,我们判断一下改的是否合格。

知识点:set的使用,思维题

代码:

#include<bits/stdc++.h> #define ll long long #define pii pair<int,int> #define pss pair<string,string> #define fi first #define se second #define pb push_back #define eb emplace_back using namespace std; const int maxn=3e3+100; ll a[maxn][maxn]; int n,m,s; ll mx[maxn],mn[maxn]; set<int>e[maxn]; void solve() { cin>>n>>m>>s; for(int i=1;i<=m;i++) { mx[i]=-1; mn[i]=1e17; e[i].clear(); } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { cin>>a[i][j]; mx[j]=max(mx[j],a[i][j]); mn[j]=min(mn[j],a[i][j]); } } for(int j=1;j<=m;j++) { for(int i=1;i<=n;i++) { e[j].insert(a[i][j]); } } int c; cin>>c; if(n<=2) { cout<<"up"<<'\n'; return; } int need=0; for(int i=1;i<=m;i++) { if(a[s][i]!=mx[i]&&a[s][i]!=mn[i]) continue; if(e[i].size()==1) { cout<<"up"<<'\n'; return; } if(a[s][i]==mx[i]) { auto it=e[i].begin(); a[s][i]=(*it)+1; }else{ auto it=e[i].end(); it--; a[s][i]=(*it)-1; } need++; } for(int i=1;i<=m;i++) { mx[i]=-1; mn[i]=1e17; } if(need>c) { cout<<"up"<<'\n'; return; } for(int i=1;i<=n;i++) { for(int j=1;j<=m;j++) { mx[j]=max(mx[j],a[i][j]); mn[j]=min(mn[j],a[i][j]); } } for(int i=1;i<=m;i++) { if(a[s][i]==mx[i]||a[s][i]==mn[i]) { cout<<"up"<<'\n'; return; } } cout<<"down"<<'\n'; } int main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); int _; cin>>_; while(_--) solve(); return 0; }

题目:P1029 [NOIP 2001 普及组] 最大公约数和最小公倍数问题

网址:https://www.luogu.com.cn/problem/P1029

思路:首先,如果y%x!=0的话,那么答案一定为0。接着我们分别对x和y进行质数分解,如果对于对一个质数,x和y的次数不相等的话,那么就有两种可能。

知识点:求质数,质数分解

代码:

#include<bits/stdc++.h> #define ll long long #define pii pair<int,int> #define pss pair<string,string> #define fi first #define se second #define pb push_back #define eb emplace_back using namespace std; const int maxn=2e5+100; ll a[maxn],cnt; int n,m; bool is_pri(ll x) { for(int i=2;i*i<=x;i++) { if(x%i==0) return false; } return true; } void solve() { ll x,y; cin>>x>>y; if(y%x!=0) { cout<<0; return; } for(int i=2;i<=100000;i++) { if(is_pri(i)) { a[++cnt]=i; } } ll ans=1; for(int i=1;i<=cnt;i++) { ll cnt1=0,cnt2=0; while(x%a[i]==0) { x/=a[i]; cnt1++; } while(y%a[i]==0) { cnt2++; y/=a[i]; } if(cnt1!=cnt2) { ans=ans*2; } } cout<<ans<<'\n'; } int main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); int _=1; // cin>>_; while(_--) solve(); return 0; }

题目:P14566 【MX-S12-T1】取模

网址:https://www.luogu.com.cn/problem/P14566

思路:把p从非常大的值一路减小,会发现其实就是对a数组进行压缩。

知识点:思维题

代码:

#include<bits/stdc++.h> #define ll long long #define pii pair<int,int> #define pss pair<string,string> #define fi first #define se second #define pb push_back #define eb emplace_back using namespace std; const int maxn=2e5+100; ll a[maxn]; int n,m; void solve() { cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } sort(a+1,a+1+n); if(a[n]==0) { cout<<0<<'\n'; return; } ll v1=a[n]-a[1]; for(int i=1;i<=n;i++) { a[i]=a[i]%a[n]; } sort(a+1,a+1+n); ll v2=a[n]-a[1]; cout<<max(v1,v2)<<'\n'; } int main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); int _=1; cin>>_; while(_--) solve(); return 0; }

题目:P12817 [NERC 2021] Deletive Editing

网址:https://www.luogu.com.cn/problem/P12817

思路:我们先从s中找到t,然后再判断一下能否合法删除

知识点:思维题

代码:

#include<bits/stdc++.h> #define ll long long #define pii pair<int,int> #define pss pair<string,string> #define fi first #define se second #define pb push_back #define eb emplace_back using namespace std; const int maxn=2e5+100; ll a[maxn]; int n,m; string s,t; int vis[maxn]; void solve() { cin>>s>>t; if(s==t) { cout<<"YES"<<'\n'; return; } reverse(s.begin(),s.end()); reverse(t.begin(),t.end()); int last=-1; int len=s.length(); for(int i=0;i<len;i++) { vis[i]=0; } for(auto ch1:t) { bool ok=false; for(int i=last+1;i<len;i++) { if(s[i]==ch1) { ok=true; vis[i]=1; last=i; break; } } if(!ok) { cout<<"NO"<<'\n'; return; } } map<char,int>p; for(int i=0;i<len;i++) { if(vis[i]) { if(p[s[i]]) { cout<<"NO"<<'\n'; return; } }else{ p[s[i]]=1; } } cout<<"YES"<<'\n'; } int main(){ ios::sync_with_stdio(false); cin.tie(0);cout.tie(0); int _=1; cin>>_; while(_--) solve(); return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 11:22:33

选对老师,一次过!高项备考别再自己硬扛了!

选对老师&#xff0c;真的能改变备考的轨迹&#xff01;作为一个过来人&#xff0c;我太懂那种面对厚厚教材和抽象论文的无助感了。自己埋头苦学了大半年&#xff0c;知识点像一盘散沙&#xff0c;案例分析找不到逻辑&#xff0c;论文更是无从下手&#xff0c;差点就想放弃今年…

作者头像 李华
网站建设 2026/4/23 11:21:51

一文精通大数据行式存储的性能优化

一文精通大数据行式存储的性能优化&#xff1a;从原理到实战的全链路拆解 1. 引入与连接&#xff1a;为什么行式存储还需要优化&#xff1f; 1.1 一个真实的痛点场景 某电商平台的订单系统遇到了棘手问题&#xff1a; 运营同学要查用户「小A」最近30天的所有订单记录&#xff0…

作者头像 李华
网站建设 2026/4/21 15:23:41

健康管理实训室:解锁康养技能提升新路径

一、认知与评估起点&#xff1a;构建健康管理的专业基石健康管理实训室的首要环节&#xff0c;是培养学生精准的评估与认知能力。实训室内配备的老年综合评估系统、心理自助服务系统等专业工具&#xff0c;为学生提供了标准化的健康评估操作平台。通过这些系统&#xff0c;学生…

作者头像 李华
网站建设 2026/4/23 11:17:16

29、Linux文件系统管理与应用安装指南

Linux文件系统管理与应用安装指南 1. 自动化备份准备 要进行自动化备份,每天只需在磁带驱动器中放入新磁带,并为每盘磁带贴上合适的标签即可,这样就完成自动化备份的基本准备。 2. 访问DOS/Windows文件系统 2.1 挂载DOS/Windows磁盘分区 在Linux中挂载DOS/Windows硬盘分…

作者头像 李华
网站建设 2026/4/23 11:33:16

37、Linux 系统中网络服务管理全解析

Linux 系统中网络服务管理全解析 1. TCP/IP 网络服务端口概述 在 TCP/IP 网络环境里,不同的网络服务会使用特定的端口号。查看 /etc/services 文件中的条目,能了解到丰富的网络服务。以下是部分常见服务及其端口号: | 服务名称 | 端口号/协议 | 备注 | | ---- | ---- …

作者头像 李华
网站建设 2026/4/23 13:01:46

31、Linux 应用更新与系统安全保障

Linux 应用更新与系统安全保障 一、Linux 应用在线更新 在 Linux 系统中,不同的发行版都提供了在线更新软件的实用工具。不过,在进行在线更新之前,需要确保有快速的互联网连接,如 DSL 或有线电视调制解调器,并且网络连接正常。 (一)使用 rpmbuild 构建软件 可以使用…

作者头像 李华