题意描述

方程的解数

求方程 \(\sum_{i=1}^{n}k_ix_i^{p_i}=0(x_i\in [1,m])\) 的解的个数。

算法分析

远古 NOI 的题目就是水

类似于这道题

做过这道题就没什么思维难度了,思路都是一样的,就是双向搜索。

但是这道题好像卡常比较严重,我是特判掉第一个点过的。(然后蜜汁洛谷 rank 1)

代码实现

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<cmath>
#define N 10
#define MOD 1999991
#define M 6000010
using namespace std;
typedef long long ll; int n,m,k[N],p[N];
int cnt=0,head[M];
struct Edge{
int nxt;
ll to;
}ed[M<<1];
ll ans=0; int read(){
int x=0,f=1;char c=getchar();
while(c<'0' || c>'9') f=(c=='-')?-1:1,c=getchar();
while(c>='0' && c<='9') x=x*10+c-48,c=getchar();
return x*f;
} ll Abs(ll x){return x>0?x:-x;} int Hash(ll x){return Abs(x)%MOD;} ll Pow(int a,int b){
ll num=1;
while(b){
if(b&1) num*=a;
a*=a;
b>>=1;
}
return num;
} void insert(ll x){
int now=Hash(x);
ed[++cnt]=(Edge){head[now],x};
head[now]=cnt;
return;
} int search(ll x){
int u=Hash(x),tot=0;
for(int i=head[u];i;i=ed[i].nxt)
if(x==ed[i].to) ++tot;
return tot;
} void dfs1(int dep,ll sum){
if(dep>(n>>1)){
insert(sum);
return;
}
for(int i=1;i<=m;i++)
dfs1(dep+1,sum+k[dep]*Pow(i,p[dep]));
return;
} void dfs2(int dep,ll sum){
if(dep>n){
ans+=search(-sum);
return;
}
for(int i=1;i<=m;i++)
dfs2(dep+1,sum+k[dep]*Pow(i,p[dep]));
return;
} int main(){
n=read(),m=read();
for(int i=1;i<=n;i++)
k[i]=read(),p[i]=read();
dfs1(1,0);dfs2((n>>1)+1,0);
printf("%lld\n",ans);
return 0;
}

完结撒❀。

最新文章

  1. hash模块 hashlib 和hmac
  2. 《Pro Express.js》学习笔记——Express框架常用设置项
  3. 清除缓存,计算Sql Server查询效率
  4. Dapper学习 - Dapper.Rainbow(一) - Create
  5. Linux学期总结
  6. border opacity
  7. python进阶学习三——第四天
  8. 50个常用的JQuery代码
  9. 低功耗蓝牙4.0BLE编程-nrf51822开发(4)
  10. SQL 启动服务方法
  11. Duilib实现圆形头像控件
  12. Oracle连接配置以及实例的备份和恢复
  13. 建立树莓派raspberry交叉编译环境以及编译内核
  14. 转:maven报错非法字符:\65279 错误
  15. Python新手学习基础之条件语句——elif语句
  16. HDU 4620 Fruit Ninja Extreme(2013多校第二场 剪枝搜索)
  17. linux下静态链接库的用法
  18. Nginx安装、平滑升级与虚拟机配置
  19. 网络爬虫BeautifulSoup库的使用
  20. busybox(三)最小根文件系统

热门文章

  1. 开源发丝分割数据集CelebAHairMask-HQ(国庆献礼)
  2. 057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和
  3. c++模板中set(date st):t(st)中的:符号
  4. 配置DVWA漏洞环境
  5. fastadmin toggle switch 开关 ids 值为空的解决办法
  6. DBA提交脚步规范
  7. MeteoInfo 新网站
  8. C语言入门编程需要掌握的核心要点有哪些? 为你总结了这20个!
  9. 【值得收藏】C语言入门基础知识大全!从C语言程序结构到删库跑路!
  10. MySQL数据库基础-3