51nod 2497 数三角形
生活随笔
收集整理的這篇文章主要介紹了
51nod 2497 数三角形
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
小b有一個僅包含非負整數的數組a,她想知道有多少個三元組(i,j,k),滿足i<j<k且a[i],a[j],a[k]可能作為某個三角形的三條邊的邊長。
?
?收起輸入
第一行輸入一個正整數n,表示數組a中元素個數; 第二行n個非負整數,表示a中元素,以空格隔開; 其中0<n≤1000,a中任意元素a[i]滿足0≤a[i]≤1000。輸出
輸出一個數,表示滿足題意的三元組個數輸入樣例
4 2 2 3 4輸出樣例
3排序,然后枚舉兩個邊,找滿足條件的第三條邊的個數。
代碼: #include <iostream> #include <cstdlib> #include <cstdio> #include <cmath> #include <algorithm>using namespace std; int n; int s[1000]; int main() {scanf("%d",&n);for(int i = 0;i < n;i ++) {scanf("%d",&s[i]);}sort(s,s + n);int ans = 0;for(int i = 1;i < n - 1;i ++) {for(int j = 0;j < i;j ++) {int l = i,r = n - 1;while(l < r) {int mid = (l + r + 1) / 2;if(s[mid] >= s[i] + s[j]) r = mid - 1;else l = mid;}ans += l - i;}}printf("%d",ans);return 0; }
?
轉載于:https://www.cnblogs.com/8023spz/p/10891183.html
總結
以上是生活随笔為你收集整理的51nod 2497 数三角形的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java复习(四)类的重用
- 下一篇: Android NDK环境搭建