北邮新生排位赛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 ...
随机推荐
- [转载] 淘宝内部分享:怎么跳出MySQL的10个大坑(上)
原文: http://mp.weixin.qq.com/s?__biz=MzAxNjAzMTQyMA==&mid=209773318&idx=1&sn=e9600d3db80b ...
- [转]Java代码(性能)优化总结
前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用, ...
- (一)mtg3000常见操作
一.查看MTG3000主控板IP地址: 重启设备后一直跑到shell,用户名和密码都输入admin,然后输入en进入命令行界面,输入sh int可查看设备IP等信息. 2.升级app.web程序
- Android 可拖动列表项的ListView
需求分析 一个界面内两个ListView 我关注的栏目列表 上面的要长按后可拖动排序 点击减号后列表项消失 下面列表增加一行 同时存储相应字符串到本地作为标记 未关注栏目列表 普通ListView 点 ...
- 网络性能测试工具iperf详细使用图文教程【转载】
原文:http://blog.163.com/hlz_2599/blog/static/142378474201341341339314/ 参考:http://man.linuxde.net/iper ...
- EL 表达式
转载自 :http://blog.csdn.net/qwerasdf123/article/details/4189889 EL表达式 1.EL简介 1)语法结构 ${expr ...
- jquery 设置checked="checked"无效,radio未选中。。
jquery 设置checked="checked"无效,radio未选中.. 最好还是使用.prop(),在jQuery1.6版本之前.attr存在一些bug.在1.6之后它会自 ...
- Perl 语法 - 基础
perl语言的核心是正则表达式,在文本处理上非常有优势,与python类似,但语法不同,perl的语法很灵活,用多了才会觉得好用. 常用知识点总结: perl语法类似于C语言(perl源于Unix), ...
- 关于e820cycles参数
关于e820cycles参数http://bbs.wuyou.net/forum.php?mod=redirect&goto=findpost&ptid=327458&pid= ...
- AC自动机 & Fail树 专题练习
Fail树就是AC自动机建出来的Fail指针构成的树. [bzoj3172][xsy1713]单词 题意 给定一些单词,求每个单词在所有单词里面的出现次数. 分析 构建Fail树,记录每个单词最后一个 ...