北邮新生排位赛1解题报告d-e
话说cdsn要是前面插入源代码又什么都不放就会出现奇怪的源代码?不知道是哪个网页的
407. BLOCKS
KB
题目描述
给定一个N∗M的矩阵,求问里面有多少个由'#'组成的矩形,"There
are 5 ships.",若是里面有一个不是矩形的联通块,则输出"So Sad"
输入格式
1≤n,m≤1000
有多组数据,EOF结束。
输出格式
每行对应一个answer
输入样例
6 8
.....#.#
##.....#
##.....#
.......#
#......#
#..#...#
6 8
.....#.#
##.....#
###...##
.......#
##.....#
#..#...#
输出样例
There are 5 ships.
So Sad
好孩子们都用的bfs,不过因为时间足够所以我直接水过了
#include <cstdio>
using namespace std;
int len[1000][1000];
int width[1000][1000];
int readchar(){//just want to sleep
while(1){
char ch=getchar();
if(ch=='#')return 1;
if(ch=='.')return 0;
if(ch==EOF)return -1;
}
}
int main()
{
int n,m;
while(scanf("%d %d",&n,&m)==2){
for(int i=0;i<n;i++){
int l=0;
for(int j=0;j<m;j++){
int chsign=readchar();
if(chsign==0){
len[i][j]=0;
l=0;
}
else if(chsign==1){
len[i][j]=l+1;
l++;
}
}
}
bool ans=true;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(len[i][j]==0){
width[i][j]=0;
if(i&&len[i-1][j]&&j&&len[i][j-1]){
ans=false;
break;
}
}
if(i==0||(len[i-1][j]==0&&len[i][j+1]==0))width[i][j]=1;
if(i&&len[i-1][j]!=len[i][j]&&len[i-1][j]&&len[i][j]){
ans=false;
break;
}
}
if(!ans)break;
}
int ansi =0;
for(int i=n-1;i>=0;i--){
for(int j=m-1;j>=0;j--){
if(len[i][j]==0)continue;
if(i-1>=0&&len[i-1][j])continue;
if(j-1>=0&&len[i][j-1])continue;
ansi++;
}
}
if(!ans)printf("So Sad\n");
else printf("There are %d ships.\n",ansi);
}
return 0;
}
E. 数的关系 2014新生暑假个人排位赛01
KB
题目描述
用关系“<”和“=”将3个数A、B和C依序排列时有13种不同的序关系:
A=B=C,A=B<C,A<B=C,A<B<C,A<C<B,A=C<B,B<A=C,
B<A<C,B<C<A,B=C<A,C<A=B,C<A<B,C<B<A。
现在输入数字的个数,要求你给出上述关系的数目。
数的个数不大于100
输入格式
多组数据,EOF结束
每行一个输入
输出格式
对于每个输入,输出一行,即对应答案
输入样例
3
输出样例
13
明显是递推,但是递推公式推错了囧,而且还狂交一气
其实是dp
但是应该把当前状态分解成子状态,dp[n][m],递增的m个位置塞下n个字母,且没有位置是空的
import java.math.*;
import java.util.Scanner;
import java.io.*;
public class Main {
public static void main(String args[]){
BigInteger dp[][]=new BigInteger [101][101];
BigInteger ans[]=new BigInteger[101];
ans[0]=BigInteger.ZERO;
for(int i=0;i<101;i++){
for(int j=0;j<101;j++){
dp[i][j]=BigInteger.ZERO;
}
}
dp[1][1]=BigInteger.ONE;
for(int i=2;i<101;i++){
for(int j=1;j<=i;j++){
dp[i][j]=(dp[i-1][j-1].add(dp[i-1][j]));
dp[i][j]=dp[i][j].multiply(BigInteger.valueOf(j));
}
}
for(int i=1;i<101;i++){
ans[i]=BigInteger.ZERO;
for(int j=1;j<=i;j++){
ans[i]=ans[i].add(dp[i][j]);
}
}
Scanner cin=new Scanner(System.in);
while(cin.hasNext()){
int n=cin.nextInt();
System.out.println(ans[n]);
}
}
}
看了解题报告还是never兄的更好
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <cstring>
using namespace std;
void print(int p[]){
printf("%d",p[p[0]]);//p[0]用于保存长度(数组)
for(int i=p[0]-1;i>=1;i--){
printf("%d",p[i]/1000%10);//防止有缺失,如某个数位上为0001的情况
printf("%d",p[i]/100%10);
printf("%d",p[i]/10%10);
printf("%d",p[i]%10);
}
printf("\n");
}
void bigintegeradd(int sum[],int p1[],int p2[]){
sum[0]=max(p1[0],p2[0]);
for(int i=1;i<=sum[0];i++){
sum[i]=p1[i]+p2[i];//ATTENTION高位需置为0
}
for(int i=1;i<=sum[0];i++){
sum[i+1]+=sum[i]/10000;
sum[i]%=10000;
}
if(sum[sum[0]+1]){
sum[0]++;//加法进位一位
}
}
void bigmultiply(int mul[],int p1[],int p2[]){
mul[0]=p1[0]+p2[0];//至少要有p1 p2长度之和+1长度
for(int i=1;i<=p1[0];i++){//不能自身同时为参数mul和p
for(int j=1;j<=p2[0];j++){
mul[i+j-1]=p1[i]*p2[j];
}
for(int j=1;j<=mul[0];j++){
mul[j+1]=mul[j]/10000;
mul[j]%=10000;
}
}
for(int i=mul[0]+1;i>=1;i--){
if(mul[i]==0){mul[0]--;}
else break;
}
}
void bigmultiplysingle(int p[],int a){//改变自身
for(int i=1;i<=p[0];i++){
p[i]*=a;
}
for(int i=1;i<=p[0];i++){
p[i+1]+=p[i]/10000;
p[i]%=10000;
}
while(p[p[0]+1]>0){
p[0]++;
p[p[0]+1]=p[p[0]]/10000;
p[p[0]]%=10000;
}
}
int dp[101][101][101];
int ans[101][203];
int main(){
for(int i=1;i<101;i++){
dp[i][1][0]=1;
dp[i][1][1]=1;
for(int j=2;j<=i;j++){
bigintegeradd(dp[i][j],dp[i-1][j],dp[i-1][j-1]);
// printf("dp[i-1][j-1] ");
// print(dp[i-1][j-1]);
// printf("dp[i-1][j] ");
// print(dp[i-1][j]);
// printf("after add :dp[i][j] ");
// printf("dp[i][j]len: %d\n",dp[i][j][0]);
//print(dp[i][j]);
// printf("after multiply %d: ",j);
bigmultiplysingle(dp[i][j],j);
// print(dp[i][j]);
// for(int k=dp[i][j][0];k>0;k--)printf("%d",dp[i][j][k]);
// printf("\n");
//printf("dp[i][j]len: %d\n\n",dp[i][j][0]);
}
}
for(int i=1;i<101;i++){
for(int j=1;j<101;j++){
bigintegeradd(ans[i],ans[i],dp[i][j]);
}
}
int n;
while(scanf("%d",&n)==1){
print(ans[n]);
}
}
北邮新生排位赛1解题报告d-e的更多相关文章
- 北邮新生排位赛1解题报告a-c
<div class="page-header" style="padding-bottom: 9px; margin: 20px 0px 30px; border ...
- 北邮新生排位赛2解题报告a-c
A. 丁神去谷歌 2014新生暑假个人排位赛02 时间限制 1000 ms 内存限制 65536 KB 题目描述 丁神要去Google上班了,去之前丁神想再做一道水题,但时间不多了,所以他希望题目做起 ...
- 北邮新生排位赛2解题报告d-e
<> 427. 学姐逗学弟 时间限制 3000 ms 内存限制 131072 KB 题目描述 学弟们来了之后,学姐每天都非常高兴的和学弟一起玩耍.这一天,学姐想出了这样一个游戏,她画了一棵 ...
- 2014北邮新生归来赛解题报告a-c
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...
- 2014北邮新生归来赛解题报告d-e
D: 399. Who Is Joyful 时间限制 3000 ms 内存限制 65536 KB 题目描述 There are several little buddies standing in a ...
- SCNU ACM 2016新生赛决赛 解题报告
新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...
- SCNU ACM 2016新生赛初赛 解题报告
新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...
- 2017.7.15清北夏令营精英班Day1解题报告
成绩: 预计分数:20+10+40 实际分数:100+10+40. 一百三十多人的比赛全场rand7还水了个鼠标+键盘 unbelievable! 考试题目链接: https://www.luogu. ...
- LeetCode解题报告:Linked List Cycle && Linked List Cycle II
LeetCode解题报告:Linked List Cycle && Linked List Cycle II 1题目 Linked List Cycle Given a linked ...
随机推荐
- 纯css3样式属性制作各种图形图标
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Android 高手进阶之自定义View,自定义属性(带进度的圆形进度条)
Android 高手进阶(21) 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请注明地址:http://blog.csdn.net/xiaanming/article/detail ...
- 【转载】【Oracle 11gR2】db_install.rsp详解
[原文]http://blog.csdn.net/jameshadoop/article/details/48086933 ###################################### ...
- 转:从开源项目学习 C 语言基本的编码规则
从开源项目学习 C 语言基本的编码规则 每个项目都有自己的风格指南:一组有关怎样为那个项目编码约定.一些经理选择基本的编码规则,另一些经理则更偏好非常高级的规则,对许多项目而言则没有特定的编码规则,项 ...
- openSUSE 国内镜像和镜像使用帮助 (zhuan)
https://my.oschina.net/u/2475751/blog/631036?p={{currentPage-1}} https://lug.ustc.edu.cn/wiki/mirror ...
- 什么是cname a记录
https://support.dnsimple.com/articles/cname-record/ CNAME就是别名记录,就是负责跳转,比如你给某个地址设置了一个cname,那当访问那个cnam ...
- graph-tool文档(一)- 快速开始使用Graph-tool - 3.图的过滤
目录: 图的过滤 图视图 -- 组合图视图 名词解释: filter:过滤 mask:屏蔽 inverted parameter:倒参数 overhead:开销 minimum spanning tr ...
- 销售 >> 当今社会生产力最大的源泉为 >>自助服务 与推销员随之消失
销售可能是变化最大的企业职能.比如,经济学家喜欢提出陷阱问题“什么概念或者想法成为当今社会生产力最大的源泉?” 大多数人回答计算机, 正确的回答是自助服务与推销员随之消失 ...
- semantic-ui使用gulp执行build-css报错
1.执行gulp build-css报错 [09:40:49] Starting 'build-css'... Building CSS Potentially unhandled rejection ...
- 集成代码编辑器ACE的经验
ACE是最流行的在线代码编辑器之一,在CanTK的集成开发环境GameBuilder里也使用了ACE.ACE的功能非常强大,但是由于使用方法不当,大家反映GameBuilder的代码编辑器不好用.最近 ...