多校第七场

1004:一开始做的时候在想能否求出从i开始的第一段能满足条件的子串,ans++,然后ans再加上该子串与前面的所有不相交的子串,因为两个满足条件可以连接起来构成新的子串,不过这还得满足连续的条件,想来想去还是搞不了。

其实标称给的思路挺好的,只要记录每次前面所有子串的余数,再把所有余数为0的子串数相加就是答案。开个二维的数组,count[i][r]表示以i结尾的余数为r的子串个数。

count[i][r+e[digit[i]]*number[i]]=sum{count[i-1][r];因为是尾插

但是得考虑两种情况:

1.单独由number[i]构成的串

2.重叠的串 count[i][s*e[digit[i]]*number[i]]--;因为在增加i的时候,i以前可能已经在串里了

最后想了下,确实不太好写,就算有思路,还得各种处理,唉~~~代码功底差了点

代码:http://blog.csdn.net/qq415200973/article/details/9955995


1006:构造满足条件的题吧,Special Charge。这题一开始看不懂,大概一小时后才稍微动点吧,其实只要考虑每个数据库的第一个和第二个服务器。然后m,n的大小关系不清楚,最后分情况讨论了下:

1.m<n,比较容易,第一个服务器从1-m,第二个选n就行。

2.m=n,只要每一条都错开一个就行,比如第一行是1,2,3,4,那么第二行就是2,3,4,1因为如果其中有一个爆了的话,那么有一个就要用两次。

3.m>n,这个比较难想吧,还是mz给的思路。

n=4,m=8

1,4

2,4

3,4

4,3

1,3

2,3

3,2

4,2

代码:http://blog.csdn.net/qq415200973/article/details/9956105



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值