1. 程式人生 > >2017烏魯木齊區域賽D題Fence Building——尤拉定理

2017烏魯木齊區域賽D題Fence Building——尤拉定理

題意:Farmer John owns a farm. He first builds a circle fence. Then, he will choose n points and build some straight fences connecting them. Next, he will feed a cow in each region so that cows cannot play with each other without breaking the fences. In order to feed more cows, he also wants to have as many regions as possible. However, he is busy building fences now, so he needs your help to determine what is the maximum number of cows he can feed if he chooses these n points properly.

思路:

尤拉定理:f = e - v + 2

v = n + C(n,4)(每4個點的連線必有一個交點)

e = n(圓弧) + C(n,2)+ 2*C(n,4)(一個交點是兩條邊形成的,這個交點將這兩條邊劃分成4條邊,數量上+2,因此有多少交點就增加交點數*2條邊)

ans = f - 1,圓外的不算

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>

using namespace std;

typedef long long LL;
const int mod = 1e9 + 7;

LL power_mod(LL a,LL b)
{
    LL base=a%mod;
    a=a%mod;
    LL res=1LL;
    while(b)
    {
        if(b&1)
            res=base*res%mod;
        base=base*base%mod;
        b=b>>1;
    }
    return res%mod;
}

LL C(LL n, LL m)
{
    if(m > n) return 0;
    LL ans = 1;
    for(int i=1; i<=m; i++)
    {
        LL a = (n + i - m) % mod;
        LL b = i % mod;
        ans = ans * (a * power_mod(b, mod-2) % mod) % mod;
    }
    return ans;
}

LL Lucas(LL n, LL m)
{
    if(m == 0) return 1;
    return C(n % mod, m % mod) * Lucas(n / mod, m / mod) % mod;
}

int main() {
    int T;
    scanf("%d", &T);
    for (int kase = 1; kase <= T; kase++) {
        LL n;
        scanf("%lld", &n);
        printf("Case #%d: %lld\n", kase, (Lucas(n, 2) + Lucas(n, 4) + 1) % mod);
    }
    return 0;
}

相關推薦

2017烏魯木齊區域DFence Building——定理

題意:Farmer John owns a farm. He first builds a circle fence. Then, he will choose n points and build some straight fences connecting them.

2017烏魯木齊區域A(動態規劃,組合數學,期望)

ble set 可能 組合 name main i++ return soft #include<bits/stdc++.h>using namespace std;double c[110][110];double g[110];double dp[110]

