话说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. [转载] 【每周推荐阅读】C-Store:列式存储数据库

    Record-based与column-based是数据库和存储系统里面两种不同的data layout.我们的思维逻辑是基于行记录的,即Record-based data layout,数据记录都是 ...

  2. 学习日记day7:代码结构规范

    1:绝对定位不是随便用的. 2:一定要用相对定位控制文档流,在相对定位里面使用绝对定位控制具体的位置. 3:代码结构尽量简化. 不要加不必要的span: 不要加不必要的类: 4:控制字体样式的类尽量写 ...

  3. sscanf的用法(转)

    队长做上海邀请赛的I题时遇到一个棘手的问题,字符串的处理很麻烦,按传统的gets全部读入的话还要做N多处理,太浪费时间. 回来之后搜了一下sscanf的用法发现可以很好的解决这一类问题,各种百度,转来 ...

  4. (三)stm32之串口通信DMA传输完成中断

    一.DMA功能简介 首先唠叨一下DMA的基本概念,DMA的出现大大减轻了CPU的工作量.在硬件系统中,主要由CPU(内核).外设.内存(SRAM).总线等结构组成,数据经常要在内存和外设之间,外设和外 ...

  5. Axure_元件库

    1.百度“推荐”,看到一篇文章“用Axure制作Material Design的APP原型(附元件库下载)” 想到 可以搜索 类似“axure 元件库”的关键字,来看看有哪些现成的元件库 2.

  6. visual studio 自带单元测试demo

    0) 创建类,编写方法类1) 在方法点击鼠标右键,在运行测试(T)和调试测试(D)之间会有一个 <创建单元测试>选项.有则进入2,没有则看1.01.0) 菜单栏 工具-->自定义-- ...

  7. php imagecreatetruecolor输出字符符或验证码

    $img = imagecreatetruecolor(100,100); //创建真彩图像资源 $color = imagecolorAllocate($img,200,200,200); //分配 ...

  8. Java调用Oracle存储过程过程中几个问题

    1.java.sql.SQLException: 无效的名称模式: STKSETTLEADMIN.TY_MARKETDATA 用户STKSETTLEADMIN下没有TY_MARKETDATA,类型TY ...

  9. Linux命令行下编译Android NDK的示例代码

    这几天琢磨写一个Android的Runtime用来加速HTML5 Canvas,让GameBuilder+CanTK 不但开发速度快,运行速度也能接近原生应用.所以花了点时间研究 Android ND ...

  10. JBPM工作流入门总结

    关于JBPM工作流 1.工作流 工作流是一项分离业务操作和系统流程的技术.工作流由实体(Entity).参与者(Participant).流程定义(Flow Definition).工作流引擎(Eng ...