HDOJ 5639 Transform
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5637
题意:有一个数x,你可以对x进行两种操作,1.反转x二进制其中任意一位2.x^y(y题目给出), 有n个数可以用来当y,有m组询问,每组询问两个数s,t,求
S=(∑i⋅zi) mod (1e9+7),其中zi是在第i次询问,通过两种操作把s变成t所需要的最小操作次数;
思路:s,t最大只有1e5相当于2^16左右,假设s^n1^n2^...^nk=t,那么转换到n1^n2^...^nk=s^t,也就是最小步数跟这两个数的异或值有关,那么预处理出所有1e5以内的异或值并且做到这个值所需要的最小步数,然后直接查询
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <algorithm>
#include <queue>
#include <cstdlib>
using namespace std;
#define P pair<int,int>
const int mod=1e9+;
int a[];
int ans[<<];
bool flag[<<];
int n,m;
void bfs(){
queue<pair<int,int> >q;
q.push(make_pair(,));
memset(flag,false,sizeof(flag));
flag[]=true;
while(!q.empty()){
P tmp=q.front();
q.pop();
int x=tmp.first;
ans[x]=tmp.second;
for(int i=;i<=n;i++){
if(!flag[tmp.first^a[i]]){
q.push(make_pair(tmp.first^a[i],tmp.second+));
flag[tmp.first^a[i]]=true;
}
}
for(int i=;i<=;i++){
if(!flag[tmp.first^(<<i)]){
flag[tmp.first^(<<i)]=true;
q.push(make_pair(tmp.first^(<<i),tmp.second+));
}
}
}
}
void pre(){
memset(ans,,sizeof(ans));
bfs();
}
void solve(){
long long ans_=;
scanf("%d %d",&n,&m);
for(int i=;i<=n;i++) scanf("%d",&a[i]);
pre();
for(int i=;i<=m;i++){
int s,t;
scanf("%d %d",&s,&t);
(ans_+=(i*ans[s^t]))%=mod;
}
printf("%lld\n",ans_);
}
int main(){
int T;
scanf("%d",&T);
while(T--){
solve();
}
return ;
}
HDOJ 5639 Transform的更多相关文章
- CSS3 3D立方体效果-transform也不过如此
CSS3系列已经学习了一段时间了,第一篇文章写了一些css3的奇技淫巧,原文戳这里,还获得了较多网友的支持,在此谢过各位,你们的支持是我写文章最大的动力^_^. 那么这一篇文章呢,主要是通过一个3D立 ...
- 深入node之Transform
Transform流特性 在开发中直接接触Transform流的情况不是很多,往往是使用相对成熟的模块或者封装的API来完成流的处理,最为特殊的莫过于through2模块和gulp流操作.那么,Tra ...
- CSS 3 学习——transform 3D转换渲染
以下内容根据官方规范翻译,没有翻译关于SVG变换的内容和关于矩阵计算的内容. 一般情况下,元素在一个无景深无立体感的平面(flat plane)上渲染,这个平面就是其包含块所处的平面.同时,页面上的其 ...
- CSS 3学习——transform 2D转换
首先声明一点,transform属性不为none的元素是它的定位子元素(绝对定位和固定定位)的包含块,而且对内创建一个新的层叠上下文. 注意:可以通过 transform-box 属性指定元素的那个盒 ...
- Hilbert-Huang Transform(希尔伯特-黄变换)
在我们正式开始讲解Hilbert-Huang Transform之前,不妨先来了解一下这一伟大算法的两位发明人和这一算法的应用领域 Section I 人物简介 希尔伯特:公认的数学界“无冕之王”,1 ...
- 【CSS3动画】transform对文字及图片的旋转、缩放、倾斜和移动
前言:之前我有写过CSS3的transform这一这特性,对于它的用法,还不是很透彻,今天补充补充,呵呵 你懂的,小司机准备开车了. a)再提一提transform的四个属性 ①旋转--->ro ...
- CSS3和javascript中的transform
在javascript中,WebkitTransform 大概相当于 transform .transform 为标准,WebkitTransform 适用于Webkit浏览器.js中的WebkitT ...
- CALayer的transform属性
先来与View比较一下 View:transform -> CGAffineTransformRotate... layer:transform -> CATransform3DRotat ...
- HDOJ 1009. Fat Mouse' Trade 贪心 结构体排序
FatMouse' Trade Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
随机推荐
- asp.net/wingtip/创建数据访问层
一. 什么是数据访问层 在wingtip项目中,数据访问层是对以下三者的总称:1. product类等数据相关的实体类(class)2. 数据库(database),对实体类成员的存储3. 上述二者的 ...
- JHipster生成微服务架构的应用栈(一)- 准备工作
本系列文章演示如何用JHipster生成一个微服务架构风格的应用栈. 环境需求:安装好JHipster开发环境的CentOS 7.4(参考这里) 应用栈名称:appstack 认证微服务: uaa 业 ...
- t-sql语句创建表(基础)
create table ta1 ( id int identity(1,2) not null, name nvarchar(20) not null, identify v ...
- AngularJS学习之旅—AngularJS Http(九)
1.AngularJS XMLHttpRequest $http 是 AngularJS 中的一个核心服务,用于读取远程服务器的数据. eg: // 简单的 GET 请求,可以改为 POST $htt ...
- 虚拟机配置Linux上网环境
概要:在虚拟机安装CentOS6.5的环境后,配置NAT模式,修改系统文件支持上网. (1)ip地址的配置,IP地址的子网掩码为255.255.255.0. (2)网关的指定,也就是默认路由,当我们需 ...
- 【Python 19】BMR计算器3.0(字符串分割与格式化输出)
1.案例描述 基础代谢率(BMR):我们安静状态下(通常为静卧状态)消耗的最低热量,人的其他活动都建立在这个基础上. 计算公式: BMR(男) = (13.7*体重kg)+(5.0*身高cm)-(6. ...
- 洛谷P2243 电路维修
题目地址 转化为图论问题 对于每个交叉点(X,Y)抽象成节点.与它相邻的四个点中,可以直接连线的边权为0,否则边权为1. 用死了的SPFA解决图论问题. #include <cstring> ...
- pydensecrf的inference.py代码的学习
https://github.com/lucasb-eyer/pydensecrf/blob/master/examples/inference.py 1.运行 先运行看看实现的结果: (deeple ...
- 环境配置 mac安装bazel
brew cask install homebrew/cask-versions/java8 brew install bazel
- CF452F Permutations/Luogu2757 等差子序列 树状数组、Hash
传送门--Luogu 传送门--Codeforces 如果存在长度\(>3\)的等差子序列,那么一定存在长度\(=3\)的等差子序列,所以我们只需要找长度为\(3\)的等差子序列.可以枚举等差子 ...