2013-2014 ACM-ICPC Brazil Subregional Programming Contest
来源:互联网 发布:国产胖熊熊片数据库 编辑:程序博客网 时间:2024/06/08 17:53
A.
题意:给A,B,C三个数,A,B,C ∈ {0,1},如果A,B,C中有一个与其他两个不一样,则输出其标号。不存在则输出’*’
题解:模拟
#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<algorithm>#include<queue>#define LiangJiaJun mainusing namespace std;int a,b,c;int LiangJiaJun(){ cin>>a>>b>>c; if(a!=b&&a!=c)return puts("A"),0; if(b!=a&&b!=c)return puts("B"),0; if(c!=a&&c!=b)return puts("C"),0; puts("*"); return 0;}
D.
题意:给两个数列,问第一个数列能否经过翻折变成第二个数列,翻折后重叠的格子的数值是直接相加。
题解:暴力dfs
#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<algorithm>#include<queue>#define LiangJiaJun mainusing namespace std;int n,m;int a[24],b[24],ta[24];bool check(int len){ bool l1=0,l2=0; for(int i=1;i<=len;i++)if(ta[i]!=b[i])l1=1; for(int i=1;i<=len;i++)if(ta[i]!=b[len-i+1])l2=1; if(l1&&l2)return 0;return 1;}bool flag=0;int l,r,sv;void dfs(int cur,int len){ if(flag)return; if(len<m)return; if(len==m){ if(check(len)){ puts("S");flag=1; } return; } int tta[24]; for(int i=1;i<len;i++){ l=i,r=len-i; for(int j=1;j<=len;j++)tta[j]=ta[j]; if(l<r){ for(int k=i,g=i+1;k&&g<=len;k--,g++)ta[g]+=ta[k]; for(int j=1;j<=r;j++)ta[j]=ta[j+l]; } else{ for(int k=i,g=i+1;k&&g<=len;k--,g++)ta[k]+=ta[g]; } sv=max(l,r); dfs(cur+1,sv); for(int j=1;j<=len;j++)ta[j]=tta[j]; }}int LiangJiaJun(){ scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); scanf("%d",&m); for(int i=1;i<=m;i++)scanf("%d",&b[i]); for(int i=1;i<=n;i++)ta[i]=a[i]; if(n==m){ if(check(n))puts("S"); else puts("N"); return 0; } dfs(1,n); if(!flag)puts("N"); return 0;}
E.
题意:第一行两个数n,r,表示开始是n个潜水员下水,回来时候是r个,求问没回来的潜水员的编号
题解:模拟
#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<algorithm>#include<queue>#define LiangJiaJun mainusing namespace std;int pd[10004],n,r;bool q=0;int LiangJiaJun(){ memset(pd,0,sizeof(pd)); scanf("%d%d",&n,&r); for(int i=1;i<=r;i++){ int x;scanf("%d",&x); pd[x]=1; } for(int i=1;i<=n;i++)if(!pd[i])printf("%d ",i),q=1; if(!q)printf("*"); puts(""); return 0;}
F.
题意:一个圆上有n个点将圆分割成n段线段,给你那n条线段的长度,求问那些点能够成多少个等边三角形
题解:二分裸题…..设全部线段长度总和为d,那么能够构成等边三角形的三个点中任意两点之间的劣弧长度一定为d/3
#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<algorithm>#define LiangJiaJun mainusing namespace std;int n,a[100004];int ans=0,lp=0;int erfen(int L,int R,int x){ int mid,l=L,r=R; while(l<=r){ mid=(l+r)>>1; if(a[mid]==x)return mid; if(a[mid]<x)l=mid+1; else r=mid-1; } return -1;}int LiangJiaJun(){ scanf("%d",&n); for(int i=1;i<=n;i++)scanf("%d",&a[i]); for(int i=2;i<=n;i++)a[i]+=a[i-1]; lp=a[n]/3; for(int i=1;i<=n;i++){ int s1,s2,s3; s1=i; s2=erfen(s1+1,n,a[s1]+lp); if(s2==-1)continue; s3=erfen(s2+1,n,a[s2]+lp); if(s3==-1)continue; ++ans; } printf("%d\n",ans); return 0;}
J.
题意:NOIP2013货车运输
#include<iostream>#include<cstring>#include<cstdio>#include<cstdlib>#include<algorithm>#define INF 1999122700#define LiangJiaJun mainusing namespace std;int n,m,s;struct data{int u,v,w;}a[100004];struct edge{int to,nt,w;}e[250004];inline bool dex(data A,data B){return A.w > B.w;}int f[20004];int Find(int x){return (f[x]==x)?f[x]:f[x]=Find(f[x]);}int h[20004],ne=1;int fa[20004][34],d[20004][34],depth[20004];void add(int u,int v,int w){ e[++ne].to=v;e[ne].nt=h[u];h[u]=ne; e[ne].w=w;}void kruskal(){ for(int i=1;i<=n;i++)f[i]=i; int tot=0; for(int i=1;i<=m;i++){ int p=Find(a[i].u),q=Find(a[i].v); if(p!=q){ f[p]=q; add(a[i].u,a[i].v,a[i].w); add(a[i].v,a[i].u,a[i].w); } }}void dfs(int x){ for(int i=1;fa[fa[x][i-1]][i-1];i++){ fa[x][i]=fa[fa[x][i-1]][i-1]; d[x][i]=min(d[x][i-1],d[fa[x][i-1]][i-1]); } for(int i=h[x];i;i=e[i].nt){ if(!depth[e[i].to]){ depth[e[i].to]=depth[x]+1; fa[e[i].to][0]=x; d[e[i].to][0]=e[i].w; dfs(e[i].to); } }}int lca(int u,int v){ if(depth[u]<depth[v])swap(u,v); int dva=(depth[u]-depth[v]); for(int i=0;i<=17;i++)if(dva&(1<<i))u=fa[u][i]; if(u==v)return u; for(int i=17;i>=0;i--){ if(fa[u][i]!=fa[v][i]){ u=fa[u][i]; v=fa[v][i]; } } if(u==v)return u; return fa[u][0];}int query(int x,int f){ int dva=depth[x]-depth[f],ans=INF; for(int i=0;i<=17;i++){ if(dva&(1<<i)){ ans=min(ans,d[x][i]); x=fa[x][i]; } } return ans;}int LiangJiaJun(){ memset(fa,0,sizeof(fa)); memset(d,127/3,sizeof(d)); scanf("%d%d%d",&n,&m,&s); for(int i=1;i<=m;i++) scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].w); sort(a+1,a+m+1,dex); kruskal(); for(int i=1;i<=n;i++){ if(!depth[i]){ depth[i]=1; dfs(i); } } for(int i=1;i<=s;i++){ int x,y,t; scanf("%d%d",&x,&y); if(Find(x)!=Find(y))puts("0"); t=lca(x,y); printf("%d\n",min(query(x,t),query(y,t))); } return 0;}
阅读全文
0 0
- 2013-2014 ACM-ICPC Brazil Subregional Programming Contest
- [2014-2015 ACM-ICPC, NEERC Subregional Contest]解题报告
- 2012-2013 ACM-ICPC, NEERC, Southern Subregional Contest 解题报告
- ACM ICPC 2013-2014. NEERC. Eastern Subregional Contest
- 2012-2013 ACM-ICPC, NEERC, Moscow Subregional Contest
- 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest(2013区域赛练习)
- 2013-2014 ACM-ICPC, NEERC, Moscow Subregional Contest (2013区域赛练习)
- 2013-2014 ACM-ICPC, NEERC, Southern Subregional Contest Problem B. Travelling Camera Problem set贪心
- 2014 ACM-ICPC Beijing Invitational Programming Contest
- 2013-2014 ACM-ICPC, NEERC, Eastern Subregional Contest H:Those are not the droids you're looking for
- 2014-2015 ACM-ICPC, NEERC, Southern Subregional Contest----I. Sale in GameStore
- 2014-2015 ACM-ICPC, NEERC, Moscow Subregional Contest —— E. Equal Digits
- D. Do it Right!(2014-2015 ACM-ICPC, NEERC, Moscow Subregional Contest )
- F. Friends(2014-2015 ACM-ICPC, NEERC, Moscow Subregional Contest )
- D. Data Center(2014-2015 ACM-ICPC, NEERC, Southern Subregional Contest)
- 2014-2015 ACM-ICPC, NEERC, Southern Subregional Contest F. Ilya Muromets
- 2014-2015 ACM-ICPC, NEERC, Southern Subregional Contest D - Data Center 模拟
- D - Data Center-2014-2015 ACM-ICPC, NEERC, Southern Subregional Contest
- File类的getPath()、getAbsolutePath()、getCanonicalPath()
- Android中ConvenientBanner 网络上的图片
- 关于字典dict中的迭代
- 【spark】spark-hive操作
- 在搜索引擎推广自己的网站(比如,百度)
- 2013-2014 ACM-ICPC Brazil Subregional Programming Contest
- 多线程爬坑记--基础篇(一)
- CentOS下mysql的安装
- 基于RPGMakerMV的JavaScript基础-6
- GetModuleFileName
- CCF之消除类游戏
- CSS2.0-3
- Windows下加载CAFFE模型的问题
- linux内核态文件操作filp_open/filp_close/vfs_read/vfs_write