Regionals 2014 Asia - Bangkok

A

UVALive6843

给定N

询问0到N这N+1个数分别和0到N这些数相乘一共会产生多少不相同的数。

 

bitset+打表

两层for循环暴力枚举

 

B

UVALive6844

计算以下式子

其中,0<=low<=high<=16*1011

首先有一个可以由数学归纳法证明的结论:对于C(n,k),若n&k == k 则c(n,k)为奇数,否则为偶数。

然后就可以把问题转换为0到x的2进制表示中,有0个1的有a[0]个,1个1的有a[1]个,...

答案就是(1<<0)*a[i]+(1<<1)*a[1]+....

这个a[i]可以用数位dp求

枚举x的哪一位为1,把这一位变成0,后面的就可以随便放

 

C

 

D

 

E

UVALive6847

定义f(x)表示x的阶乘的末尾有几个0

询问l到r的区间中有几个不同的f(x)(0<l<=r<=9*1018)

考虑每次出现5的倍数就会跳变一次,当然,跳变的幅度不一定是1

所以答案就是r/5-l/5+1;

 

F

UVALive6848
水dp

 

G

UVALive6849

给定一个n*m的矩阵(n,m<=1000),每个格子会统计以它为中心的九宫格一共有多少雷,假如这个地方放了一个雷,值再额外+3

现在把值给出来,然后要求把雷的放置恢复出来。

数据保证答案唯一

 

从上往下,从左往右扫。

每次遇到有雷,就把九宫格更新

考虑当前格子(i,j)

假如值超过4,那么一定是雷

小于4,一定不是雷

等于4,判断mat[i][j+1]是否>=4,假如是,一定是雷

 

具体的画一下就知道了

不是雷

...

..L

LLL

对于mat[i][j],取值是6、7、8

是雷

...

.L.

...

对于mat[i][j],取值是1、2、3


H

UVALive6850

就给一个n*m的矩阵(n<=30,m<=30)

找出所有的加号

加号可能相互覆盖

加号的高和宽相等

一个加号的中心不会在另一个加号上

 

按照第四个准则,加号的中心的值一定是1

于是把所有的1挑出来

dfs一遍

可以绕过这个1

也可以枚举长度,然后把1个加号拿掉

 

I

UVALive6851

怎么会有这么傻逼的网络流。。。

 

J

UVALive6852

对于长度为M的区间进行N次涂色

涂色的方式是每b个数,涂前a个数

1<=N<=105,1<=M<=106,1<=a<=b<=16

虽然涂色的次数很多,但涂色的种类很少

注意到长度相同的都是可以一起涂的

复杂度降为M*16

 

K

UVALive6853

水dp

 

L

UVALive6854

给定一个n*m的矩阵(n,m<=500)

每个格子可能会向周围的4个格子连边

现在给定每个格子向周围连的边数,只有唯一一个格子是不知道的,询问那个格子的值

就把矩阵按照

0101

1010

编号

统计0的值和1的值,输出相减的绝对值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值