【CYH-02】NOIp考砸后虐题赛:函数:题解
这道题貌似只有@AKEE 大佬A掉,恭喜!
还有因为c++中支持两个参数数量不同的相同名称的函数调用,所以当时就没改成两个函数,这里表示抱歉。
这道题可直接用指针+hash一下,然后就模拟即可。
代码:
#include<bits/stdc++.h>
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<<f(a,b)<<endl;
}
return 0;
}
另附AKEE大佬代码:(%%%)
#include <iostream>
#include <cstdlib>
#include <cstdio>
#include <cstring>
#include <unordered_map>
#include <algorithm>
using namespace std;
typedef long long ll;
const int MAXN=10000005;
ll n,m,f[MAXN];
unordered_map<ll,ll> 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<<solve(n)+solve(m)<<endl;
return 0;
}
【CYH-02】NOIp考砸后虐题赛:函数:题解的更多相关文章
- 【CYH-02】NOIp考砸后虐题赛:转换式:题解
这道题真的不难吧. 如@AKEE@AKEE@AKEE 大佬所说,此题的确可以将n推广到一般情况. 但题面还是良心的只到了N<=4N<=4N<=4 以目前的题目来看,简单模拟即可. 分 ...
- 【CYH-02】NOIp考砸后虐题赛:坐标:题解
代码: 这道题也并不难,用排序+简单动规即可.因为@Kevin_Wa 大佬放的是c++,所以我来一发Pascal. var min,max,i,a1,b1,c1,d1,n:longint; a,b,c ...
- 【CYH-02】NOIp考砸后虐题赛:数学:题解
赛后放上.
- 【CYH-02】NOIp考砸后虐题赛:成绩:题解
这道题挺送水了吧... 两种做法. 其实空间都不需要那么大,我来提交界面一看一堆MLE的,于是还是良心的放开了时限. 这么简单,就不做解释了. 下面放出几种代码. 代码: 两个数组: #include ...
- CYJian的新春虐题赛
题解: t1: 算了一下发现乘法也是可以莫比乌斯反演的 然后就直接对原式莫比乌斯反演了 大概加法是$\mu {(i)}*f(i)$ 乘法就是$f(i)^{\mu {(i)}}$ 然后这个算法成功达到$ ...
- 退役II次后做题记录
退役II次后做题记录 感觉没啥好更的,咕. atcoder1219 历史研究 回滚莫队. [六省联考2017]组合数问题 我是傻逼 按照组合意义等价于\(nk\)个物品,选的物品\(\mod k\) ...
- 退役IV次后做题记录
退役IV次后做题记录 我啥都不会了.... AGC023 D 如果所有的楼房都在\(S\)同一边可以直接得出答案. 否则考虑最左最右两边的票数,如果左边>=右边,那么最右边会投给左边,因为就算车 ...
- 退役III次后做题记录(扯淡)
退役III次后做题记录(扯淡) CF607E Cross Sum 计算几何屎题 直接二分一下,算出每条线的位置然后算 注意相对位置这个不能先搞出坐标,直接算角度就行了,不然会卡精度/px flag:计 ...
- 洛谷P1067 多项式输出 NOIP 2009 普及组 第一题
洛谷P1067 多项式输出 NOIP 2009 普及组 第一题 题目描述 一元n次多项式可用如下的表达式表示: 输入输出格式 输入格式 输入共有 2 行 第一行 1 个整数,n,表示一元多项式的次数. ...
随机推荐
- Linux kernel version dirty
在我们使用git来管理Linux Kernel的时候,在编译的时候会在你的kernel version加上git commit number 有时候还会出现dirty字样,字面意思是内核被污染的意思. ...
- GO :互联网时代的 C 语言!
摘要: 每周为您推送最有价值的开源技术内参! 技术干货 标签:独家译文 1.Go 很好,为什么我们不使用它? 在这篇文章中,我将分享一下为什么我认为它很棒,使用它的一些缺点,以及为什么它还不是我们 Z ...
- Wolf RPG Editor游戏解包
前言 使用arc_conv_r53进行解包 使用touhouSE进行解包 使用DXEXTRACT进行解包 前言 Wolf RPG Editor由于其需要翻来覆去的转码,脚本名称等问题算是解包跟汉化中比 ...
- WebBrowser执行脚本和调用外部方法
控制WebBrowser实际上就是控制IE,最简单的方法就是执行javascript或vbscript,省去了接口的转换.如何执行脚本?以前我一直用mshtml中IHTMLWindow2接口的exec ...
- QT---Winsocket获取网关(Gateway) 主机IP等信息
基于WinPcap库做开发,需要利用到局域网的默认网关地址和Mac地址,但是WinPcap实现获取网关IP地址没有很好的思路,可以知道的是网关的接收和发出的数据包数量一般是比局域网内的各主机要多的 ...
- windows Service 之调试过程(附加到进程里调试,而且启动时间不能超过30秒)
最近第一次用C#写了一个windows service ,其实实现的内容比较简单.就是启动remoting 连接,但是调试相对初次写windws service 的我来说,比较烦.没有经验,而且没办法 ...
- 【算法随记三】小半径中值模糊的急速实现(16MB图7.5ms实现) + Photoshop中蒙尘和划痕算法解读。
在本人的博客里,分享了有关中值模糊的O(1)算法,详见:任意半径中值滤波(扩展至百分比滤波器)O(1)时间复杂度算法的原理.实现及效果 ,这里的算法的执行时间和参数是无关的.整体来说,虽然速度也很快, ...
- Mac上使用brew安装nvm来支持多版本的Nodejs
brew方式 如果机器没有安装过node,那么首先brew install nvm安装nvm. 其次需要在shell的配置文件(~/.bashrc, ~/.profile, or ~/.zshrc)中 ...
- CTF练习资源大全集
练习CTF清单/永久CTF清单 以下列出了一些长期运行的CTF实践站点和工具或CTF.谢谢,RSnake用于启动这是基于的原始版本.如果您有任何更正或建议,请随时通过dot com tld在域psif ...
- Linux下docker的安装
前言: 因为之前在自己的mac上直接使用HomeBrew的包管理安装的,使用brew install docker即可,这种方法简单,但最近想尝试在Linux下安装,费了一些时间,主要是启动docke ...