noip2014 普及组
珠心算测验 题目传送门
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; int read(){ int ans=0,f=1,c=getchar(); while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();} while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();} return ans*f; } int n,w[107],sum[100007],ans; int main() { n=read(); for(int i=1;i<=n;i++) w[i]=read(),sum[w[i]]++; for(int i=1;i<=n;i++){ for(int j=i+1;j<=n;j++) if(sum[w[i]+w[j]]) ans++,sum[w[i]+w[j]]--; } printf("%d ",ans); return 0; }
螺旋矩阵 题目传送门
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int M=30007; int read(){ int ans=0,f=1,c=getchar(); while(c<'0'||c>'9'){if(c=='-') f=-1; c=getchar();} while(c>='0'&&c<='9'){ans=ans*10+(c-'0'); c=getchar();} return ans*f; } int n,x,y; int dfs(int n,int x,int y){ if(x!=1&&x!=n&&y!=1&&y!=n) return 4*(n-1)+dfs(n-2,x-1,y-1); if(x==1) return y; if(y==n) return n-1+x; if(x==n) return 2*(n-1)+(n-y+1); return 3*(n-1)+(n-x+1); } int main() { n=read(); x=read(); y=read(); printf("%d ",dfs(n,x,y)); return 0; }