Asce's Summer Ranking No.3
来源:互联网 发布:英菲克爬山虎软件下载 编辑:程序博客网 时间:2024/05/19 22:44
A. 学姐的数码管 2014新生暑假个人排位赛03
题目描述
学姐的七段数码管玩的出神入化。 现在给你一个浮点数,你需要把它以七段数码管的形式输出出来。 一个
输入格式
输入有多组数据,数据不超过100组,每组数据给一个整数
输出格式
输出他的数码管显示。每组数据末尾输出一个空行。
输入样例
3 23303 14564 78.9
输出样例
### ### ### ### # # # # # # # # # #### ### ### # ## # # # ## # # # #### ### ### ### # # # ### ### # # # # # # # # # # # ### ### ### # # # # # # # # # # # # ### ####### #### #### # # # # # # # # # # # # # # # # #### #### # # # # # # # # # # # # # #### # ####
水题,每输入一个数据就case一下,把对应的数字形状打出来
注意细节处理
还有每两个样例间输出空行,注意读题
#include <iostream>#include <cstdio>#include <cstring>#define maxn 70 using namespace std; char a[maxn][maxn]; int n,Dex;char s[10];int main(){ while(~scanf("%d%s",&n,s)) { for(int i=0;i<=65;i++) for(int j=0;j<=65;j++) a[i][j]=' '; Dex=0; for(int i=0;i<=3;i++) { switch(s[i]) { case '0':{for(int j=0;j<=n-1;j++){a[0][Dex+j]='#';a[2*n][Dex+j]='#';} for(int j=0;j<=2*n;j++){a[j][Dex]='#';a[j][Dex+n-1]='#';} Dex+=n+1;break;} case '1':{for(int j=0;j<=2*n;j++){a[j][Dex+n-1]='#';} Dex+=n+1;break;} case '2':{for(int j=0;j<=n-1;j++){a[0][Dex+j]='#';a[n][Dex+j]='#';a[2*n][Dex+j]='#';} for(int j=0;j<=n;j++){a[j][Dex+n-1]='#';} for(int j=n;j<=2*n;j++){a[j][Dex]='#';} Dex+=n+1;break;} case '3':{for(int j=0;j<=n-1;j++){a[0][Dex+j]='#';a[n][Dex+j]='#';a[2*n][Dex+j]='#';} for(int j=0;j<=2*n;j++){a[j][Dex+n-1]='#';} Dex+=n+1;break;} case '4':{for(int j=0;j<=2*n;j++){a[j][Dex+n-1]='#';} for(int j=0;j<=n;j++){a[j][Dex]='#';}for(int j=0;j<=n-1;j++){a[n][Dex+j]='#';} Dex+=n+1;break;} case '5':{for(int j=0;j<=n-1;j++){a[0][Dex+j]='#';a[n][Dex+j]='#';a[2*n][Dex+j]='#';} for(int j=0;j<=n;j++){a[j][Dex]='#';}for(int j=n;j<=2*n;j++){a[j][Dex+n-1]='#';}Dex+=n+1;break;} case '6':{for(int j=0;j<=n-1;j++){a[0][Dex+j]='#';a[n][Dex+j]='#';a[2*n][Dex+j]='#';}for(int j=0;j<=2*n;j++){a[j][Dex]='#';}for(int j=n;j<=2*n;j++){a[j][Dex+n-1]='#';}Dex+=n+1;break;} case '7':{for(int j=0;j<=n-1;j++){a[0][Dex+j]='#';}for(int j=0;j<=2*n;j++){a[j][Dex+n-1]='#';}Dex+=n+1;break;} case '8':{for(int j=0;j<=n-1;j++){a[0][Dex+j]='#';a[n][Dex+j]='#';a[2*n][Dex+j]='#';}for(int j=0;j<=2*n;j++){a[j][Dex]='#';a[j][Dex+n-1]='#';}Dex+=n+1;break;} case '9':{for(int j=0;j<=n-1;j++){a[0][Dex+j]='#';a[n][Dex+j]='#';a[2*n][Dex+j]='#';}for(int j=0;j<=2*n;j++){a[j][Dex+n-1]='#';}for(int j=0;j<=n;j++){a[j][Dex]='#';}Dex+=n+1;break;} case '.':{a[2*n][Dex]='#';Dex+=2;break;} } } for(int i=0;i<=2*n;i++) { for(int j=0;j<=Dex-2;j++) printf("%c",a[i][j]); printf("\n"); } printf("\n"); } return 0;}
-----------------------------------------------------------------------------------
B. 学姐的旋转图像 2014新生暑假个人排位赛03
题目描述
学姐在学图形学,然后写了一个能让图片逆时针转圈的程序。这个程序很厉害,只要输入灰度图片和旋转过的角度(90的倍数),就可以输出一个新图片。给你一张图片的灰度矩阵,和它已转过的角度,请输出图片旋转前的灰度图矩阵。
输入格式
接下来给出图片扫描稿的高H和宽W,图片的灰度矩阵,高宽都小于500,题目其他的所有数值都小于int的范围。多组数据,组数小于20,EOF结束。
输出格式
一个矩阵
输入样例
2 2 1800 11 2
输出样例
2 11 0
注意角度不一定小于360度
#include <iostream>#include <cstdio>#define maxh 505 using namespace std; int a[maxh][maxh];int h,w,degree;int main(){ while(~scanf("%d%d%d",&h,&w,°ree)) { for(int i=1;i<=h;i++) for(int j=1;j<=w;j++) scanf("%d",&a[i][j]); degree=degree%360; switch(degree) { case 0:{ for(int i=1;i<=h;i++) { for(int j=1;j<w;j++) printf("%d ",a[i][j]); printf("%d\n",a[i][w]); } break; } case 90:{ for(int j=1;j<=w;j++) { for(int i=h;i>1;i--) printf("%d ",a[i][j]); printf("%d\n",a[1][j]); } break; } case 180:{ for(int i=h;i>=1;i--) { for(int j=w;j>1;j--) printf("%d ",a[i][j]); printf("%d\n",a[i][1]); } break; } case 270:{ for(int j=w;j>=1;j--) { for(int i=1;i<h;i++) printf("%d ",a[i][j]); printf("%d\n",a[h][j]); } break; } } } return 0;}
--------------------------------------------------------------
C. 字符串 2014新生暑假个人排位赛03
题目描述
维护一个字符串集合:初始为空,依次处理一些插入操作,并在插入之后输出该字符串在集合中出现的次数。
字符串的长度不超过100,字符串个数不超过100000。
输入格式
输入文件包含若干行,每行为一个字符串,依次代表一个待插入的字
符串。该字符串一定非空,且仅包含英文字母和数字。
输出格式
对于每个插入操作输出一行一个整数,代表插入该字符串之后,该字
符串在集合中出现的次数。
输入样例
str1str2str1str1str2str3
输出样例
112321
#include <iostream>#include <map>#include <cstdio>#include <string>#include <cstring> using namespace std; map<string,int> mm; string temp;char temp0[105];int len;int main(){ mm.clear(); while(~scanf("%s",temp0)) { len=strlen(temp0); temp.assign(temp0,len); if(mm.count(temp)==0) { mm.insert(pair<string,int>(temp,1)); printf("1\n"); } else { mm.find(temp)->second++; printf("%d\n",mm.find(temp)->second); } } return 0;}
#include <iostream>#include <cstdio>#include <cstring>#define LL unsigned long long using namespace std; LL Get_hash(char a[]){ int len=strlen(a); LL seed=13; for (int i=0;i<=len-1;i++) { seed+=a[i]; seed*=13; } return seed;} char temp[105]; LL hashs[1000000];int Num[1000000];int main(){ memset(hashs,0,sizeof(hashs)); memset(Num,0,sizeof(Num)); while(~scanf("%s",temp)) { LL Hs=Get_hash(temp); int Mo=Hs%900000; int i; for(i=Mo;hashs[i]!=0 &&i<=999999;i++) { if(hashs[i]==Hs) {Num[i]++;printf("%d\n",Num[i]);break;} } if(hashs[i]==0) { hashs[i]=Hs; Num[i]++; printf("%d\n",Num[i]); } } return 0;}
---------------------------------------------------------------------------------
D. 田田的账号 2014新生暑假个人排位赛03
题目描述
田田申请了一个新的oj账号,打算取一个霸气而简单的名字。 什么叫简单呢?说白了田田脑子不好使,只能记住abcd这4个字母组成单词。 怎么叫霸气呢?田田认为a个个数一定要有奇数个,b的个数一定要有偶数个(包括0)才可以。 现在田田取了一个长为n的账号,但是由于田田的记性实在太差了,而把账号忘记了. 于是把这个问题交给了聪明的wzt,而他认为这道题太过于简单就把这道题交给了你 究竟这个账号有多少种可能?你只需得到这个结果模
输入格式
多组case,第一行为case数
输出格式
一个case对应一行输出
输入样例
212
输出样例
14
#include <iostream>#include <cstdio>#define moo 1000000007 using namespace std; long long pow_mod(long long a,long long i,long long n){ if(i==0) return 1%n; long long temp=pow_mod(a,i>>1,n); temp=temp*temp%n; if(i&1) temp=temp*a%n; return temp;}int t,nn;int main(){ scanf("%d",&t); while(t--) { scanf("%d",&nn); printf("%lld\n",pow_mod(4,nn-1,moo)); } return 0;}
----------------------------------------------------------------------
419. 学姐的数列
题目描述
定义一颗平衡二叉树满足条件:对于任意节点,其左子树的权值之和等于右子树权值之和。如图:
我们用序列表示上图平衡二叉树,即4 1 1 2 4 4。
现在给定一个序列,求其能最长的能构成平衡二叉树的子序列。子序列元素为原序列的子集,且元素间保持原顺序。
输入格式
输入第一行为数据组数
输出格式
每组数据输出一行,符合题意的最长子序列的长度。
输入样例
262 0 0 1 2 250 0 0 0 0
输出样例
64
#include <iostream>#include <cstdio>#include <cstring> using namespace std; int t,n;int a[130];int dp[130][130][20];int main(){ scanf("%d",&t); while(t--) { scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) for(int j=i;j<=n;j++) for(int k=i;k<=j;k++) dp[i][j][a[k]]=1; for(int k=1;k<=20;k++) for(int i=1;i<=n;i++) for (int j=i;j<=n;j++) for(int mid=i;mid<j;mid++) if(dp[i][mid][k-1]!=0 && dp[mid+1][j][k-1]!=0) dp[i][j][k]=max(dp[i][j][k],dp[i][mid][k-1]+dp[mid+1][j][k-1]); int ans=0; for(int k=1;k<=20;k++) for(int i=1;i<=n;i++) for (int j=i;j<=n;j++) ans=max(ans,dp[i][j][k]); printf("%d\n",ans); } return 0;}
还有用位运算优化的版本,蒟蒻没看懂。。代码见whn神犇的blog
- Asce's Summer Ranking No.3
- Asce's Summer Ranking No.1
- Asce's Summer Ranking No.2
- Asce's Summer Ranking No.4
- Asce's Summer Ranking No.6
- Asce's Summer Ranking No.5
- Asce's Summer Ranking No.7
- Asce's Summer Ranking No.8
- Asce's Summer Ranking No.9
- Asce‘s Summer Ranking No.11
- JSU 2013 Summer Individual Ranking Contest - 5
- JSU 2013 Summer Individual Ranking Contest - 6
- Google‘s Metrix - Ranking Factors
- SDKD Summer Team Contest S
- Ranking
- summer 's wonderful so why not SMILE
- 10057 - A mid-summer night's
- 10057 - A mid-summer night's dream.
- 【转载】静看“阿里浪“的碰撞
- 命题公式转CNF和CNF转DNF算法
- MySQL入门
- RPM安装、反安装和升级软件包
- PHP入门
- Asce's Summer Ranking No.3
- 动态规划--Humble Numbers
- 初学HTML与PHP
- CALayer
- 经典线程处理打印ABC问题分析
- hihocoder _训练赛第一周_最长回文子串(不完美)
- PHP与MySQL
- PHP数组基础
- 机房收费系统重构—番外篇