[六省聯考2017]相逢是問候(線段樹+拓展定理

好題啊! 調了一箇中午,發現有一條語句 \(RE\) 了。在 \(windows\) 下沒關係,\(linux\) 下有問題,大大的問題。 while(phi[tot]!=1) phi[++tot]=calc_phi(phi[tot-1]); 算是拓展尤拉定理的題吧。線段樹只是一個工具,最主要還是暴力修

2017四川省D《Dynamic Graph》

void 一個 log 白色 () eset using 範圍 題意 題意:給出一個n個點m條邊的有向無環圖(DAG),初始的時候所有的點都為白色。然後有Q次操作,每次操作要把一個點的顏色改變,白色<->黑色,對於每次操作,輸出滿足下列點對<u,v>

2017 ICPC區域(西安站)--- J LOL(DP)

nds 我們 要求 tle 思路 strings padding back 全排列 題目鏈接 problem description 5 friends play LOL together . Every one should BAN one characte

hdu6223 Infinite Fraction Path 2017沈陽區域G bfs加剪枝(好

getc 細節 \n ret ast scrip mat tom ide 題目傳送門 題目大意:給出n座城市,每個城市都有一個0到9的val,城市的編號是從0到n-1,從i位置出發,只能走到(i*i+1)%n這個位置,從任意起點開始,每走一步都會得到一個數字,走n-1步,會

ZOJ-4061 Magic Multiplication 2018年青島區域現場D(思維 + 暴力構造)

題目連結:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4061 題目大意:題目定義一個運算子對於數A和數B的運演算法則為 , 表示數A的第 i 位數,表示數B的第 j 位數,現在令字串,這裡的加法為字串連

ZOJ 3822 Domination 概率DP 2014年ACM_ICPC亞洲區域牡丹江現場D

題目大意: 就是現在有一個N*M的棋盤(1 <= N, M <= 50)每次在上面的空位置隨機選一個放一個棋子, 問使得所有行和所有列上都有棋子放置, 放置的棋子的數目期望 大致思路: 這題同步賽的時候沒感覺, 現在做發現就是一個水題, 當時還是太弱了...

ZOJ3822 ACM-ICPC 2014 亞洲區域牡丹江賽區現場DDomination 概率DP

Domination Time Limit: 8 Seconds      Memory Limit: 131072 KB      Special Judge Edward is the headmaster of Marjar University. He is ent

2017藍橋杯 省D(方格分割)

namespace 不同的 clu col lcm 多余 lib south lis 6x6的方格,沿著格子的邊線剪開成兩部分。要求這兩部分的形狀完全相同。 如圖:p1.png, p2.png, p3.png 就是可行的分割法。 試計算:包括這3種分法在內,一共

2017北大校 J pairs

預處理 常數 cout pair 北大 一道 ace http cto 題目鏈接 http://poj.openjudge.cn/practice/C17J/ orz 原來是一道無腦枚舉題目 只是很卡常數而已 復雜度算錯也是很醉orz 當時怎麽沒想著優化常數呢 題解

ACM-ICPC國際大學生程序設計競賽北京賽區(2017)網絡 i Minimum(線段樹)

hellip each pri ger out ont amp define void 描述 You are given a list of integers a0, a1, …, a2^k-1. You need to support two typ

2017 ACM區域現場 青島站 E (polya計數)

amp mod 循環 等價 img cout es2017 範圍 知乎 題目鏈接(暫無) 吐槽:這場比賽感覺對我感覺還算友好,雖然Q群知乎上命題方已經被噴死了,C語言上機題還有字符串題有大腿隊友輕松搞定,網絡流恰是我能想出來的,E本來也應該是在能力範圍內,不過因為之前沒寫過

2017 ACM區域(南寧站) 參賽流水賬

字符 暴力 through abc 參數 ble 搜索 推公式 stay day0:  早上四點起床趕飛機,還好沒有吵醒室友導致被打死。本來想在飛機上準備一下下周的小測,結果飛機一點都不平穩,只能全程和隊友吹逼聊天。下午在賓館裏和johann通關了一部合金彈頭,重溫了童年的

ACM 2017 北京區域 J-Pangu and Stones(區間dp)

HihoCoder - 1636 題目大意:       有n堆石子,每次可以選擇連續的一段合併,最少l個,最多r個,每次合併的花費為這些堆的石子的和,問最小花費是多少 題解:      訓

ACM 2018 南京區域 D - Country Meow (最小圓覆蓋/三分)

Gym 101981D 題目大意:        宇宙中有n個城市,需要建一個指揮部,使得指揮部與所有城市之間的距離儘可能小。問指揮部和最遠城市之間的最小歐幾里得距離是多少。 題解:    

ACM 2017 香港區域 F-Nearby Bicycles(模擬)

https://nanti.jisuanke.com/t/19930 (uva有問題,計蒜客可以交) 題目大意:       有m輛共享單車,n個人,分別給出他們的座標,每個人有一個距離上限。    

CCPC 2016 長春區域 D - Triangle(思維)

HDU - 5914 題目大意:        有n根棒,長度分別為1,2,3......n,要求從中刪掉一些棒,使得剩下的任意三根不能構成三角形,問最少刪除幾根 題解:     

2013南京區域 I Wall Painting (組合數學+位運算)

題意:給出n個數,求取k個數的異或和是多少,k從1到n,分別輸出n個答案; 思路:由於這個是異或和,那麼我們可以從這裡下手,我們把n個數全都看成二進位制的形式,那麼當前某一位會被計算進總和,當且僅當在所取的k個數中,這一位為1(二進位制形式下)的數量是奇數 那麼最後答案就是求一個

第一次周D

問題連結:https://vjudge.net/problem/HDU-2039 問題簡述:判斷三條邊能否構成三角形 問題P點:(1)三條邊是正數,不是正整數 (2)輸入後就要立即輸出 程式說明:三條邊用double定義,判斷是否符合任意兩邊之和大於第三邊的條件。 AC程式碼