P3799 小 Y 拼木棒

題目背景

上道題中,小 Y 斬了一地的木棒,現在她想要將木棒拼起來。

題目描述

有?n?根木棒,現在從中選?4?根,想要組成一個正三角形,問有幾種選法?

答案對?109+7?取模。

輸入格式

第一行一個整數?n。

第二行往下?n?行,每行?1?個整數,第?i?個整數?ai??代表第?i?根木棒的長度。

輸出格式

一行一個整數代表答案。

輸入輸出樣例

輸入 #1復制

4 
1
1
2
2

輸出 #1復制

1

說明/提示

數據規模與約定
  • 對于?30%?的數據,保證?n≤5×103。
  • 對于?100%?的數據,保證?1≤n≤105,1≤ai?≤5×103

????????卡了好長時間終于AC了嗚嗚嗚。

題目分析

? ? ? ? 這道題不能使用dfs枚舉每一種情況會超時,別問我怎么知道的。

????????改變思路,我們側重于題目本身進行分析。要想利用4個木棒得到一個正三角形,首先得有兩個相同的木棒,并且這個長度的木棒會比另外兩個木棒的長度長。我們合理使用數組來存儲每個長度木棒的數量,將數組a開到滿足題目的最大值。

? ? ? ? 從大到小進行遍歷,如果它的值a[i]大于等于2,則在1到i/2的范圍內尋找滿足題目情況的值。

????????這里使用到的還是重要的組合公式。兩種物品分別有m和n個,每種里面都選擇一種,則有m * n種組合。

這里給出一種關于沒有順序的cnm的計算代碼(邊乘邊除法):

ll C(ll n, ll m) {ll ans = 1;for (ll i = 1; i <= m; i++) {ans = ans * (n - m + i) / i;}return ans;
}

對于m == 2的情況我們直接可以返回n * (n - 1) / 2;

