题目名称 2220. [SDOI 2016] 储能表
输入输出 menci_table.in/out
难度等级 ★★★☆
时间限制 1000 ms (1 s)
内存限制 128 MiB
测试数据 10
题目来源 GravatarMenci 于2016-04-11加入
开放分组 全部用户
提交状态
分类标签
动态规划 数位DP
分享题解
通过:35, 提交:85, 通过率:41.18%
Gravatar再见 100 0.228 s 0.29 MiB C++
Gravatar葳棠殇 100 0.249 s 0.26 MiB C++
Gravatar阿狸 100 0.257 s 0.31 MiB C++
GravatarMenci 100 0.278 s 0.31 MiB C++
Gravatar铁策 100 0.332 s 2.25 MiB C++
GravatarTenderRun 100 0.870 s 0.25 MiB C++
Gravatarliumy 100 0.883 s 0.32 MiB C++
Gravatarliumy 100 0.890 s 0.32 MiB C++
GravatarTenderRun 100 0.905 s 0.28 MiB C++
Gravatarvampire 100 1.030 s 0.33 MiB C++
关于 储能表 的近10条评论(全部评论)
第一次自己独立做出省选题!!!Very nice!!!不过整堂考试都在找规律……
找规律+四分树 不知道大家的思路和我的是否一样呢?
GravatarTenderRun
2016-06-11 15:42 8楼
我来推广博客啦。。。。。
http://changke-blog.logdown.com/posts/708067-sdoi2016round1
Gravatar铁策
2016-04-13 19:06 7楼
回复 @Satoshi :
反正已经达到了推广题目的目的。。。
Gravatar铁策
2016-04-13 11:34 6楼
woc。。。随便乘一下就爆longlong了。。。
立个Flag,HAOI2016前AC此题且比我快的人数不超过5(手动滑稽)
Gravatar铁策
2016-04-13 11:32 5楼
真到考场上弃疗......
GravatarSatoshi
2016-04-13 10:50 4楼
QAQ 5->500,质的飞跃啊!P.S:活跃用户有500人吗?
Gravatar葳棠殇
2016-04-13 05:56 3楼
回复 @铁策 :
从5改成500了,别以为我没看见!
GravatarSatoshi
2016-04-12 22:57 2楼
Gravatardydxh
2016-04-12 15:56 1楼

2220. [SDOI 2016] 储能表

★★★☆   输入文件:menci_table.in   输出文件:menci_table.out   简单对比
时间限制:1 s   内存限制:128 MiB

【题目描述】

有一个 \( n \) 行 \( m \) 列的表格,行从 \( 0 \) 到 \( n - 1 \) 编号,列从 \( 0 \) 到 \( m - 1 \) 编号。
每个格子都储存着能量。最初,第 \( i \) 行第 \( j \) 列的格子储存着 \( (i \ {\rm xor} \ j) \) 点能量。所以,整个表格储存的总能量是,

\[ \sum\limits_{i = 0} ^ {n - 1} \sum\limits_{j = 0} ^ {m - 1} (i \ {\rm xor} \ j) \]

随着时间的推移,格子中的能量会渐渐减少。一个时间单位,每个格子中的能量都会减少 \( 1 \)。显然,一个格子的能量减少到 \( 0 \) 之后就不会再减少了。
也就是说,\( k \) 个时间单位后,整个表格储存的总能量是,

\[ \sum\limits_{i = 0} ^ {n - 1} \sum\limits_{j = 0} ^ {m - 1} \max((i \ {\rm xor} \ j) - k, 0) \]

给出一个表格,求 \( k \) 个时间单位后它储存的总能量。
由于总能量可能较大,输出时对 \( p \) 取模。

【输入格式】

第一行一个整数 \( T \),表示数据组数。
接下来 \( T \) 行,每行四个整数 \( n \)、\( m \)、\( k \)、\( p \)。

【输出格式】

共 \( T \) 行,每行一个数,表示总能量对 \( p \) 取模后的结果。

【样例输入】

3
2 2 0 100
3 3 0 100
3 3 1 100

【样例输出】

2
12
6

【提示】

测试点 1 ~ 2:\( T = 5000 \),\( n \leq 100 \),\( m \leq 100 \),\( k \leq 100 \),\( p \leq 10 ^ 9 \);
测试点 3:\( T = 5000 \),\( n \leq 10 ^ {18} \),\( m \leq 10 ^ {18} \),\( k = 0 \),\( p \leq 10 ^ 9 \);
测试点 4:\( T = 5000 \),\( n \leq 10 ^ {18} \),\( m \leq 10 ^ {18} \),\( k = 1 \),\( p \leq 10 ^ 9 \);
测试点 5:\( T = 5000 \),\( n \leq 10 \),\( m \leq 10 ^ {18} \),\( k \leq 10 \),\( p \leq 10 ^ 9 \);
测试点 6:\( T = 1 \),\( n \leq 10 ^ 5 \),\( m \leq 10 ^ {18} \),\( k \leq 10 ^ 5 \),\( p \leq 10 ^ 9 \);
测试点 7:\( T = 1 \),\( n \leq 10 ^ {18} \),\( m \leq 10 ^ {18} \),\( k \leq 10 ^ {18} \),\( p \leq 10 ^ 9 \);
测试点 8:\( T = 100 \),\( n \leq 10 ^ {18} \),\( m \leq 10 ^ {18} \),\( k \leq 10 ^ {18} \),\( p \leq 10 ^ 9 \);
测试点 9 ~ 10:\( T = 5000 \),\( n \leq 10 ^ {18} \),\( m \leq 10 ^ {18} \),\( k \leq 10 ^ {18} \),\( p \leq 10 ^ 9 \)。

【来源】

SDOI2016 Round1 Day1