HDU - 5936: Difference(暴力:中途相遇法)
then he gets the result
As Ruins is forgetful, a few seconds later, he only remembers KK, xx and forgets yy. please help him find how many yy satisfy x=f(y,K)−yx=f(y,K)−y.
InputFirst line contains an integer TT, which indicates the number of test cases.
Every test case contains one line with two integers xx, KK.
Limits
1≤T≤1001≤T≤100
0≤x≤1090≤x≤109
1≤K≤91≤K≤9OutputFor every test case, you should output 'Case #x: y', where x indicates the case number and counts from 1 and y is the result.Sample Input
2
2 2
3 2
Sample Output
Case #1: 1
Case #2: 2
题意:给定函数f(y,K)=∑y的所有位的K次幂,给出X,K,问多少个Y满足f(Y,K)=X;
思路:似乎没有什么思路,考虑暴力,估计Y只有10位,所以我们暴力前面5位,用map去寻找后面5位。
然而我开始些了离散化WA了,map过了。
#include<bits/stdc++.h>
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
unordered_map<ll,int>mp;
ll tot,cnt,f[][],K,a[maxn],X,ans,num[maxn];
int main()
{
int T,Cas=;
scanf("%lld",&T); rep(i,,) f[i][]=;
rep(i,,) rep(j,,) f[i][j]=f[i][j-]*i;
while(T--){
tot=cnt=; mp.clear();
scanf("%lld%lld",&X,&K); ans=;
rep(i,,)
rep(j,,)
rep(k,,)
rep(p,,)
rep(q,,){
ll t1=f[i][K]+f[j][K]+f[k][K]+f[p][K]+f[q][K],t2=i*+j*+k*+p*+q;
a[++tot]=t1-100000LL*t2; mp[t1-t2]++;
if(t1-t2==X) ans++;
}
rep(i,,tot) if(mp.find(X-a[i])!=mp.end())ans+=mp[X-a[i]];
printf("Case #%d: %lld\n",++Cas,ans-(X==));
}
return ;
}
错误代码(依然没有找到bug):
#include<bits/stdc++.h>
#define ll long long
#define rep(i,a,b) for(int i=a;i<=b;i++)
using namespace std;
const int maxn=;
int Laxt[maxn],Next[maxn],tot,cnt,f[][],num[maxn]; ll a[maxn],To[maxn],X,ans,K;
int find(ll x){
ll t=(x%maxn+maxn)%maxn;
for(int i=Laxt[t];i;i=Next[i]) if(To[i]==x) return num[i];
return ;
}
void add(ll x){
if(x==X) ans++;
ll t=(x%maxn+maxn)%maxn;
for(int i=Laxt[t];i;i=Next[i]){
if(To[i]==x) { num[i]++; return ;}
}
Next[++cnt]=Laxt[t]; Laxt[t]=++cnt; To[cnt]=x; num[cnt]=;
}
int main()
{
int T,Cas=;
scanf("%lld",&T); rep(i,,) f[i][]=;
rep(i,,) rep(j,,) f[i][j]=f[i][j-]*i;
while(T--){
memset(Laxt,,sizeof(Laxt));
tot=cnt=;
scanf("%lld%lld",&X,&K); ans=;
rep(i,,)
rep(j,,)
rep(k,,)
rep(p,,)
rep(q,,){
ll t1=f[i][K]+f[j][K]+f[k][K]+f[p][K]+f[q][K],t2=i*+j*+k*+p*+q;
a[++tot]=t1-100000LL*t2; add(t1-t2);
}
rep(i,,tot) ans+=find(X-a[i]);
printf("Case #%d: %lld\n",++Cas,ans-(X==));
}
return ;
}
HDU - 5936: Difference(暴力:中途相遇法)的更多相关文章
- HDU 5936 Difference 【中途相遇法】(2016年中国大学生程序设计竞赛(杭州))
Difference Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total ...
- 【UVALive】2965 Jurassic Remains(中途相遇法)
题目 传送门:QWQ 分析 太喵了~~~~~ 还有中途相遇法这种东西的. 嗯 以后可以优化一些暴力 详情左转蓝书P58 (但可能我OI生涯中都遇不到正解是这个的题把...... 代码 #include ...
- LA 2965 中途相遇法
题目链接:https://vjudge.net/problem/UVALive-2965 题意: 有很多字符串(24),选出一些字符串,要求这些字符串的字母都是偶数次: 分析: 暴力2^24也很大了, ...
- 紫书 习题 8-16 UVa 1618 (中途相遇法)
暴力n的四次方, 然而可以用中途相遇法的思想, 分左边两个数和右边两个数来判断, 最后合起来判断. 一边是n平方logn, 合起来是n平方logn(枚举n平方, 二分logn) (1)两种比较方式是相 ...
- 【uva 1152】4 Values Whose Sum is Zero(算法效率--中途相遇法+Hash或STL库)
题意:给定4个N元素几个A,B,C,D,要求分别从中选取一个元素a,b,c,d使得a+b+c+d=0.问有多少种选法.(N≤4000,D≤2^28) 解法:首先我们从最直接最暴力的方法开始思考:四重循 ...
- HDU 5936 Difference
题意: 有一个函数f(y, k) = y的每个十进制位上的数字的k次幂之和 给x, k 求 有多少个y满足 x = f(y, k) - y 思路: (据说这叫中途相遇法?) 由于 x >= 0 ...
- uva 6757 Cup of Cowards(中途相遇法,貌似)
uva 6757 Cup of CowardsCup of Cowards (CoC) is a role playing game that has 5 different characters (M ...
- LA 2965 Jurassic Remains (中途相遇法)
Jurassic Remains Paleontologists in Siberia have recently found a number of fragments of Jurassic pe ...
- 【中途相遇法】【STL】BAPC2014 K Key to Knowledge (Codeforces GYM 100526)
题目链接: http://codeforces.com/gym/100526 http://acm.hunnu.edu.cn/online/?action=problem&type=show& ...
- 高效算法——J 中途相遇法,求和
---恢复内容开始--- J - 中途相遇法 Time Limit:9000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Su ...
随机推荐
- SQL char Nvarchar 详解
Nvarchar : 可变长度的 , Unicode 编码. 长度 1-4000, 1个汉子 或者 字符 都是 2个字节. 支持多语言, 配合 大写 N 可以防止出现乱码. char: 固定 ...
- CMSIS_OS中osMailPut 和 osMessagePut 的问题
1. 背景 为了屏蔽不同OS之间的差别,ARM公司开发了一套OS接口--CMSIS_OS. 在使用STM32 cube生成的free rtos工程中,遇到一些问题. 问题1:osMessageGet ...
- 菜单Menu
<Menu HorizontalAlignment="> <MenuItem Header="文件"> <MenuItem Header=& ...
- jQuery动画二级下拉菜单
在线演示 本地下载
- CentOS 7如何将.deb文件转换.rpm
1.首先下载alien工具 http://ftp.de.debian.org/debian/pool/main/a/alien/ http://ftp.de.debian.org/debian/po ...
- MySQL5.6一键部署
# 快速部署单节点MySQL脚本# 执行方式:将MySQL包,my3302.cnf配置文件,dbtool脚本文件放到一个目录下.然后按照脚本执行就可以.配置文件提前修改好.文章最后附上my.cnf配置 ...
- 20162326 齐力锋 2016-2017-2 《程序设计与数据结构》 MySort.java 实验博客
实验代码学习编程中的问题及解决方法 代码运行成功截图 首次代码运行出现的问题截图 问题1:无法从静态上下文中引用非静态方法 问题1解决方法及思考: split方法是非静态方法,需要借助对象来调用.我查 ...
- 《Python学习手册》(二)
<Python学习手册>(二) --类型和运算 数字 十六进制 八进制 二进制 0x 0o 0b hex() oct() bin() >>>int('10',2) 2 & ...
- 无缝走A的终极技巧:学会了你也是走A怪
ADC重点之中:改键铸造更强走A! 我们先来欣赏一波来自世界顶尖ADC大师兄Doublelift的教科书般的走A. 他使用的金克丝在空蓝的情况下,凭借娴熟的走A技巧,拿下五杀. 关于走A,其实它有着一 ...
- COS-5资源分配与调度
操作系统是用户和计算机的接口,同时也是计算机硬件和其他软件的接口.操作系统的功能包括管理计算机系统的硬件.软件及数据资源,控制程序运行,改善人机界面,为其它应用软件提供支持,让计算机系统所有资源最大限 ...