solution

一道非常经典的双向搜索题目,先将前3个未知数枚举一遍得到方程的前半部分所有可能的值,取负存入第一个队列中再将后3个未知数枚举一遍,存入第二个队列中。这样我们只要匹配两个队列中相同的元素即可使方程为零。方法:将两个队列排序,用尺取法+乘法原理扫一遍即可。

=>

code:

#include<iostream>
#include<cstdio>
#include<iomanip>
#include<algorithm>
#include<cstring>
#include<cstdlib>
#include<ctime>
#include<cmath>
#include<vector>
#include<queue>
#include<map>
#include<set> #define ll long long
#define db double
#define inf 0x7fffffff
#define rg register int using namespace std; int ans;
int n,m,l,t1,t2;
int k[7],p[7];
int a[3500001];
int b[3500001]; inline int qr(){
char ch;int sign=1;
while((ch=getchar())<'0'||ch>'9')
if(ch=='-')sign=-1;
int res=ch^48;
while((ch=getchar())>='0'&&ch<='9')
res=res*10+(ch^48);
return res*sign;
} inline int fast(int x,int y){
int res=1;
while(y){
if(y&1)res*=x;
x*=x; y>>=1;
}return res;
} inline void dfs(int t,int tot){
if(t>l){a[++t1]=-tot;return ;}
for(rg i=1;i<=m;++i)
dfs(t+1,tot+k[t]*fast(i,p[t]));
} inline void dfs2(int t,int tot){
if(t>n){b[++t2]=tot;return ;}
for(rg i=1;i<=m;++i)
dfs2(t+1,tot+k[t]*fast(i,p[t]));
} int main(){
//freopen("equation.in","r",stdin);
//freopen("equation.out","w",stdout);
n=qr(),m=qr();l=n/2;
for(rg i=1;i<=n;++i)
k[i]=qr(),p[i]=qr();
dfs(1,0); dfs2(l+1,0);
sort(a+1,a+t1+1);
sort(b+1,b+t2+1);
for(rg i=1,j=1,su,x,y;i<=t1;++i){
if(a[i]<b[j])continue;
while(b[j]<a[i]&&j<=t2)++j;
if(j>t2)break;
if(a[i]==b[j]){
su=a[i]; x=y=0;
while(a[i]==su&&i<=t1)++i,++x;
while(b[j]==su&&j<=t2)++j,++y;
ans+=x*y;--i;
}
}
printf("%d\n",ans);
return 0;
}

最新文章

  1. Nginx 1.10.1 编译、配置文档(支持http_v2,TLSv1.2,openssl v1.0.2)
  2. MyEclipse部署web项目到Tomcat出现An internal error occurred during: &quot;Launching on Tomcat 7.x&quot;的问题
  3. java的关闭钩子(Shutdown Hook)
  4. “全能”选手—Django 1.10文档中文版Part2
  5. .NET web开发之WebApi初试水
  6. ajax如何返回多个值
  7. JAVA魔法堂:读取.properties配置文件
  8. 14Spring_AOP编程(AspectJ)_环绕通知
  9. net use
  10. usb 驱动
  11. Python学习笔记九-文件读写
  12. Linux命令之切换用户
  13. 从51跳新唐cortex学习3——细说新唐两种定时器
  14. Phalanx
  15. JavaScript初见
  16. truffle框架的简单使用
  17. HDU4466 Triangle 计数 容斥原理
  18. 003.Ceph扩展集群
  19. 关于现在互联网是否还有机会类的价值文章,为什么有人掉进互联网创业的坑里,可能因为ta不懂这些
  20. [Android] QPST,解BL锁,刷Recovery,备份系统,root,刷框架.

热门文章

  1. Zip伪加密 破解ZIP密码
  2. 1085. Perfect Sequence (25)-水题
  3. Visual Studio 2015的安装和简单的单元测试
  4. mosquitto集群配置
  5. PAT 2016 数据的交换输出
  6. 三步轻松搞定delphi中CXGRID手动添加复表头(多行表头,报表头)
  7. mybatis 注解和xml 优缺点
  8. fetch API &amp; upload file
  9. centos7 登陆报错 grep:write error
  10. MT【172】内外圆