1. 程式人生 > >牛客網小白賽5——F 圓circle(腦洞+遞推)

牛客網小白賽5——F 圓circle(腦洞+遞推)

題意:一個圓上找n個點兩兩相連,要求劃分的塊數最多。

思路:顯然,這是一道直線分平面的變形題,首先我們不管相連的情況,每增加一條直線,平面數最多增加為(與之相交直線數+1)

當n=0時,顯然塊數sum=1。

n=1,sum=f(0) +  1= 2;

n=2,sum=f(1) + (1 + 0)+ (1+(2 - 1 - 1)*(1 - 1)) = 4;

以此類推可以得到:

F(n) = F(n-1)+\sum_{i=1}^{n-1}(1+(n-i+1)*(i-1))

顯然這個式子可以化簡為:

F(n) = F(n-1)+\sum_{i=0}^{n-1}(ni+2-i^{2}-n)

通過連續自然數的平方和和直接加和的公式可以化簡為:

F(n) = F(n-1)+\frac{1}{6}n^{3}-n^{2}+\frac{17}{6}n-2

通過遞推得出:

F(n) = \sum_{k=1}^{n}(\frac{1}{6}n^{3}-n^{2}+\frac{17}{6}n-2)+F(0)

又因為F(0) = 1

可以推得:

F(n) = \frac{1}{24}n(n^{3}-6n^{2}+23n-18)+1

最後附上python版程式碼(好像不用大數,c++unsign long long好像就夠了)

# encoding: utf-8 

while True:
    try:
        n = int(input())
        ans = n * n * n * n + 23 * n * n - 6 * n * n * n - 18 * n
        ans = int(ans / 24) + 1
        print(ans)
    except EOFError:
        break;

c++的也附上一個吧

#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
const int N = 1e5 + 7;
const double ex = 1e-8;
typedef unsigned long long ull;
typedef long long ll;
typedef double dl;
int main()
{
    ull n;
    while(cin >> n){
        ull ans = (n * n * n * n - 6 * n * n * n + 23 * n * n - 18 * n) / 24 + 1;
        cout << ans << endl;
    }
    return 0;
}

相關推薦

5——F circle+

題意:一個圓上找n個點兩兩相連,要求劃分的塊數最多。 思路:顯然,這是一道直線分平面的變形題,首先我們不管相連的情況,每增加一條直線,平面數最多增加為(與之相交直線數+1) 當n=0時,顯然塊數sum=1。 n=1,sum=f(0) +  1= 2; n=2,su

5 I區間 線段樹,差分思想,樹狀陣列

分析:這個題目一看,恩,好像就是區間修改查詢,馬上想到了線段樹,一毛一樣,但是線段樹的時間複雜度為O(nlogn),可能會卡時間,但是題目稍鬆的話不會卡,但是空間要開四倍,所以說很可能空間不夠用,關鍵是題目資料太多,就要開long long ,然後我就只過了百分之三十的資

2018年,5

bject www urn 小時 %d describe desc bsp n+2 第一次啊,補題,希望大佬批評。 題目按我補題順序來的。 https://www.nowcoder.com/acm/contest/135#question H 題 最大公倍數 題意:給出兩

2 F題 黑黑白白 【簡單sg博弈】

傳送門 題意: 就是每次在一顆有根樹上有一個棋子, 兩個人輪流的移動棋子, 且每次只能向其兒子移動, 不能移動者輸掉比賽, 給定這個樹的形態, 問是否先手必勝. 思路: 稍微瞭解一點sg博弈的都知道, 這就是sg博弈的最開始的引入呀, 就是在一副有向圖上進行

5

目描述     Apojacsleam喜歡陣列。     他現在有一個n個元素的陣列a,而他要對a[L]-a[R]進行M次操作:         操作一:將a[L]-a[R]內的元素都加上P         操作二:將a[L]-a[R]內的元素都減去P    

