博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
长春理工大学第十四届程序设计竞赛(重现赛)F.Successione di Fixoracci
阅读量:6805 次
发布时间:2019-06-26

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

链接:

题意:

动态规划(Dynamic programming,简称dp)是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。例如,假设小x一步能爬1层或2层台阶,求小x爬n层台阶共有几种方法,就可以用dp计算:设FiFi代表小x爬i层台阶共有几种方法,则Fi=Fi1+Fi2Fi=Fi−1+Fi−2。

小x是练习时长两年半的acm练习生,喜欢口胡、dp、线段树。妙就妙在,不管是什么题目,无论多难,小x都能用他喜欢的三样东西AC。

你可能不相信,但其实他口胡了一个定理:所有题目,都可以转化成在x数列上的操作。只要先dp出题目对应的x数列,再用线段树随便维护一下,就可以过了。以下给出x数列的定义:
T0=aT0=a
T1=bT1=b
Tn=Tn1Tn2(n2)Tn=Tn−1⊕Tn−2(n≥2)
其中⊕为异或运算。
现在小x已经用dp求出了a和b的值。现在你只要求出TnTn是多少,就可以通过这道题目

思路:

a xor b = c,a xor c = b, b xor c = a.

得到数列从0项开始是a,b,c循环。

代码:

#include 
using namespace std; typedef long long LL; int main(){ LL res[3]; LL n; cin >> res[0] >> res[1] >> n; res[2] = res[0]^res[1]; cout << res[n%3] << endl; return 0;}

  

转载于:https://www.cnblogs.com/YDDDD/p/10992179.html

你可能感兴趣的文章
每天尝试改变一点点!
查看>>
KNN(K-Nearest Neighbor)最邻近规则分类
查看>>
IntelliJ IDEA 2016.1破解码一枚
查看>>
metasploit ***测试笔记(meterpreter篇)
查看>>
HTTP基础
查看>>
JavaSE学习笔记(五)——类与对象
查看>>
Android之高仿飞鸽传输热点创建与搜索模块
查看>>
Struts2、Spring和Hibernate应用实例(中)
查看>>
[转]MYSQL性能优化分享(分库分表)
查看>>
用php实现异步执行任务的队列(一)
查看>>
AngularJS表单验证操作例子分享
查看>>
RabbitMQ 的安装与工作模式
查看>>
视图的跳转,ViewController的使用 。试图出现启动消失过程
查看>>
博科300光纤交换机配置手册/操作方法/密码设置/用户指南大全
查看>>
HTML Dom
查看>>
Linux下为PHP添加扩展库的方法
查看>>
HBase(四):HBase API判断表是否存在,结果问题爆棚。。
查看>>
宏定义冲突
查看>>
cobbler-自动化部署
查看>>
我的友情链接
查看>>