当前位置: 首页 > news >正文

P8187 [USACO22FEB] Robot Instructions S

洛谷

看到 \(1\le N\le 40\) 甚至部分分 \(N\le 20\) 而且只有选和不选两种情况,这不是折半是什么?

那么直接考虑最板子的折半,前面一半从起点直接暴力搜索是否选择,得到最后的位置,另一半从终点往回走,最后统计是否有多少相等的数量即可。

但是分析一下时间复杂度,还是比较极限的,再加上如果你用 map 存储的话常数超级大,如果不卡卡常数最后可能就是压线通过的,卡常能力差一点可能会被某一些差一点的 OJ 卡。

那么考虑把 map 给优化掉。

我们直接用 vector 来存储,然后直接排序,在末尾统计时直接使用一个指针查找相同的数量,每次都只会遍历一次,时间复杂度直接优化掉了一个 \(\log\) 以及超级巨大的常数。

需要注意的是判断是否有相同的情况。

当然这道题目还可以优化,可以试着直接将几个选择数量不同的直接放在一起处理,不过整体意义也不大,所以就没有写。

下面一个是 map 的,上面一个是 vector 的,可见差距确实非常大,事实证明能不要随便用 map,当然也不排除是我的 map 写得太差了。

vector 的代码:

#include<bits/stdc++.h>
using namespace std;
int n,x[45],y[45],ex,ey,p[45];
long long ans[45];
vector<pair<int,int>> e[45],e2[45];
void dfs(int p,int z,int sum,int xx,int yy,bool f){if(f)e[sum].push_back({xx,yy});if(p>z)return;dfs(p+1,z,sum,xx,yy,0);dfs(p+1,z,sum+1,xx+x[p],yy+y[p],1);
}
void dfs2(int p,int z,int sum,int xx,int yy,bool f){if(f)e2[sum].push_back({xx,yy});if(p>z)return;dfs2(p+1,z,sum,xx,yy,0);dfs2(p+1,z,sum+1,xx-x[p],yy-y[p],1);
}
bool cmp(pair<int,int> x,pair<int,int> y){return x<y;
}
signed main(){cin>>n;cin>>ex>>ey;for(int i=1;i<=n;i++)cin>>x[i]>>y[i];dfs(1,(n+1)/2,0,0,0,1);dfs2((n+1)/2+1,n,0,ex,ey,1);for(int i=0;i<=(n+1)/2;i++)sort(e[i].begin(),e[i].end());for(int i=0;i<=(n+1)/2;i++)sort(e2[i].begin(),e2[i].end());for(int i=0;i<=(n+1)/2;i++){for(int j=0;j<=(n+1)/2;j++)p[j]=0;for(int o=0;o<e[i].size();o++){pair<int,int> k=e[i][o];int sum=1;while(o+1<e[i].size()&&e[i][o+1]==k)o++,sum++;for(int j=0;j<=(n+1)/2;j++){while(p[j]<e2[j].size()&&e2[j][p[j]]<k)p[j]++;while(p[j]<e2[j].size()&&e2[j][p[j]]==k)ans[j+i]+=1ll*sum,p[j]++;}	}}for(int i=1;i<=n;i++)cout<<ans[i]<<endl;return 0;
}
http://www.rkmt.cn/news/75792.html

相关文章:

  • P8271 [USACO22OPEN] COW Operations S
  • Manim介绍
  • P6803 [CEOI 2020] 星际迷航
  • CF1970E3 Trails (Hard)
  • 双线性四边形等参单元程序(MATLAB实现)
  • P6706 [COCI 2010/2011 #7] KUGLICE
  • AT_arc179_d [ARC179D] Portable Gate
  • P3576 [POI 2014] MRO-Ant colony
  • flink 1.20 物化表(Materialized Tables) - 详解
  • 大模型算法学习
  • Linux——网络命令和常用服务 - 指南
  • P11580 [CCC2020] Escape Room
  • 2025最新绿色低碳工厂建设五大服务商/厂家推荐!工业智能化升级权威指南,助力企业实现双碳目标与高效生产
  • P6000 [CEOI2016] match
  • 汽车智能座舱软件、技术、分类介绍
  • 『NAS』在群晖部署图表绘制工具-Draw.io
  • PowerShell TOTP 身份验证器
  • linux 中gzip、bzip2、xz压缩、解压缩
  • Java方法
  • 【Java EE进阶 --- SpringBoot】统一特性处理
  • 2025液体钙权威品牌推荐,首选inne液体钙
  • 2025 年 12 月数粒机厂家权威推荐榜:覆盖防爆/高速/高精度/智能/视觉全自动等新型设备,制药食品农业电子多行业定制化解决方案深度解析
  • 儿童营养选对不踩坑!德国 inne以硬核品质展现品牌价值
  • 2025年12月四面弹面料厂家权威推荐榜:尼龙/涤纶/TR消光等八大品类,揭秘高弹力与舒适度的科技织物奥秘
  • 2025 年 12 月真空自耗电弧炉厂家权威推荐榜:涵盖2.5t/4t/7t真空熔炼炉型,尖端电极自耗技术深度解析与高效选购指南
  • Springboot智慧旅游管理系统6w63eon8(软件+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 【EF Core】“DB First”方案下用编程方式生成数据库模型代码
  • 面向AI时代的操作系统:openEuler在WSL环境下的高效开发实践
  • 2025 最新机器视觉检测服务商 / 厂家 TOP5 评测!智能检测赋能制造升级,权威榜单助力企业选型,智慧工厂设计、建设及管理解决方案
  • 2025年中国五大铝氧化着色生产企业推荐,看哪家工艺水平高