博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【CYH-02】NOIp考砸后虐题赛:函数:题解
阅读量:4455 次
发布时间:2019-06-07

本文共 1846 字,大约阅读时间需要 6 分钟。

这道题貌似只有@AKEE 大佬A掉,恭喜!

还有因为c++中支持两个参数数量不同的相同名称的函数调用,所以当时就没改成两个函数,这里表示抱歉。

这道题可直接用指针+hash一下,然后就模拟即可。

代码:

#include
using namespace std;const int Mo=10000000;struct node {
long long int state,ans; node* next;}*Hash[Mo+10],*p;long long max(long long a,long long b,long long c,long long d,long long e) {
return max(a,max(b,max(c,max(d,e))));}long long max(long long a,long long b,long long c,long long d) {
return max(a,max(b,max(c,d)));}long long f(long long x) {
if(x==0)return 0; p=Hash[x%Mo]; while(p!=NULL) {
if(p->state==x)return p->ans; p=p->next; } long long anss=max(x,f(x/2)+f(x/3)+f(x/8)+f(x/9)); p=new node; p->state=x; p->ans=anss; p->next=Hash[x%Mo]; Hash[x%Mo]=p; return anss;}long long f(long long a,long long b) {
long long anss=max(a+b,f(a/2)+f(a/3)+f(a/8)+f(a/9)+b,f(b/2)+f(b/3)+f(b/8)+f(b/9)+a,f(b/2)+f(b/3)+f(b/8)+f(b/9)+f(a/2)+f(a/3)+f(a/8)+f(a/9)); return anss;}int main() {
//freopen("function.in","r",stdin); //freopen("function.out","w",stdout); long long int a,b; while(cin>>a>>b) {
cout<
<

另附AKEE大佬代码:(%%%)

#include 
#include
#include
#include
#include
#include
using namespace std;typedef long long ll;const int MAXN=10000005;ll n,m,f[MAXN];unordered_map
has;ll solve(ll n){ if(n<=10000000)return f[n]; if(has.count(n))return has[n]; return has[n]=max(solve(n/2)+solve(n/3)+solve(n/8)+solve(n/9),n);}int main(){ #ifndef ONLINE_JUDGE freopen("code.in","r",stdin); //freopen("code.out","w",stdout); #endif f[0]=0; for(int i=1;i<=10000000;i++) f[i]=max(f[i/2]+f[i/3]+f[i/8]+f[i/9],i*1ll); while(cin>>n>>m) cout<
<

转载于:https://www.cnblogs.com/ShineEternal/p/10834274.html

你可能感兴趣的文章
Linux之crontab
查看>>
清除浮动
查看>>
JAVA优化建议
查看>>
Docker --- 安装MySQL
查看>>
CenOS+宝塔(模拟)上线博客项目
查看>>
Linux改变语言设置的命令
查看>>
loadrunner Vugen-Tools General-Options-Replay设置
查看>>
redis限频
查看>>
Floyd判圈算法
查看>>
接口,lambda表达式与内部类(二)
查看>>
Phabricator是什么,代码审查工具
查看>>
Java虚拟机类加载机制
查看>>
UITextView,UIWebView 直接显示html代码
查看>>
DirectX:函数可以连接任意两个filter 分类: Direct...
查看>>
Android APP开发入门教程-Button 分类: JAVA ...
查看>>
WustOJ 1575 Gingers and Mints(快速幂 + dfs )
查看>>
js中,for循环里面放ajax,ajax访问不到变量以及每次循环获取不到数据问题总结...
查看>>
算法:求从1到n这n个整数的十进制表示中1出现的次数-- python 实现
查看>>
CSU 1160 把十进制整数转换为十六进制,格式为0x开头,10~15由大写字母A~F表示
查看>>
LintCode 58: Compare Strings
查看>>