P5691 [NOI2001]方程的解数
2024-08-27 04:33:07
题意描述
求方程 \(\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;
}
完结撒❀。
最新文章
- hash模块 hashlib 和hmac
- 《Pro Express.js》学习笔记——Express框架常用设置项
- 清除缓存,计算Sql Server查询效率
- Dapper学习 - Dapper.Rainbow(一) - Create
- Linux学期总结
- border opacity
- python进阶学习三——第四天
- 50个常用的JQuery代码
- 低功耗蓝牙4.0BLE编程-nrf51822开发(4)
- SQL 启动服务方法
- Duilib实现圆形头像控件
- Oracle连接配置以及实例的备份和恢复
- 建立树莓派raspberry交叉编译环境以及编译内核
- 转:maven报错非法字符:\65279 错误
- Python新手学习基础之条件语句——elif语句
- HDU 4620 Fruit Ninja Extreme(2013多校第二场 剪枝搜索)
- linux下静态链接库的用法
- Nginx安装、平滑升级与虚拟机配置
- 网络爬虫BeautifulSoup库的使用
- busybox(三)最小根文件系统
热门文章
- 开源发丝分割数据集CelebAHairMask-HQ(国庆献礼)
- 057 01 Android 零基础入门 01 Java基础语法 06 Java一维数组 04 案例:求整型数组的数组元素的元素值累加和
- c++模板中set(date st):t(st)中的:符号
- 配置DVWA漏洞环境
- fastadmin toggle switch 开关 ids 值为空的解决办法
- DBA提交脚步规范
- MeteoInfo 新网站
- C语言入门编程需要掌握的核心要点有哪些? 为你总结了这20个!
- 【值得收藏】C语言入门基础知识大全!从C语言程序结构到删库跑路!
- MySQL数据库基础-3