当前位置:网站首页>2021GDCPC广东省大学生程序设计竞赛 B.Byfibonacci
2021GDCPC广东省大学生程序设计竞赛 B.Byfibonacci
2022-07-30 22:48:00 【_Kiwi_Berry_】
题意:
给一个数x,问有多少个 Fibonacci 子集其和为x
思路:
如果 n 的范围较小,那就是01背包,但 n<=1e7 就不能以值域作为状态,但我们可以发现看题解 :设 v1 , v2 为小于 x 的 Fibonacci 最大值和次大值,那么符合条件的子集有且仅有他们中的一个。
找到这个规律后就可以DP了,我们令
- dp[0][i] 表示 i 选取最大的那个斐波那契数的乘积和
- dp[1][i] 表示 i 选取次大的那个斐波那契数的乘积和
namo 转移方程则为
- dp[0][i]=(dp[0][i-v1]+dp[1][i-v1])*v1
- dp[1][i]=(dp[0][i-v2]+dp[1][i-v2])*v2; i-v2<v2
- dp[1][i]=(dp[1][i-v2])*v2; i-v2>=v2
Code:
#include <bits/stdc++.h>
// #define debug freopen("_in.txt", "r", stdin);
#define debug freopen("_in.txt", "r", stdin), freopen("_out.txt", "w", stdout);
typedef long long ll;
typedef unsigned long long ull;
typedef struct Node *bintree;
using namespace std;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const ll maxn = 1e7 + 10;
const ll maxm = 2e6 + 10;
const ll mod = 998244353;
const double pi = acos(-1);
const double eps = 1e-8;
#define lson l, m, rt << 1
#define rson m + 1, r, rt << 1 | 1
ll T, n, m, q, d, kase = 0;
priority_queue<pair<ll, ll>> que;
ll arr[100];
ll dp[3][maxn];
void solve()
{
scanf("%lld", &n);
printf("%lld\n",(dp[0][n]+dp[1][n])%mod);
}
signed main()
{
// debug;
scanf("%lld", &T);
// T = 1;
arr[1] = arr[2] = 1;
for (ll i = 2; i <= 50; i++)
{
arr[i] = arr[i - 1] + arr[i - 2];
}
dp[0][0] = 1;
dp[0][1] = 1;
dp[1][1] = 1;
ll now = 0;
for (ll i = 2; i <= 1e7; i++)
{
if (i >= arr[now])
{
while (i >= arr[now])
{
now++;
}
now--;
}
ll v1=arr[now],v2=arr[now-1];
dp[0][i]=(dp[0][i-v1]+dp[1][i-v1])*v1;
dp[0][i]%=mod;
if(i-v2<v2)
{
dp[1][i]=(dp[0][i-v2]+dp[1][i-v2])*v2;
}
else
{
dp[1][i]=(dp[1][i-v2])*v2;
}
dp[1][i]%=mod;
}
while (T--)
{
solve();
}
}
边栏推荐
- MYSQL JDBC Book Management System
- Gxlcms有声小说系统/小说听书系统源码
- 关于XML的学习(一)
- Ningbo Zhongning Pawn will transfer 29.5% of the equity for 2.8338 million yuan, and the owner's equity in 2021 will be 9.6875 million yuan
- tcp协议传输中的粘包问题
- EasyExcel综合课程实战
- 连号区间数
- proxy反向代理
- 【导航规划】导航规划背景知识总结
- MySQL compressed package installation, fool teaching
猜你喜欢

Navicat cannot connect to mysql super detailed processing method

Py's pdpbox: a detailed introduction to pdpbox, installation, and case application

StoneDB 为何敢称业界唯一开源的 MySQL 原生 HTAP 数据库?

Ningbo Zhongning Pawn will transfer 29.5% of the equity for 2.8338 million yuan, and the owner's equity in 2021 will be 9.6875 million yuan

【MySQL】MySQL中对数据库及表的相关操作

cnpm installation steps

TCP 连接 三次握手 四次挥手

ThinkPHP high imitation blue play cloud network disk system source code / docking easy payment system program

2022中国物流产业大会暨企业家高峰论坛在杭州举办!

一文详解:SRv6 Policy模型、算路及引流
随机推荐
【CTF】buuctf web 详解(持续更新)
Alibaba Cloud video on demand + project combat
反转链表-头插反转法
【Untitled】
Successfully resolved ModuleNotFoundError: No module named 'Image'
鳄梨价格数据集(Avocado Prices)
【Untitled】
打动中产精英群体,全新红旗H5用产品力跑赢需求
Ningbo Zhongning Pawn will transfer 29.5% of the equity for 2.8338 million yuan, and the owner's equity in 2021 will be 9.6875 million yuan
Successfully solved ImportError: always import the name '_validate_lengths'
【微信小程序】小程序突破小程序二维码数量限制
ZZULIOJ:1119: 数列有序
matlab标量场作图
QT开发简介、命名规范、signal&slot信号槽
IJCAI2022 Tutorial | Spoken Language Comprehension: Recent Advances and New Fields
VS2017 compile Tars test project
二进制序列
WSL2设置默认启动用户(debian)
【MySQL】MySQL中对数据库及表的相关操作
解决一个Mysql的utf8编码导致的问题