1 B,I

hide print cout const map ostream splay typedef inf 1 #include <stdio.h> 2 #include <math.h> 3 #include <string.h>

7送分題

連結:https://ac.nowcoder.com/acm/contest/190/A 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 做水題就是在浪費時間,但是一場比賽要是沒有送

9 論如何出一道水題OJ題目ACM

連結:https://ac.nowcoder.com/acm/contest/275/H 來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 262144K,其他語言524288K 64bit IO Format: %lld 題目描述 給定 n,求一對整數

7 BFS

連結:https://ac.nowcoder.com/acm/contest/190/F 來源:牛客網 時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 Bob在學習了DFS後,自

6D 字串絲帶

時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 65536K,其他語言131072K 64bit IO Format: %lld 題目描述 WHZ送給了HtBest一個“字串絲帶”,這

8神祕鑰匙

時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 clccle一行?個人來到了一個詭異的世界,她

7 BFS

時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 Bob在學習了DFS後,自己又發明了一種新的搜

1 B題

Etéreo 最近又發現了一個高大上的東西: 他覺得這裡的  同樣非常的厲害!然後他又告訴你: 他會告訴你  和  ,想請你告訴他  的值。當然這是一個小數,所以請你在小數點後保留  位。  Etéreo 是個“問題小子”,有很多詢問,請你一一回答。  注意,題中  都是實數。輸入描述:第一行一個整數  

3 B 躲藏 簡單DP

B 躲藏來源:牛客網題目描述XHRlyb和她的小夥伴Cwbc在玩捉迷藏遊戲。Cwbc藏在多個不區分大小寫的字串中。好奇的XHRlyb想知道,在每個字串中Cwbc作為子序列分別出現了多少次。由於Cwbc可能出現的次數過多,你只需要輸出每個答案對2000120420010122取

7 B自殺遊戲 博弈論,SG函式

時間限制:C/C++ 1秒,其他語言2秒 空間限制:C/C++ 32768K,其他語言65536K 64bit IO Format: %lld 題目描述 Alice和Bob產生了不可調節的矛盾,於是他們相約一起玩一個自殺遊戲,輸的人就會從這個世界上消失。 遊戲開始時,

——鼠排隊桶排序

題目描述 N只小白鼠(1 <= N <= 100),每隻鼠頭上戴著一頂有顏色的帽子。現在稱出每隻白鼠的重量,要求按照白鼠重量從大到小的順序輸出它們頭上帽子的顏色。帽子的顏色用“red”,“blue”等字串來表示。不同的小白鼠可以戴相同顏色的帽子。白鼠的重量用整數表示。 輸入描

OI賽制測試1-F-子序列組合數

題目描述 給出一個長度為n的序列,你需要計算出所有長度為k的子序列中,除最大最小數之外所有數的乘積相乘的結果 輸入描述: 第一行一個整數T,表示資料組數。 對於每組資料,第一行兩個整數N,k,含義如題所示 接下來一行N個整數,表示給出的序列 保證序列內的數互

a的旅行計劃

地址:https://ac.nowcoder.com/acm/contest/223/B 此題是一道套公式題目,不難,ans=(pow(4,n+1)-4*pow(3,n+1)+6*pow(2,n+1)-4)*pow(8,mod-2) #include <cstdio> #incl

noi.ac及NOIP模擬部分題目記錄

牛客網NOIP賽前集訓營-提高組(第二場): T2:分糖果 這個題完全不會啊。考慮序列的情況,容斥就是考慮有多少對相等關係,也就是有多少對等號,那麼設 f

錯題集錦5

1、如果您想列出當前目錄以及子目錄下所有副檔名為“.txt”的檔案,那麼您可以使用的命令是() 答案:命令find -name "*.txt",是獲取當前目錄的.txt檔案 2、設定linux系統預設為字元模式,需要修改的配置檔案是( ) 答案:/etc/inittab