尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

CSP-J 2025

CSP-J 2025
📅 发布时间:2026/6/22 5:30:19

P14357 [CSP-J 2025] 拼数

把字符串中的所有数字找出来,从大到小排序输出即可

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;
using ll = long long;
using ull = unsigned long long;
const ll inf = 1e18;
const int mod = 998244353;void solve(){string s;cin>>s;priority_queue<char> q;for(auto ch:s){if(ch>='0' && ch<='9'){q.push(ch);}}while(q.size()){cout<<q.top();q.pop();}
}signed main(){ios::sync_with_stdio(0);cin.tie(0);int t=1;// cin>>t; while(t--){solve(); }}

P14358 [CSP-J 2025] 座位

简单但恶心的题,找到排序之后的排名,直接去找位置

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;
using ll = long long;
using ull = unsigned long long;
const ll inf = 1e18;
const int mod = 998244353;void solve(){int n,m;cin>>n>>m;vector<int> a(n*m+1);int x;for(int i=1;i<=n*m;i++){cin>>a[i];}x=a[1];sort(a.begin()+1,a.end(),greater<int>());int idx=0;for(int i=1;i<=n*m;i++){if(a[i]==x) idx=i;}int cnt=idx/n;idx%=n;if(idx==0){cout<<cnt<<" "<<((cnt&1)?n:1);}else{cout<<cnt+1<<" "<<((cnt&1)?n-idx+1:idx);}
}signed main(){ios::sync_with_stdio(0);cin.tie(0);int t=1;// cin>>t; while(t--){solve(); }}

P14359 [CSP-J 2025] 异或和

直接从前往后循环,用 set 维护前缀的异或值。如果到某个位置,发现以当前位置结尾,可以和之前在 set 中的某一个位置凑出 \(k\)。所以,以当前位置为 \(r\),前面某个位置为 \(l\) 的区间是一个合法区间,在当前位置可以切一刀,同时清空 set。

我们不用关心 \(l\) 的具体位置,因为无论如何都要在当前位置切,切清空 set,所以 \(l\) 具体在哪里,对后面不会造成影响

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;
using ll = long long;
using ull = unsigned long long;
const ll inf = 1e18;
const int mod = 998244353;void solve(){int n,k;cin>>n>>k;vector<int> a(n+1);map<int,int> mp;for(int i=1;i<=n;i++){cin>>a[i];}int ans=0,now=0;mp[0]=1;for(int i=1;i<=n;i++){now^=a[i];if(mp[now^k]){ans++;mp.clear();mp[0]=1;now=0;}else{mp[now]++;}}cout<<ans;
}signed main(){ios::sync_with_stdio(0);cin.tie(0);int t=1;// cin>>t; while(t--){solve(); }}

P14360 [CSP-J 2025] 多边形

先将 \(a\) 数组从小到大排序。

假设选了 \(m\) 个数,\(b_1,b_2,b_3,...,b_m\)

这 \(m\) 个数符合条件,当且仅当 \(b_1+b_2+b_3+..+b_{m-1}<b_m\)

所以,考虑 DP,设 \(f[i][j]\) 表示,从前 \(i\) 个数中选,且总和不超过 \(j\) 的方案数。

如何统计答案?

枚举最后一个数,让 \(a_i\) 做为某个合法序列的最后一个数,统计此时的方案数量

此时的方案数量为,从前 \(i-1\) 个数中选,且总和大于 \(a_i\) 的方案数,显然,对 DP 的状态求和即可

注意,\(f[i][j]\) 的 \(j\) 可能会很大,但因为数值最大是 5000,所以所有 \(j>5000\) 的值,都统一计入 \(j=5001\) 的状态中。

注意,合法序列要求最少有三个数,所以还需要把一些两个数的方案排除掉;但因为 \(a\) 是从小到大排序,所以不会有合法的两个数的方案,所以无需做这一步。

DP 就是一个类似于背包的东西,是容易的。

点击查看代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
using pii=pair<int,int>;
using ll = long long;
using ull = unsigned long long;
const ll inf = 1e18;
const int mod = 998244353;void solve(){int n;cin>>n;vector<int> a(n+1);for(int i=1;i<=n;i++){cin>>a[i];}sort(a.begin()+1,a.end());vector<vector<int>> f(n+1,vector<int>(5010));//从前i个选,且总和等于j的方案数f[0][0]=1;for(int i=1;i<=n;i++){for(int j=0;j<=5001;j++){f[i][j]=f[i-1][j];}for(int j=0;j<=5001;j++){int w=min(5001ll,a[i]+j);f[i][w]+=f[i-1][j];f[i][w]%=mod;}}int ans=0;for(int i=3;i<=n;i++){//以第i个为最大的,从前i-1个中选,总和大于a[i]的方案数for(int j=a[i]+1;j<=5001;j++){ans+=f[i-1][j];ans%=mod;}}cout<<ans;
}signed main(){ios::sync_with_stdio(0);cin.tie(0);int t=1;// cin>>t; while(t--){solve(); }}

相关新闻

  • 大模型领域负载均衡技术
  • codefoeces EDU186 D[组合数学] E[贪心]
  • CF GYM106049 G [构造][数论]

最新新闻

  • Qwen3-VL:多模态推理范式与空间保真度重构
  • 006、pip 包管理进阶:依赖解析、锁定文件、私有源配置与安全审计
  • SSH连接失败的四层故障定位与实战排查指南
  • 2026生产级Agent工程能力清单:状态管理、可观测性与可追溯性
  • Kotlin可见性修饰符:模块化封装的编译期契约
  • 2026 江苏扬州市全域彩钢瓦翻新修缮 TOP4 权威推荐|沿江高湿厂房金属屋面防水除锈喷漆企业对比 + 业主专属避坑指南 - 本地便民网

日新闻

  • 2026速览惠州叛逆青少年学校前十大排名名单出炉 - 武汉中职最新信息发布
  • 2026上饶白蚁消杀哪家好?15年本土2大权威白蚁防治公司推荐(金盾虫控/青蚁卫士) - 我叫一
  • 天龙八部单机版终极数据管理工具:5个技巧快速掌握游戏数据编辑

周新闻

  • Visual C++运行库修复终极指南:5分钟快速解决Windows软件启动错误
  • 手把手教你构建统计局地区经济数据爬虫:从环境搭建到数据持久化全指南
  • 2026多Agent深度解析:用AI团队替代单一模型,四种架构实战落地

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号