牛客网Wannafly模拟赛
题目描述
输入描述:
第一行两个整数n, m代表矩阵的长和宽;
接下来n行,每行m个字符(小写字母),表示矩阵;
输出描述:
输出一个整数表示满足条件的最大正方形的边长。
输入
5 10
ljkfghdfas
isdfjksiye
pgljkijlgp
eyisdafdsi
lnpglkfkjl
输出
3
备注:
对于30%的数据,n,m≤100;
对于100%的数据,n,m≤500;
hash好题,推荐去卿学姐讲堂学hash
每一个字符串都hash一下和长度有关的哈希值
#include<cstdio>
#include<algorithm>
#define N 510
typedef unsigned long long LL;
const LL D1=,D2=;
int n,m,i,j,l,r,mid,ans,t;
char a[N][N];
LL pow1[N],pow2[N],h[N][N],tmp,tmp2,has[N*N];
bool check(int x)
{
for(i=; i<=n; i++)
{
for(tmp=,j=; j<x; j++)
tmp=tmp*D1+a[i][j],h[i][j]=;
for(j=x; j<=m; j++)
{ h[i][j]=tmp=tmp*D1-pow1[x]*a[i][j-x]+a[i][j];
}
}
for(t=,i=x; i<=m; i++)
{
for(tmp=,j=; j<x; j++)
tmp=tmp*D2+h[j][i];
for(j=x; j<=n; j++)
{ has[t++]=tmp=tmp*D2-pow2[x]*h[j-x][i]+h[j][i];
}
}
std::sort(has,has+t);
for(i=; i<t; i++)
if(has[i-]==has[i])
return ;
return ;
}
int main()
{
scanf("%d%d",&n,&m);
for(i=; i<=n; i++)
{
scanf("%s",a[i]+);
for(j=; j<=m; j++)
a[i][j]-='a'-;
}
l=,r=n<m?n:m;
for(pow1[]=pow2[]=i=; i<=r; i++)
pow1[i]=pow1[i-]*D1,
pow2[i]=pow2[i-]*D2;
while(l<=r)
if(check(mid=(l+r)>>))
l=(ans=mid)+;
else r=mid-;
return printf("%d",ans),;
}
题目描述
输入描述:
第一行两个整数n,k代表点数和颜色数;
接下来n-1行,每行两个整数x,y表示x与y之间存在一条边;
输出描述:
输出一个整数表示方案数(mod 1e9+7)。
输入
4 3
1 2
2 3
2 4
输出
39
备注:
对于30%的数据,n≤10, k≤3;
对于100%的数据,n,k≤300。
B这个是个假树啊,只要找到组合数的贡献是k*(k-1)*……*(k-i)就好的
#include <stdio.h>
const int MD=1e9+;
int dp[][];
int main()
{
int n,k;
scanf("%d%d",&n,&k);
dp[][]=;
for(int i=; i<n; i++)
{
dp[i][]=;
for(int j=; j<=i; j++)
dp[i][j]=(dp[i-][j-]+dp[i-][j])%MD;
}
int kk=k,ans=;
for(int i=;i<=k&&i<=n;i++)
{
ans=(ans+dp[n-][i]*1LL*kk%MD)%MD;
kk=1LL*kk*(k-i-)%MD;
}
printf("%d",ans);
return ;
}
牛客网Wannafly模拟赛的更多相关文章
- 牛客网_Wannafly模拟赛1
A.矩阵 题目链接:https://www.nowcoder.com/acm/contest/submit/f8363c912a4c48a28b80f47e7102b6b8?ACMContestId= ...
- 10.6-10.7 牛客网NOIP模拟赛题解
留个坑... upd:估计这个坑补不了了 如果还补不了就删了吧
- 牛客网多校赛第9场 E-Music Game【概率期望】【逆元】
链接:https://www.nowcoder.com/acm/contest/147/E 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...
- 牛客网Wannafly挑战赛25A 因子(数论 素因子分解)
链接:https://www.nowcoder.com/acm/contest/197/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
- 题解——牛客网Wannafly挑战赛23 B-游戏 (SG函数)
前言 比赛的时候没学过SG函数的蒟蒻以为是道结论题,但是不是QwQ 和dummyummy巨佬一起推了快三个小时的规律 最后去问了真正的巨佬__stdcall __stdcall面带微笑的告诉我们,这是 ...
- 牛客网-湘潭大学校赛重现H题 (线段树 染色问题)
链接:https://www.nowcoder.com/acm/contest/105/H来源:牛客网 n个桶按顺序排列,我们用1~n给桶标号.有两种操作: 1 l r c 区间[l,r]中的每个桶中 ...
- 牛客网多校赛第九场A-circulant matrix【数论】
链接:https://www.nowcoder.com/acm/contest/147/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524 ...
- 牛客网多校赛第七场J--Sudoku Subrectangle
链接:https://www.nowcoder.com/acm/contest/145/J 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6553 ...
- 牛客网多校赛第七场--C Bit Compression【位运算】【暴力】
链接:https://www.nowcoder.com/acm/contest/145/C 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262144K,其他语言524 ...
随机推荐
- JAVA 时间的使用
今天老师又没有讲新课,不过讲了练习题,扩展了一下我们的思维. 今天就讲一下如何获取时间吧. 代码: import java.util.* public class Test{ public stati ...
- 洛谷[LnOI2019]长脖子鹿省选模拟赛t1 -> 快速多项式变换
快速多项式 做法:刚拿到此题有点蒙,一开始真没想出来怎么做,于是试着去自己写几个例子. 自己枚举几种情况之后就基本看出来了,其实本题中 n 就是f(m)在m进制下的位数,每项的系数就是f(m)在m进制 ...
- Objective-C 类型转换
类型转换通常是指变量,从一种类型转换成另外一种类型.例如将一个long类型转换成int类型,变量转换通常 用下面的方式: (type_name) expression 在Objective-C中,我们 ...
- Android的开机流程及对应源码位置分析
1.系统引导bootloader 1)源码:bootable/bootloader/* 2)说明:加电后,CPU将先执行bootloader程序,此处有三种选择 a)开机按Camera+Power启动 ...
- 几个不错的APP网站。
http://www.yunshipei.com/yunshipei.html http://www.appcan.cn/
- WPF中在后台实现控件样式
加入现在有一个Button的样式如下: <Style TargetType="{x:Type Button}" x:Key="MyButton">. ...
- 实验3 分支&循环语句(1)
part 1 1.在循环中使用控制语句continue和break,其功能区别是: continue:只控制本次循环的结束. break:终止并跳出循环,之后的循环也不再执行. 2.在两层嵌套循环中 ...
- C语言中函数参数传递
C语言中函数参数传递的三种方式 (1)值传递,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值.(2)地址传递,就是把 ...
- 二. python函数与模块
第四章.内置函数与装饰器详解 1.内置函数补充1 注:红色圆圈:必会: 紫红色方框:熟练: 绿色:了解 callable() 判断函数是否可以被调用执行 def f1(): pass f1() ...
- C语言格式化说明符
1.1.1 格式化输入输出函数一.printf()函数printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息.在编写程序时经常会用到此函数.printf()函数的调用格式为: ...