bnuoj 中国地质大学(北京)第三届程序设计竞赛
来源:互联网 发布:java linkedhashmap 编辑:程序博客网 时间:2024/04/28 10:47
4047 魔方系列——相同高度
4050 五角数
根据题目找规律即可 预处理一下,注意提示,最后输出空格即可,
4053 一个很city的问题
找规律,从i=1开始 a[i]=a[i-1]*2+i-1,注意每次取模
此题相当于求最少移动块数,
#include<stdio.h>int main(){ int n,i; int sum,avg,num; int a[550]; while(~scanf("%d",&n),n) { sum=0,avg=0,num=0; for(i=0;i<n;i++) { scanf("%d",&a[i]); sum+=a[i]; } if(sum%n) puts("Impossible"); else { avg=sum/n; for(i=0;i<n;i++) if(a[i]>avg) num+=a[i]-avg; printf("%d\n",num); } }return 0;}4049 四叉树 转自bnuoj
#include<cstdio>#include<cstring>#include<iostream>using namespace std;const int N = 333;string ans[N];int a[16][16];int n;bool judge(int lx, int ly, int rx, int ry){ int i,j; for (i=lx;i<=rx;i++) for(j=ly;j<=ry;j++) if(a[i][j]!= a[lx][ly]) return false; return true;}void dfs(int lx, int ly, int rx, int ry,int d){ if (judge(lx, ly, rx, ry)) { if (a[lx][ly]==0) ans[d]+="00"; else ans[d]+="01"; return; } ans[d] += "1"; int mx = (lx + rx) / 2; int my = (ly + ry) / 2; dfs(lx, ly, mx, my, d+1); dfs(lx, my+1, mx, ry, d+1); dfs(mx+1,ly,rx,my,d+1); dfs(mx+1,my+1,rx,ry,d+1);}int main(){ int i,j; while(~scanf("%d",&n)) { for (i=0;i<n;i++) for (j=0;j<n;j++) scanf("%d",&a[i][j]); for (int i=0;i<N;i++) ans[i] = ""; dfs(0,0,n-1,n-1,0); for (i=0;i<N;i++) cout<<ans[i]; cout<<endl; } return 0;}
4050 五角数
根据题目找规律即可 预处理一下,注意提示,最后输出空格即可,
#include<stdio.h>int main(){ int n,i,j; int a[10000+5]; a[1]=1;//j表示每次递增的值,每次增加3 for(i=2,j=1;i<10001;i++) a[i]=a[i-1]+(j+=3); scanf("%d",&n); printf("%d ",a[n]); return 0;}4052 BT马 (来自分享)
<pre name="code" class="cpp">1、 #include<cstdio>#include<iostream>#include<algorithm>using namespace std;int main(){ int a,b,c,d,k,n; while(~scanf("%d%d",&c,&d)) { scanf("%d",&n); a=min(c,d); b=max(c,d); int k=a/n; if(b>=k*n&&b<=k*n+k&&(a+b)%(2*n+1)==0) puts("Yes"); else puts("No"); } return 0;}2、#include<stdio.h>#include<stdlib.h>int main(){ int x,y,n; while(scanf("%d%d",&x,&y)) { scanf("%d",&n); int sum=n+n+1; int avg=(x+y)/sum; if(x&&y&&(x+y)%sum==0&&abs(x-y)<=avg) puts("Yes"); else puts("No"); }return 0;}
4053 一个很city的问题
找规律,从i=1开始 a[i]=a[i-1]*2+i-1,注意每次取模
#include<stdio.h>#define mod 10111009int main(){ int m,n,i,j; int a[1000+10]={0}; for(i=1;i<=1000;i++) a[i]=(a[i-1]<<1)%mod+i-1; while(scanf("%d",&n)==1) printf("%d\n",a[n]);}
4054 Set the memory
只有两种状态,定义变量标记即可
#include<stdio.h>#include<string.h>#include<stdlib.h>int main(){ int m,n,i,j; char str[10005]; char flag; int ans; while(~scanf("%s",str)){ ans=0; flag='0'; for(i=0;i<strlen(str);i++) { if(str[i]!=flag){ ans++; if(flag=='1') flag='0'; else flag='1'; } } printf("%d\n",ans); } return 0;}4057 魔方系列——最小装箱
#include<stdio.h>int main(){int a,b,c,d,e,f,g,h,sum;int s[4]={0,5,3,1};//si表示装i个3,剩下可以装i个2(i>=0);int t;scanf("%d",&t);while(t--){ scanf("%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f); /*小技巧,一个箱子,可以装4个3*3,但是如果只有一个3*3也要装新箱子,这里这样写省去判断有几个3*3的魔方*/ sum=f+e+d+(c+3)/4; int g=s[c%4]+5*d;//表示壮丽装了4*4和3*3的箱子,还可以装几个2*2的 if(b>g) sum+=(b-g+8)/9;//+8同样道理,多一个2*2就要装新箱子 h=36*sum-36*f-25*e-16*d-9*c-b*4; //1*1的箱子 if(a<=h) printf("%d\n",sum); else printf("%d\n",sum+(a-h+35)/36);}return 0;}
0 0
- bnuoj 中国地质大学(北京)第三届程序设计竞赛
- bnuoj 4351题美女来找茬 (第九届北京师范大学程序设计竞赛决赛)
- bnuoj-4357 传送阵(第九届北京师范大学程序设计竞赛决赛)
- 【BNUOJ】【第十四届北京师范大学程序设计竞赛决赛】D. Air Hockey
- 第九届北京化工大学程序设计竞赛(部分题解)
- 山东省第三届ACM大学生程序设计竞赛(待添加)
- Pick apples(山东省第三届ACM大学生程序设计竞赛)
- BNUOJ 29376 沙漠之旅 // 第十一届北京师范大学程序设计竞赛决赛
- ECNU第三届程序设计竞赛解题报告
- 第九届北京化工大学程序设计竞赛网络同步赛 A (搜索)
- 第七届北京交通大学ACM程序设计竞赛网络预赛一
- 第七届北京交通大学ACM程序设计竞赛网络预赛二
- 第九届北京化工大学程序设计竞赛网络同步赛
- 第九届北京化工大学程序设计竞赛网络同步赛 A
- 第九届北京化工大学程序设计竞赛训练总结【7/10】
- 第八届ACM趣味程序设计竞赛第三场(正式赛)(比赛场)
- Mine Number(2012年"浪潮杯"山东省第三届ACM大学生程序设计竞赛)
- 山东省第三届ACM大学生程序设计竞赛-Pixel density(模拟)
- NGUITween使用技巧
- 分数类的雏形
- 第四次上机作业
- highcharts 生成饼状图 的具体实现
- HDU 1575 Tr A(矩阵快速幂)
- bnuoj 中国地质大学(北京)第三届程序设计竞赛
- 如何让vmware 虚拟机 linux 系统可以上网
- DWR 3 反转Ajax
- C++实验四—分数的累加
- C++ 覆盖 重载 隐藏 override overload hidden
- 无废话ExtJs 入门教程八[脚本调试Firefox:firebug]
- malloc、calloc和realloc
- 第八周-角色类
- 第八周上机实践项目1(3):数组做数据成员