长春理工大学第十四届程序设计竞赛(重现赛)F.Successione di Fixoracci
生活随笔
收集整理的這篇文章主要介紹了
长春理工大学第十四届程序设计竞赛(重现赛)F.Successione di Fixoracci
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
鏈接:https://ac.nowcoder.com/acm/contest/912/F
題意:
動態規劃(Dynamic programming,簡稱dp)是一種通過把原問題分解為相對簡單的子問題的方式求解復雜問題的方法。例如,假設小x一步能爬1層或2層臺階,求小x爬n層臺階共有幾種方法,就可以用dp計算:設FiFi代表小x爬i層臺階共有幾種方法,則Fi=Fi?1+Fi?2Fi=Fi?1+Fi?2。
小x是練習時長兩年半的acm練習生,喜歡口胡、dp、線段樹。妙就妙在,不管是什么題目,無論多難,小x都能用他喜歡的三樣東西AC。
你可能不相信,但其實他口胡了一個定理:所有題目,都可以轉化成在x數列上的操作。只要先dp出題目對應的x數列,再用線段樹隨便維護一下,就可以過了。以下給出x數列的定義:
T0=aT0=a
T1=bT1=b
Tn=Tn?1⊕Tn?2(n≥2)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 <bits/stdc++.h>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
總結
以上是生活随笔為你收集整理的长春理工大学第十四届程序设计竞赛(重现赛)F.Successione di Fixoracci的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Louvain 算法原理 及设计实现
- 下一篇: 移植linux内核-映像文件,移植Lin