2019西安多校联训 Day2
时间:2019-06-12
本文章向大家介绍2019西安多校联训 Day2,主要包括2019西安多校联训 Day2使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
T1
残忍WA 0,明明就是一道非常菜的字符串QAQ
思路:一共找四种东西,AC,CA,ACA,CAC,显然后两者
都可以作为AC或CA使用,每次查找后将查找到的串全变为
'B'避免重复搜索,三个bool变量记录即可
T1-
AC
1 #include <bits/stdc++.h> 2 using namespace std; 3 char s[100010]; 4 int len; 5 bool ac,ca,ak; 6 int main(){ 7 while(scanf("%s",&s)==1){ 8 len=strlen(s); 9 for(register int i=0;i<len-1;i++){ 10 if((s[i]=='A'&&s[i+1]=='C'&&s[i+2]=='A'&&ak==0)||(s[i]=='C'&&s[i+1]=='A'&&s[i+2]=='C'&&ak==0)){ak=1;s[i]=s[i+1]=s[i+2]='B';} 11 if(s[i]=='A'&&s[i+1]=='C'&&ac==0){ 12 ac=1; 13 s[i]='B';s[i+1]='B'; 14 } 15 if(s[i]=='C'&&s[i+1]=='A'&&ca==0){ 16 ca=1; 17 s[i]='B';s[i+1]='B'; 18 } 19 } 20 if(ak==1&&(ac==1||ca==1)) printf("YES\n"); 21 else if(ac==1&&ca==1) printf("YES\n"); 22 else printf("NO\n"); 23 ac=0,ca=0,ak=0; 24 memset(s,' ',sizeof(s)); 25 } 26 return 0; 27 }
T2
一道看上去像大水题的难题,需要神奇的搜索方式来搞
掉,难度中上
思路:首先找到大兵所在位置,然后填补他所在2*2的格子,
然后是4*4,8*8以对角线的方式来搜索填补对面的格子,以确保
一定填满的同时,填法不会出锅,填的同时记录填补格子的坐标
和放置方式,最后按照字典序输出即可
T2-
拯救瑞恩
1 #include <bits/stdc++.h> 2 using namespace std; 3 int n,k,a[1201][1201]; 4 int f[11]={0,2,4,8,16,32,64,128,256,512,1024}; 5 struct node{ 6 int x,y,w; 7 }ans[1400010]; 8 int ansnum; 9 bool cmp(node p,node q){ 10 if(p.x==q.x) return p.y<q.y; 11 else return p.x<q.x; 12 } 13 void dfs(int x1,int y1,int x2,int y2,int X,int Y){ 14 if(x2-x1==1&&y2-y1==1){ 15 if(X==x1&&Y==y1){ans[++ansnum].x=x1,ans[ansnum].y=y1,ans[ansnum].w=3;} 16 if(X==x1&&Y==y2){ans[++ansnum].x=x1,ans[ansnum].y=y1,ans[ansnum].w=1;} 17 if(X==x2&&Y==y1){ans[++ansnum].x=x1,ans[ansnum].y=y1,ans[ansnum].w=2;} 18 if(X==x2&&Y==y2){ans[++ansnum].x=x1,ans[ansnum].y=y1,ans[ansnum].w=4;} 19 return; 20 } 21 int x=(x2-x1+1)/2+x1-1; 22 int y=(y2-y1+1)/2+y1-1; 23 if(X<=x&&Y<=y){ 24 dfs(x1,y1,x,y,X,Y); 25 ans[++ansnum].x=x,ans[ansnum].y=y,ans[ansnum].w=3; 26 dfs(x+1,y1,x2,y,x+1,y); 27 dfs(x+1,y+1,x2,y2,x+1,y+1); 28 dfs(x1,y+1,x,y2,x,y+1); 29 } 30 if(X<=x&&Y>y){ 31 dfs(x1,y+1,x,y2,X,Y); 32 ans[++ansnum].x=x,ans[ansnum].y=y,ans[ansnum].w=1; 33 dfs(x1,y1,x,y,x,y); 34 dfs(x+1,y1,x2,y,x+1,y); 35 dfs(x+1,y+1,x2,y2,x+1,y+1); 36 } 37 if(X>x&&Y<=y){ 38 dfs(x+1,y1,x2,y,X,Y); 39 ans[++ansnum].x=x,ans[ansnum].y=y,ans[ansnum].w=2; 40 dfs(x+1,y+1,x2,y2,x+1,y+1); 41 dfs(x1,y1,x,y,x,y); 42 dfs(x1,y+1,x,y2,x,y+1); 43 } 44 if(X>x&&Y>y){ 45 dfs(x+1,y+1,x2,y2,X,Y); 46 ans[++ansnum].x=x,ans[ansnum].y=y,ans[ansnum].w=4; 47 dfs(x1,y1,x,y,x,y); 48 dfs(x1,y+1,x,y2,x,y+1); 49 dfs(x+1,y1,x2,y,x+1,y); 50 } 51 } 52 int main(){ 53 int x,y; 54 scanf("%d%d%d",&k,&x,&y); 55 n=f[k]; 56 dfs(1,1,n,n,x,y); 57 sort(ans+1,ans+ansnum+1,cmp); 58 for(register int i=1;i<=ansnum;i++) printf("%d %d %d\n",ans[i].x,ans[i].y,ans[i].w); 59 return 0; 60 }
T3
个人认为一道极其毒瘤的题(尤其针对我这种链表+dfs打不好的人)
思路:用链式前向星存储图,然后dfs搜索答案,在dfs中用二分查找
来维护区间的值....(这谁顶得住)
T3-
tree
1 #include <bits/stdc++.h> 2 using namespace std; 3 struct node{ 4 long long nxt,to,dis; 5 }edge[2000010]; 6 long long head[2000010]; 7 long long cnt,ans,n,k,m,u,v,w; 8 long long a[2000010],zkcrp[2000010]; 9 void addedge(int from,int to,int w) 10 { 11 cnt++; 12 edge[cnt].to=to; 13 edge[cnt].dis=w; 14 edge[cnt].nxt=head[from]; 15 head[from]=cnt; 16 } 17 bool ef(int l,int r,long long zkc) 18 { 19 if(zkcrp[l]==zkc||zkcrp[r]==zkc) return true; 20 if(r-l<=1) return false; 21 int mid=(l+r)>>1; 22 if(zkcrp[mid]<zkc)return ef(mid+1,r,zkc); 23 else return ef(l,mid,zkc); 24 } 25 void dfs(long long now,long long deep) 26 { 27 if(ef(0,deep,a[now]-k)) ans++; 28 for(register int i=head[now];i;i=edge[i].nxt) 29 { 30 if(a[edge[i].to]||edge[i].to==m)continue; 31 a[edge[i].to]=a[now]+edge[i].dis; 32 zkcrp[deep+1]=a[edge[i].to]; 33 dfs(edge[i].to,deep+1); 34 } 35 } 36 int main(){ 37 scanf("%lld%lld%lld",&n,&m,&k); 38 for(register int i=1;i<n;i++){ 39 scanf("%lld%lld%lld",&u,&v,&w); 40 addedge(u,v,w); 41 addedge(v,u,w); 42 } 43 dfs(m,0); 44 printf("%lld\n",ans); 45 return 0; 46 }
end;
原文地址:https://www.cnblogs.com/liuhailin/p/11009616.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 1.6 Navigating This Book(本书导航)
- 2.1 The Python Interpreter(python解释器)
- Linux系统—Centos7安装教程
- 2.2 IPython基础
- Linux系统crond、rsync、打包备份数据操作实战
- 2.3 Python语言基础
- 开发需求
- Linux系统组建SVN服务器
- 面向对象学习
- 常用模块
- 代理错误[WinError 10061]
- Linux系统JDK+Tomcat环境安装布署过程
- Python version 3.6 required, which was not found in the registry错误解决
- LNMP架构应用实战——Nginx服务介绍与安装
- 使用tidylib解决不规则网页问题