ssl1127-方程的解数【HASH,dfs】

前言

我只是凑数的。


正题

from ssl


输入输出(建议无视)

Input

  第1行包含一个整数n。第2行包含一个整数M。第3行到第n+2行,每行包含两个整数,分别表示ki和pi。两个整数之间用一个空格隔开。第3行的数据对应i=1,第n+2行的数据对应i=n。

Output

仅一行,包含一个整数,表示方程的整数解的个数。

Sample Input

3
150
1 2
-1 2
1 2

Sample Output

178


解题思路

听真正的dalao讲的@神奇幂伟,大概就是把方程分成两半,如:

k1xp11+k2xp22=k3xp33k4xp44k1x1p1+k2x2p2=−k3x3p3−k4x4p4

然后用深搜前半段找出第一个的所有答案存进哈希表里(并且记录出现次数),然后再搜一次后半段寻找与前半段答案相反的话就算上方案


代码

#include<cstdio>
using namespace std;
const int maxn=4000037;//哈希个数
int n,m,hash[maxn],mid,a[7],p[7],num[maxn],S,ans;
int abs(int x)
{if (x<0) return -x;else return x;
}//绝对值,定位时使用
int hashmath(int x)
{return abs(x)%maxn;}//哈希函数
int locate(int x)//定位用
{int i=0,w=hashmath(x);//哈希函数while (i<maxn && hash[(w+i)%maxn]!=0 && hash[(w+i)%maxn]!=x)i++;//找到位置return (w+i)%maxn;//返回位置
}
void ins(int x)//加入
{int w=locate(x);//定位hash[w]=x;//改变值num[w]++;//记录出现次数
}
bool find(int x)//查找
{int w=locate(x);//位置if (hash[w]==x) return true;//返回else return false;
}
void dfs(int dep,int sum)//第一次搜
{if (dep>=mid+1){ins(sum);//插入return;}for (int i=1;i<=m;i++){ans=i;for (int j=2;j<=p[dep];j++) ans*=i;//即使x^pans*=a[dep];//得出结果dfs(dep+1,sum+ans);//搜}
}
void dfs2(int dep,int sum)
{if (dep>=n+1){if (find(-sum)) S+=num[locate(-sum)];//如果找到就记录return;}for (int i=1;i<=m;i++){ans=i;for (int j=2;j<=p[dep];j++) ans*=i;ans*=a[dep];dfs2(dep+1,sum+ans);}
}
int main()
{scanf("%d%d",&n,&m);for (int i=1;i<=n;i++){scanf("%d%d",&a[i],&p[i]);}mid=n/2;//分成两段dfs(1,0);dfs2(mid+1,0);printf("%d",S);
}

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

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

相关文章

自然语言处理中的Attention Model:是什么以及为什么[二]

转载自 自然语言处理中的Attention Model&#xff1a;是什么以及为什么[二] 自然语言处理中的Attention Model&#xff1a;是什么以及为什么[二] 1、Attention Model 图一见下&#xff1a; 图1中展示的Encoder-Decoder模型是没有体现出“注意力模型”的&#xff0c;所以可以…

SpringAOP之代理设计模式

[1]设计模式: 概念: 设计模式其实就是代码的一种结构的设计思路。 好处: 增加代码健壮性 易修改性 可扩展性 设计模式的种类: 三大种类: 建造类设计模式 结构类设计模式 行为类设计模式 参考网址: http://baijiahao.baidu.com/s?id1639156298714178350&wfrspider&forp…

教师节快乐!

点击上方蓝色关注我们&#xff01;今天是个特殊的节日&#xff0c;教师节&#xff0c;从昨天开始就有学生给我发教师节祝福了……诺&#xff0c;发就发了吧&#xff0c;还害羞&#xff01;早上一醒来&#xff0c;就看到同学们在群里发祝福&#xff0c;心理美滋滋的。还有直接改…

如何利用.NET Core搭建跨平台的控制台应用程序

尽管传统意义上来说&#xff0c;.NET是只面向Windows的、闭源的专有平台&#xff0c;然而&#xff0c;传统观念即将被颠覆。新的开源跨平台的.NET Core已经开启&#xff0c;意味着你可以在任意平台写C#或.NET&#xff0c;然后在Windows、Linus和macOS运行。 这个新的.NET平台正…

自然语言处理中CNN模型几种常见的Max Pooling操作

转载自 自然语言处理中CNN模型几种常见的Max Pooling操作 自然语言处理中CNN模型几种常见的Max Pooling操作 CNN是目前自然语言处理中和RNN并驾齐驱的两种最常见的深度学习模型。 图1展示了在NLP任务中使用CNN模型的典型网络结构。 一般而言&#xff0c;输入的字或者词用…

SpringTX

文章目录SpringTX的介绍SpringTX的使用代码示例声明式事务中属性解释SpringBoot中AOP事务配置SpringTX的介绍 问题&#xff1a; 在学习了Spring整合mybatis后&#xff0c;我们可以直接从Spring容器中获取mapper层的实例化对象完成数据库操作。而在业务层方法中很多时候因为业务…

详细整理分层开发步骤!

不点蓝字&#xff0c;我们哪来故事&#xff1f;一、创建数据库&#xff0c;在数据库中创建表二、创建java项目&#xff08;起名要有意义&#xff0c;eg&#xff1a;petSys&#xff09;三、在项目中新建包&#xff0c;包名为&#xff1a;cn.bdqn.petSys.entity四、在cn.bdqn.pet…

.NET 跨平台界面框架和为什么你首先要考虑再三

现在用 C# 来开发跨平台应用已经有很成熟的方案&#xff0c;即共用非界面代码&#xff0c;而每个操作系统搭配特定的用户界面代码。这个方案的好处是可以直接使用操作系统原生的控件和第三方控件&#xff0c;还能够和操作系统深度集成。 这里的深度集成主要是指一些 Windows 专…

seq2seq中的beam search算法过程

转载自 seq2seq中的beam search算法过程 首先说明在sequence2sequence模型中&#xff0c;beam search的方法只用在测试的情况&#xff0c;因为在训练过程中&#xff0c;每一个decoder的输出是有正确答案的&#xff0c;也就不需要beam search去加大输出的准确率。 假设现在我…

Spring的properties属性配置文件和Spring常用注解

Spring的properties属性配置文件 问题: 在学习了Spring的知识后&#xff0c;需要被Spring管理的资源都是通过配置文件的形式来告诉Spring容器对象管理谁以及如何管理。但是随着使用次数的增多&#xff0c;我们发现配置文件中配置的标签越来越多&#xff0c;每次我们创建一个新…

即日起,正式进入编程世界!

点击上方蓝色关注我们&#xff01;从今天开始&#xff0c;正式进入编程世界。首先我们先从堪称“少儿编程”的Scratch开始&#xff0c;简洁的编辑窗口加上可读性较高的Chinese&#xff08;大部分的编程编辑器均为英文版&#xff09;&#xff0c;使得该软件特容易上手。班内总有…

使用领域事件

1.引言 最近刚学习了下DDD中领域事件的理论知识&#xff0c;总的来说领域事件主要有两个作用&#xff0c;一是解耦&#xff0c;二是使用领域事件进行事务的拆分&#xff0c;通过引入事件存储&#xff0c;来实现数据的最终一致性。若想了解DDD中领域事件的概念&#xff0c;可参…

深入浅出讲解语言模型

转载自 深入浅出讲解语言模型 深入浅出讲解语言模型 1、什么是语言模型呢&#xff1f; 简单地说&#xff0c;语言模型就是用来计算一个句子的概率的模型&#xff0c;也就是判断一句话是否是人话的概率&#xff1f; 那么如何计算一个句子的概率呢&#xff1f;给定句子&…

基于.NET CORE微服务框架 -surging的介绍和简单示例 (开源)

一、前言 至今为止编程开发已经11个年头&#xff0c;从 VB6.0,ASP时代到ASP.NET再到MVC, 从中见证了.NET技术发展&#xff0c;从无畏无知的懵懂少年&#xff0c;到现在的中年大叔&#xff0c;从中的酸甜苦辣也只有本人自知。随着岁月的成长&#xff0c;技术也从原来的三层设计到…

NLP Coursera By Michael Collins - Week1

转载自 NLP Coursera By Michael Collins - Week1 NLP Coursera By Michael Collins - Week1 构建模型框架 - Markov Process 毕竟是机器学习嘛&#xff0c;所以第一步&#xff0c;先要把实际问题转化成数学模型。 在NLP中&#xff0c;一般使用的都是概率模型&#xff0c;…

19级:班级日常分享,一天一瞬间

点击上方蓝色关注我们&#xff01;19级的同学们目前正在做KTV点歌系统项目&#xff0c;截止今日为止&#xff0c;项目已经进展了1天多了&#xff0c;进度还在可控范围内&#xff0c;大部分组的后台都已完成&#xff0c;刘娜小组稍微比较慢了点儿。李磊小组的进度最快&#xff0…

Attentive Sequence to Sequence Networks

转载自 Attentive Sequence to Sequence Networks Attentive Sequence to Sequence Networks 1、Encoder-Decoder 框架 首先我们模型的整体框图如下&#xff1a; Encoder-Decoder 框架可以这么直观地去理解&#xff1a;可以把它看作适合处理由一个句子&#xff08;或篇章&a…

20级四班班级管理规章制度

点击上方蓝色关注我们&#xff01;