Luogu5307 [COCI2019] Mobitel 【数论分块】【递推】

题目分析:

对于向上取整我们总有,$\lceil \frac{\lceil \frac{n}{a} \rceil}{b} \rceil = \lceil \frac{n}{a*b} \rceil$这个不难想到。

然后朴素的dp很容易想到,用上面的式子优化一下就行了。

代码:

 1 // luogu-judger-enable-o2
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 
 5 const int mod = 1e9+7;
 6 
 7 int f[350][5020];
 8 int a[350][350];
 9 int rem[5020],pep[1020000];
10 int n,m,k,num;
11 
12 int main(){
13     scanf("%d%d%d",&n,&m,&k);
14     for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) scanf("%d",&a[i][j]);
15     int lst = 0;
16     for(int i=1;i<=k;i++){
17     int now = k/i + (k%i != 0);
18     if(now != lst) rem[++num] = i,pep[now] = num;
19     lst = now;
20     }
21     f[1][1] = 1;
22     for(int i=1;i<=n;i++){
23     for(int j=1;j<=m;j++){
24         for(int ku=num;ku>=1;ku--){
25         if(!f[j][ku] && !f[j-1][ku]) continue;
26         int dem = f[j][ku];
27         f[j][ku] = 0; 
28         int ham = rem[ku];
29         if(1ll*ham*a[i][j] >= k) ham = k;
30         else ham = a[i][j]*ham;
31         ham = pep[k/ham+(k%ham!=0)];
32         f[j][ham] += dem; if(f[j][ham] >= mod) f[j][ham] -= mod;
33         f[j][ham] += f[j-1][ku]; if(f[j][ham] >= mod) f[j][ham]-=mod;
34         }
35     }
36     }
37     printf("%d\n",f[m][num]);
38     return 0;
39 }

 

转载于:https://www.cnblogs.com/Menhera/p/10974045.html

资源下载链接为: https://pan.quark.cn/s/9e7ef05254f8 在网页设计中,为图片添加文字是一种常见的需求,用于增强视觉效果或传达更多信息。本文将介绍两种常用的方法:一种是将图片设置为背景并添加文字;另一种是利用<span>标签结合CSS定位来实现。 这种方法通过CSS实现,将图片设置为一个容器(通常是<div>)的背景,然后在容器中添加文字。具体步骤如下: 创建一个包含文字的<div>元素: 使用CSS设置<div>的背景图片,并调整其尺寸以匹配图片大小: 如有需要,可使用background-position属性调整图片位置,确保文字显示在合适位置。这样,文字就会显示在图片之上。 另一种方法是将文字放在<span>标签内,并通过CSS绝对定位将其放置在图片上。步骤如下: 创建一个包含图片和<span>标签的<div>: 设置<div>为相对定位,以便内部元素可以相对于它进行绝对定位: 设置<span>为绝对定位,并通过调整top和left属性来确定文字在图片上的位置: 这种方法的优点是可以精确控制文字的位置,并且可以灵活调整文字的样式,如颜色和字体大小。 两种方法各有优势,可根据实际需求选择。在实际开发中,还可以结合JavaScript或jQuery动态添加文字,实现更复杂的交互效果。通过合理运用HTML和CSS,我们可以在图片上添加文字,创造出更具吸引力的视觉效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值