话说cdsn要是前面插入源代码又什么都不放就会出现奇怪的源代码?不知道是哪个网页的

407. BLOCKS

时间限制 1000 ms 内存限制 65536
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

时间限制 5000 ms 内存限制 65536
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. 北邮新生排位赛1解题报告a-c

    <div class="page-header" style="padding-bottom: 9px; margin: 20px 0px 30px; border ...

  2. 北邮新生排位赛2解题报告a-c

    A. 丁神去谷歌 2014新生暑假个人排位赛02 时间限制 1000 ms 内存限制 65536 KB 题目描述 丁神要去Google上班了,去之前丁神想再做一道水题,但时间不多了,所以他希望题目做起 ...

  3. 北邮新生排位赛2解题报告d-e

    <> 427. 学姐逗学弟 时间限制 3000 ms 内存限制 131072 KB 题目描述 学弟们来了之后,学姐每天都非常高兴的和学弟一起玩耍.这一天,学姐想出了这样一个游戏,她画了一棵 ...

  4. 2014北邮新生归来赛解题报告a-c

    <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255) ...

  5. 2014北邮新生归来赛解题报告d-e

    D: 399. Who Is Joyful 时间限制 3000 ms 内存限制 65536 KB 题目描述 There are several little buddies standing in a ...

  6. SCNU ACM 2016新生赛决赛 解题报告

    新生初赛题目.解题思路.参考代码一览 A. 拒绝虐狗 Problem Description CZJ 去排队打饭的时候看到前面有几对情侣秀恩爱,作为单身狗的 CZJ 表示很难受. 现在给出一个字符串代 ...

  7. SCNU ACM 2016新生赛初赛 解题报告

    新生初赛题目.解题思路.参考代码一览 1001. 无聊的日常 Problem Description 两位小朋友小A和小B无聊时玩了个游戏,在限定时间内说出一排数字,那边说出的数大就赢,你的工作是帮他 ...

  8. 2017.7.15清北夏令营精英班Day1解题报告

    成绩: 预计分数:20+10+40 实际分数:100+10+40. 一百三十多人的比赛全场rand7还水了个鼠标+键盘 unbelievable! 考试题目链接: https://www.luogu. ...

  9. LeetCode解题报告:Linked List Cycle && Linked List Cycle II

    LeetCode解题报告:Linked List Cycle && Linked List Cycle II 1题目 Linked List Cycle Given a linked ...

随机推荐

  1. [转载] 文件系统vs对象存储——选型和趋势

    原文: http://www.testlab.com.cn/Index/article/id/1082.html#rd?sukey=fc78a68049a14bb2699b479d5e730f6f45 ...

  2. maven入门

    1.1.项目构建 Maven(翻译为"专家","内行")是跨平台的项目管理工具.主要服务于基于Java平台的项目构建,依赖管理和项目信息管理. 项目构建过程包括 ...

  3. python的最最最最最基本语法(2)

    函数的定义: 使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. 当用return 返回多个值时,返回的其实是一个tuple, ...

  4. golang type 和断言 interface{}转换

    摘要 类型转换在程序设计中都是不可避免的问题.当然有一些语言将这个过程给模糊了,大多数时候开发者并不需要去关 注这方面的问题.但是golang中的类型匹配是很严格的,不同的类型之间通常需要手动转换,编 ...

  5. CSS3_新特性预览

    一.强大的CSS选择器 以前我们通常用class. ID 或 tagname 来选择HTML元素,CSS3的选择器强大的难以置信.  它们可以减少在标签中的class和ID的数量更方便的维护样式表.更 ...

  6. Android控件之Button(按钮控件)和ImageButton(图片按钮控件)

    一.Button和ImageButton特证: 1.共同特证: 都可以作为一个按钮产生点击事件 2.不同特证: Button有text的属性,ImageButton没有 ImageButton有src ...

  7. 工作流学习——Activiti流程变量五步曲 (zhuan)

    http://blog.csdn.net/zwk626542417/article/details/46648139 ***************************************** ...

  8. OpenGL的glTexCoord2f纹理坐标配置

    纹理坐标配置函数,先看定义: void glTexCoord2f (GLfloat s, GLfloat t); 1.glTexCoord2f()函数 有两个参数:GLfloat s, GLfloat ...

  9. appium支持中文输入

    Appium 1.3.3以上.java:capabilities增加下面两项:capabilities.setCapability("unicodeKeyboard", " ...

  10. 屏幕输出VS文件输出

     问题1:我们在编写程序时经常需要数一些数据到屏幕,来查看我们的结果是否正确,虽然直接输出到屏幕,查看起来呢很方便,但当数据量很大时,需要耗费大量的时间.于是我们想到能不能通过输出到文件来减少时间 ...