代碼

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll mod = 1e9 + 7;
int n, a[5005] = {0};int zuhe(int m){if (m < 2) return 0;return (ll)m * (m - 1) / 2 % mod;;
}
int main()
{ll sum = 0;cin >> n;int tmp;for (int i = 0; i < n; i++){cin >> tmp;a[tmp]++;}for(int i = 5001; i > 1; i--){if(a[i] <= 1)continue;else{// >= 2int cm2 = zuhe(a[i]);for(int j = 1; j <= i / 2; j++){//找匹配的數子if(j != i - j){if(a[j] > 0 && a[i - j] > 0){//可以相加的兩個數都是大于0的sum += a[j] * a[i - j] * cm2 % mod;sum %= mod;}}else{// j == i - jif(a[j] > 1)sum += zuhe(a[j]) * cm2 % mod;sum %= mod;}}}sum %= mod;}cout << sum%mod;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76937.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76937.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76937.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Perl 條件語句

Perl 條件語句 引言 在編程中&#xff0c;條件語句是執行分支邏輯的關鍵部分。Perl 作為一種強大的腳本語言&#xff0c;提供了豐富的條件語句&#xff0c;使得開發者能夠根據不同的條件執行不同的代碼塊。本文將深入探討 Perl 中的條件語句&#xff0c;包括 if、unless、els…

流量特征分析-蟻劍流量分析

任務&#xff1a; 木馬的連接密碼是多少 這是分析蟻劍流量&#xff0c;可能是網站的&#xff0c;wireshark過濾http 追蹤流http得到 1就是連接密碼 flag{1}黑客執行的第一個命令是什么 取最后的執行命令。base64解密得 除了id不是蟻劍自帶的命令&#xff0c;其他的都是&…

問題1:Sinal 4在開啟PAC檢查的設備崩潰

? 問題信息 硬件不支持PAC(Pointer Authentication),此類錯誤就是signal 11的錯誤,崩潰信息如下: Build fingerprint: google/sdk_gphone64_arm64/emu64a:16/BP22.250221.010/13193326:userdebug/dev-keys Revision: 0 ABI: arm64 Timestamp: 2025-04-06 11:33:13.923…

FreeRTOS移植筆記:讓操作系統在你的硬件上跑起來

一、為什么需要移植&#xff1f; FreeRTOS就像一套"操作系統積木"&#xff0c;但不同硬件平臺&#xff08;如STM32、ESP32、AVR等&#xff09;的CPU架構和外設差異大&#xff0c;需要針對目標硬件做適配配置。移植工作就是讓FreeRTOS能正確管理你的硬件資源。 二、…

【C++11(下)】—— 我與C++的不解之緣(三十二)

前言 隨著 C11 的引入&#xff0c;現代 C 語言在語法層面上變得更加靈活、簡潔。其中最受歡迎的新特性之一就是 lambda 表達式&#xff08;Lambda Expression&#xff09;&#xff0c;它讓我們可以在函數內部直接定義匿名函數。配合 std::function 包裝器 使用&#xff0c;可以…

JavaScript中的Proxy詳解

1. 什么是Proxy&#xff1f; Proxy是ES6引入的一個強大特性&#xff0c;它允許你創建一個對象的代理&#xff0c;從而可以攔截和自定義該對象的基本操作。Proxy提供了一種機制&#xff0c;可以在對象的基本操作&#xff0c;如屬性查找、賦值、枚舉、函數調用等之前或之后執行自…

【git】VScode修改撤回文件總是出現.lh文件,在 ?所有 Git 項目 中全局忽略特定文件

VScode里面powershell被迫關閉 場景解決辦法 場景 系統&#xff1a;Windows IDE&#xff1a;Visual Studio Code 一旦修改代碼&#xff0c;就算撤回也會顯示 解決辦法 第一步&#xff1a;“C:\Users\用戶名字.gitignore_global”&#xff1a;在該路徑下新建.gitignore_glo…

為什么 LoRA 梯度是建立在全量參數 W 的梯度之上

&#x1f9e0; 首先搞清楚 LoRA 是怎么做微調的 我們原來要訓練的參數矩陣是 W W W&#xff0c;但 LoRA 說&#xff1a; 別動 W&#xff0c;我在它旁邊加一個低秩矩陣 Δ W U V \Delta W UV ΔWUV&#xff0c;只訓練這個部分&#xff01; 也就是說&#xff0c;LoRA 用一個…

Nginx負載均衡時如何為指定ip配置固定服務器

大家在用Nginx做負載均衡時&#xff0c;一般是采用默認的weight權重指定或默認的平均分配實現后端服務器的路由&#xff0c;還有一種做法是通過ip_hash來自動計算進行后端服務器的路由&#xff0c;但最近遇到一個問題&#xff0c;就是希望大部分用戶采用ip_hash自動分配后端服務…

Llama 4 家族:原生多模態 AI 創新的新時代開啟

0 要點總結 Meta發布 Llama 4 系列的首批模型&#xff0c;幫用戶打造更個性化多模態體驗Llama 4 Scout 是有 170 億激活參數、16 個專家模塊的模型&#xff0c;同類中全球最強多模態模型&#xff0c;性能超越以往所有 Llama 系列模型&#xff0c;能在一張 NVIDIA H100 GPU 上運…

【硬件開發技巧】如何通過元器件絲印反查型號

目錄 一、在線數據庫查詢 二、官方資料匹配 三、專業軟件輔助 四、實物比對與場景推斷 五、社區與人工支持 注意事項 一、在線數據庫查詢 專業元器件平臺 Digi-Key、Mouser、ICMaster等平臺支持直接輸入絲印代碼檢索&#xff0c;可獲取芯片型號、技術文檔及替代型號。例如…

【算法/c++】利用中序遍歷和后序遍歷建二叉樹

目錄 題目&#xff1a;樹的遍歷前言題目來源樹的數組存儲基本思想存儲規則示例 建樹算法關鍵思路代碼總代碼 鏈表法 題目&#xff1a;樹的遍歷 前言 如果不是完全二叉樹&#xff0c;使用數組模擬樹&#xff0c;會很浪費空間。 題目來源 本題來自 PTA 天梯賽。 題目鏈接: 樹…

李臻20242817_安全文件傳輸系統項目報告_第6周

安全文件傳輸系統項目報告&#xff08;第 1 周&#xff09; 1. 代碼鏈接 Gitee 倉庫地址&#xff1a;https://gitee.com/li-zhen1215/homework/tree/master/Secure-file 代碼結構說明&#xff1a; project-root/├── src/ # 源代碼目錄│ ├── main.c # 主程序入口│ ├…

嵌入式rodata段

在嵌入式軟件開發中&#xff0c;將數據放入只讀數據段&#xff08;.rodata&#xff09;具有以下好處及典型應用示例&#xff1a; 好處 數據保護 .rodata段的內容在程序運行時不可修改&#xff0c;防止意外或惡意篡改&#xff0c;提升系統穩定性。 節省RAM資源 只讀數據可直接…

InfoSec Prep: OSCP靶場滲透

InfoSec Prep: OSCP InfoSec Prep: OSCP ~ VulnHubInfoSec Prep: OSCP, made by FalconSpy. Download & walkthrough links are available.https://www.vulnhub.com/entry/infosec-prep-oscp,508/ 1&#xff0c;將兩臺虛擬機網絡連接都改為NAT模式 2&#xff0c;攻擊機上做…

【JavaWeb-Spring boot】學習筆記

目錄 <<回到導覽Spring boot1. http協議1.1.請求協議1.2.響應協議 2.Tomcat2.1.請求2.1.1.apifox2.1.2.簡單參數2.1.3.實體參數2.1.4.數組集合參數2.1.5.日期參數2.1.6.(重點)JSON參數2.1.7.路徑參數 2.2.響應2.3.綜合練習 3.三層架構3.1.三層拆分3.2.分層解耦3.3.補充 &…

C++的多態-上

目錄 多態的概念 多態的定義及實現 1.虛函數 2. 多態的實現 2.1.多態構成條件 2.2.虛函數重寫的兩個例外 (1)協變(基類與派生類虛函數返回值類型不同) (2)析構函數的重寫(基類與派生類析構函數的名字不同) 2.3.多態的實現 2.4.多態在析構函數中的應用 2.5.多態構成條…

網絡安全的重要性與防護措施

隨著信息技術的飛速發展&#xff0c;互聯網已經成為我們日常生活、工作和學習的必需品。無論是通過社交媒體與朋友互動&#xff0c;還是在網上進行銀行交易&#xff0c;網絡已經滲透到我們生活的方方面面。然而&#xff0c;隨之而來的是各種網絡安全問題&#xff0c;包括數據泄…

CMake學習--Window下VSCode 中 CMake C++ 代碼調試操作方法

目錄 一、背景知識二、使用方法&#xff08;一&#xff09;安裝擴展&#xff08;二&#xff09;創建 CMake 項目&#xff08;三&#xff09;編寫代碼&#xff08;四&#xff09;配置 CMakeLists.txt&#xff08;五&#xff09;生成構建文件&#xff08;六&#xff09;開始調試 …

訪問數組元素(四十四)

1. 數組下標與類型 數組的索引從 0 開始。例如&#xff0c;一個包含 10 個元素的數組&#xff0c;其合法下標范圍為 0 到 9&#xff0c;而不是 1 到 10。為了表示下標&#xff0c;通常使用 size_t 類型&#xff0c;它是一種與機器相關的無符號整型&#xff0c;足夠大以存放內存…