[SDOI2016]储能表

Description

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

随着时间的推移,格子中的能量会渐渐减少。一个时间单位,每个格子中的能量都会减少 1。显然,一个格子的能量减少到 0 之后就不会再减少了。
也就是说,k 个时间单位后,整个表格储存的总能量是,
给出一个表格,求 k 个时间单位后它储存的总能量。
由于总能量可能较大,输出时对 p 取模。

Input

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

Output

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

Sample Input

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

Sample Output

2
12
6

HINT

 T=5000,n≤10^18,m≤10^18,k≤10^18,p≤10^9

令$f[i][a][b][c]和g[i][a][b][c]$表示第i位,表示x后i-1位是否等于n,y后i-1位是否等于m,x^y后i-1位是否等于k的异或和以及方案数

如果a==1,且第i位大于n的第i位,那么超过上界,舍去

b同理

c比较特殊,如果c==1,如果第i为小于k的第i位,那么异或结果必定小于k,答案为0,舍去

$g[i][a][b][c]+=g[i-1][aa][bb][cc]$

$f[i][a][b][c]+=f[i-1][aa][bb][cc]+[第i位异或值为1]*2^{i}*g[i-1][aa][bb][cc]$

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 typedef long long lol;
 8 lol f[81][2][2][2],g[81][2][2][2],n,m,Mod,k,pw[61],t1,t2,S,t3;
 9 void dfs(lol x,int a,int b,int c)
10 {lol i,j;
11   if (f[x][a][b][c]!=-1||g[x][a][b][c]!=-1) return;
12   g[x][a][b][c]=f[x][a][b][c]=0;
13   if (x==0)
14     {
15       f[0][a][b][c]=0;
16       g[0][a][b][c]=1;
17       return;
18     }
19   for (i=0;i<=1;i++)
20     {
21       int xx=(n>>x-1)&1;
22       int yy=(m>>x-1)&1;
23       int zz=(k>>x-1)&1;
24       if (a&&i>xx) continue;
25       for (j=0;j<=1;j++)
26     {
27       if (b&&j>yy) continue;
28       lol p=i^j;
29       if (c&&p<zz) continue;
30       int aa=a&(xx==i);
31       int bb=b&(yy==j);
32       int cc=c&(zz==p);
33       dfs(x-1,aa,bb,cc);
34       g[x][a][b][c]=(g[x][a][b][c]+g[x-1][aa][bb][cc])%Mod;
35       f[x][a][b][c]=((f[x][a][b][c]+g[x-1][aa][bb][cc]*p*(pw[x-1]%Mod)%Mod)%Mod+f[x-1][aa][bb][cc])%Mod;
36     }
37     }
38 }
39 lol solve()
40 {
41   memset(f,-1,sizeof(f));
42   memset(g,-1,sizeof(g));
43   t1=0;S=n;
44   if (n==0&&m==0) return 0;
45   while (S)
46     {
47       S>>=1;
48       t1++;
49     }
50   t2=0;S=m;
51   while (S)
52     {
53       S>>=1;
54       t2++;
55     }
56   t3=0;S=k;
57   while (S)
58     {
59       S>>=1;
60       t3++;
61     }
62   t1=max(t1,max(t2,t3));
63   dfs(t1,1,1,1);
64   return f[t1][1][1][1]-(k%Mod)*g[t1][1][1][1]%Mod;
65 }
66 int main()
67 {int T,i;
68   cin>>T;
69   pw[0]=1;
70   for (i=1;i<=60;i++)
71     pw[i]=pw[i-1]*2;
72   while (T--)
73     {
74       cin>>n>>m>>k>>Mod;
75       n--;m--;
76       printf("%lld\n",(solve()+Mod)%Mod);
77     }
78 }

 

转载于:https://www.cnblogs.com/Y-E-T-I/p/8577883.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571076.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

军用计算机ip等级是什么,加固计算机的IP防护等级是什么?

