2017ACM/ICPC广西邀请赛 CS Course
题意:删除指定数字,求剩下数字的与或非值
解法:保存一下前缀和后缀
1 #include <iostream> 2 #include <stdio.h> 3 #include <vector> 4 #include <string.h> 5 #include <map> 6 using namespace std; 7 int x1[123456],y1[123456],z1[123456]; 8 int x2[123456],y2[123456],z2[123456]; 9 int num[123456]; 10 map<int,int>Mp; 11 int n,m; 12 map<int,int>::iterator it; 13 int main(){ 14 while(~scanf("%d%d",&n,&m)){ 15 memset(x1,0,sizeof(x1)); 16 memset(y1,0,sizeof(y1)); 17 memset(z1,0,sizeof(z1)); 18 memset(x2,0,sizeof(x2)); 19 memset(y2,0,sizeof(y2)); 20 memset(z2,0,sizeof(z2)); 21 for(int i=1;i<=n;i++){ 22 scanf("%d",&num[i]); 23 } 24 x1[2]=num[1]; 25 x2[n-1]=num[n]; 26 y1[2]=num[1]; 27 y2[n-1]=num[n]; 28 z1[2]=num[1]; 29 z2[n-1]=num[n]; 30 for(int i=3;i<=n;i++){ 31 x1[i]=x1[i-1]^num[i-1]; 32 } 33 for(int i=n-2;i>=1;i--){ 34 x2[i]=x2[i+1]^num[i+1]; 35 } 36 for(int i=3;i<=n;i++){ 37 y1[i]=y1[i-1]|num[i-1]; 38 } 39 for(int i=n-2;i>=1;i--){ 40 y2[i]=y2[i+1]|num[i+1]; 41 } 42 for(int i=3;i<=n;i++){ 43 z1[i]=z1[i-1]&num[i-1]; 44 } 45 for(int i=n-2;i>=1;i--){ 46 z2[i]=z2[i+1]&num[i+1]; 47 } 48 while(m--){ 49 int ans; 50 scanf("%d",&ans); 51 if(ans==1){ 52 printf("%d %d %d\n",z2[ans],y2[ans],x2[ans]); 53 }else if(ans==n){ 54 printf("%d %d %d\n",z1[ans],y1[ans],x1[ans]); 55 }else{ 56 printf("%d %d %d\n",z2[ans]&z1[ans],y2[ans]|y1[ans],x2[ans]^x1[ans]); 57 } 58 } 59 } 60 return 0; 61 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~