加固计算机的IP防护等级是什么&#xff1f;作者&#xff1a;鲁成伟业 | 时间&#xff1a;2021-04-28 09:00:43 | 人已围观加固计算机是各种现代化w器z备系统、j事电子信息系统以及国防科研系统中不可缺少的、到处可见的设备。小到嵌入式的微处理器&#xff0c;大到百万亿次级的…

SpringMvc渲染视图

这篇博文讨论的问题是从ModelAndView如何渲染到页面。 首先要知道每个请求处理完之后都会返回一个ModelAndView对象。 这里我分6种情况来分析&#xff0c;代表6种返回类型&#xff1a; ModelAndViewMap&#xff0c;ModelMapModelViewStringVoid我先贴出我的测试的后台代码&…

山西计算机工程师职称英语,山西中级工程师职称在线查询

技校网专门为您推荐的类似问题答案问题1&#xff1a;新疆石河子中级工程师职称在哪查询应该还没出&#xff0c;这里说不定有吧。。。不确定~问题2&#xff1a;武汉市中级工程师职称如何办理楼主,看你是要办那个对方的,现在大多数市面上都是随州办理的 比较容易办到 还有专科毕业…

spring3: 切面及通知实例 Aspectj的aop

1.前置通知 接口&#xff1a; package chapter1.server;public interface IHelloService {public void sayAdvisorBefore(String param) ; }实现 package chapter1.service.impl;import chapter1.server.IHelloService;public class HelloService implements IHelloService { p…

微型计算机接口与技术期末,微机原理与接口技术期末考试试题及答案.pdf

微机原理与接口技术期末考试题库1. 微机系统的硬件由哪几部分组成&#xff1f;答&#xff1a;三部分&#xff1a;微型计算机 (微处理器&#xff0c;存储器&#xff0c;I/0接口&#xff0c;系统总线)&#xff0c;外围设备&#xff0c;电源。2. 什么是微机的总线&#xff0c;分为…

html对图片轮播脚本怎么调用,【jquery前端开发】可调整的幻灯片(图片轮播)

第一次写博客&#xff0c;希望接下来写的东西 或多或少能帮到些人&#xff0c;虽然这些东西都是一些大神前辈们写了无数遍的东西&#xff0c;但我尽量以一名小白的视角把代码写得清楚点&#xff0c;好心人的就给点赞吧。1.前期准备这是我们编写代码前必须要做的事&#xff0c;在…

数据类型总结(干货)

Java中的数据类型和C的数据类型基本是一致的&#xff0c;本来以为不需要怎么看&#xff0c;后来发现还是有些地方需要好好总结一下。 基本的就不说了&#xff0c;直接上干货。 我总结了下&#xff0c;数据类型的转换和赋值有以下几点是比较麻烦的&#xff1a; 1、整数直接量可以…

计算机主机信息怎么看,本机电脑硬件配置信息怎么看?Win7/Win10查看详细电脑配置方法...

电脑配置决定了一台电脑的性能好坏&#xff0c;如果电脑配置没有达到游戏或者软件的要求&#xff0c;那么肯定无法流畅运行的。对于一些小白用户不知道如何查看电脑硬件配置&#xff0c;那么本机电脑硬件配置信息怎么看&#xff1f;下面装机之家小编分享一下Win7/Win10查看详细…

软件工程网络15个人阅读作业2(201521123024丁树乐)

提出问题 question1.我看到书P27中写到“100%的代码覆盖率并不等同于100%的正确性”那么怎么样去确保100%的正确性&#xff1f; 写代码注意结构和代码规范&#xff0c;注释要写全&#xff0c;代码尽量精简&#xff0c;不要一坨坨的堆在一起。 在目前行业内的成熟方案有如下几个…

Uva 1025 - A Spy in the Metro(DP)

题目链接 https://vjudge.net/problem/UVA-1025 【题意】 某城市里的地铁是线性的&#xff0c;有n个车站&#xff08;2<n<50&#xff09;&#xff0c;有M1辆列车从第1站从左往右开&#xff0c;有M2辆列车从第n站从右往左开&#xff0c;在0时刻间谍从第一站出发&a…

未来计算机控制器趋势,未来DCS控制系统技术发展4大趋势

DCS系统是继PLC之外的一大自动化控制系统&#xff0c;它在化工、火电等领域的应用极为广泛&#xff0c;但是生产方面的自动化技术需求进一步提高&#xff0c;传统的DCS系统已不能满足需要&#xff0c;需要进行技术升级。DCS系统由多台计算机分别控制生产过程中多个控制回路&…

《Java技术》第一次作业

&#xff08;一&#xff09;、学习总结 1.在java中通过Scanner类完成控制台的输入&#xff0c;查阅JDK帮助文档&#xff0c;Scanner类实现基本数据输入的方法是什么&#xff1f;不能只用文字描述&#xff0c;一定要写代码&#xff0c;通过具体实例加以说明。 文本扫描类Scanner…

计算机主机开机为什么显示器不开,电脑开机后显示器不亮怎么办?电脑开机后显示器没反应的解决办法...

电脑开机后显示器不亮怎么办&#xff1f;电脑开机故障屡见不鲜&#xff0c;最近又有用户反馈开机问题了&#xff0c;一用户反馈说&#xff0c;电脑主机是可以正常开机的&#xff0c;但就是显示器不亮&#xff0c;这是怎么回事呢&#xff1f;出现这种情况可能是显示器或主机故障…

斯坦福-随机图模型-week4.0_

title: 斯坦福-随机图模型-week4.0 tags: note notebook: 6- 英文课程-9-Probabilistic Graphical Models 1: Representation --- 斯坦福-随机图模型-week4.0 最大期望收入模型 简答的决策 我们使用随机图模型进行决策需要的原料是什么ne ? 我们需要决策的情景一些列的可能的行…

西北农林科技大学计算机老师 癌症,西北农林科大攻克苹果树“癌症”

由西北农林科技大学主持完成的“苹果树腐烂病等重大病害生物学及防治技术研究”项目&#xff0c;12月12日在陕西杨凌农科城通过鉴定。鉴定委员认为该成果在苹果树腐烂病菌、轮纹病菌的生物学基础研究方面达到了国际领先水平。我国苹果栽培面积和产量分别占世界总量的2/5和1/3&a…

计算机行业哪个会议论文最好,《第三次全国电子计算机专业学术会议论文选集》...

1964年12月&#xff0c;国防工业出版社出版了《第三次全国电子计算机专业学术会议论文选集》(以下简称《选集》)&#xff0c;由中国电子学会计算机专业委员会编辑&#xff0c;《选集》内容覆盖之广令人震惊。《选集》的内容表达了1961年以来国内计算技术在理论与实际方面的工作…

maven运行tomcat6出现错误Exception starting filter encodingFilter怎么解决

严重: Exception starting filter encodingFilterjava.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter cannot be cast to javax.servlet.Filterat org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.j…

windows系统OLLVM + NDK 混淆编译环境搭建

一、环境搭建&#xff1a; 系统&#xff1a;win10_X64 ndk版本&#xff1a;ndk-r12b&#xff08;ndk-r12b后续版本也适用&#xff09; cmake-3.9.1-win64-x64.msi 用于针对不同编译器生成源代码构建文件&#xff0c;如使用VS则生成(.sln)等VS配置文件&#xff0c;如果使用gcc则…

计算机组成实验微程序控制器实验,计算机组成原理实验报告3++微程序控制器实验.doc...

文档介绍&#xff1a;计算机组成原理实验报告3微程序控制器实验计算机组成原理实验报告实验三微程序控制器实验一.实验目的与要求:实验目的:1.理解时序产生器的原理,了解时钟和时序信号的波形;2.掌握微程序控制器的功能,组成知识;3.掌握微指令格式和各字段功能;4.掌握微程序的编…

展开符和解构赋值

一、展开符展开符(剩余操作符)&#xff1a;...1.展开符号use strict; let arr_one [1,3]; let arr_two [4,5,...arr_one]; console.log(arr_one);//[ 1, 3 ] console.log(...arr_one);//1 3 console.log(arr_two);//[ 4, 5, 1, 3 ]2.剩余操作符&#xff08;类似arguments&…