题目传送门

给你\(n\)根木棍,问有多少种方法,使得选出的三根木棍能组成三角形。

开始想要用搜索的,但是写着写着卡壳了(?),于是改用贪心,开始对拍,觉得很稳,只是最后两个数据可能有点卡。很第一题难度。

最开始的想法:排序。\(O(n^3)\)枚举一下。

进阶想法:发现有很多枚举是重复的,加入一个小剪枝,当开头两个数相加大于最大的数,直接加答案。实测速度没快多少。

最终想法:借鉴上一想法,那么其实可以借助\(lowerbound\)把复杂度将至\(O(n^2logn)\)。

#include<cstdio>
#include<algorithm> using namespace std;
typedef long long ll; int n,maxn;
ll ans;
int seq[20000]; int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&seq[i]);
sort(seq+1,seq+1+n);maxn=seq[n];
for(int i=1;i<=n-2;i++)
for(int j=i+1;j<=n-1;j++)
for(int k=j+1;k<=n;k++)
{
if(seq[i]+seq[j]<=seq[k]) break;
else if(seq[i]+seq[j]>maxn) {ans+=n-k+1;break;}
else
{
int id=lower_bound(seq+1,seq+1+n,seq[i]+seq[j])-seq;
ans+=id-k;
break;
}
}
printf("%lld\n",ans);
return 0;
}

因为数据不诚信,最后两个点开到了\(10000\),所以全机房\(80\)分。

\(std\)的做法:复杂度\(O(n^2+n)\)。这种方法的妙处在于对于每个起点,第二个棍和第三个棍分别共走\(O(n)\)。

#include<cstdio>
#include<algorithm> using namespace std;
typedef long long ll; int n;
ll ans;
int seq[10000]; int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%d",&seq[i]);
sort(seq+1,seq+1+n);
for(int i=1;i<=n;i++)
for(int j=i+1,k=i+2;j<=n;j++)
{
while(k<=n&&seq[i]+seq[j]>seq[k]) k++;
k--;
ans+=k-j;
}
printf("%lld\n",ans);
return 0;
}

茅台【思维/数学/剪枝】By cellur925的更多相关文章

  1. [Codeforces 1178D]Prime Graph (思维+数学)

    Codeforces 1178D (思维+数学) 题面 给出正整数n(不一定是质数),构造一个边数为质数的无向连通图(无自环重边),且图的每个节点的度数为质数 分析 我们先构造一个环,每个点的度数都是 ...

  2. 牛客网多校第9场 E Music Game 【思维+数学期望】

    题目:戳这里 题意:鼠标点击n下,第i次点击成功的概率为p[i],连续点击成功x次可以获得x^m分,求n次点击总分数的数学期望. 解题思路:数学期望的题很多都需要转化思维,求某一个单独状态对整体答案的 ...

  3. Codeforces Round #304 (Div. 2) D 思维/数学/质因子/打表/前缀和/记忆化

    D. Soldier and Number Game time limit per test 3 seconds memory limit per test 256 megabytes input s ...

  4. 1354 选数字 DP背包 + 数学剪枝

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1354&judgeId=187448 其实这题和在若干个数字中,选 ...

  5. 牛客网多校第5场 F take 【思维+数学期望】

    题目:戳这里 思路来源:视频讲解 题意:有n个箱子按1...n标号,每个箱子有大小为di的钻石概率为pi,我们初始有个大小为0的钻石,从1到n按顺序打开箱子,遇到比手中大的箱子就换,求交换次数的数学期 ...

  6. Codeforces Round #272 (Div. 2) D. Dreamoon and Sets (思维 数学 规律)

    题目链接 题意: 1-m中,四个数凑成一组,满足任意2个数的gcd=k,求一个最小的m使得凑成n组解.并输出 分析: 直接粘一下两个很有意思的分析.. 分析1: 那我们就弄成每组数字都互质,然后全体乘 ...

  7. 2017多校第一套&&hdu6038 思维 数学

    链接  http://acm.hdu.edu.cn/showproblem.php?pid=6038 题意: 给你一个a序列,代表0到n-1的排列:一个b序列代表0到m-1的排列.问你可以找出多少种函 ...

  8. [codeforces Mail.Ru Cup 2018 Round 3][B Divide Candies ][思维+数学]

    https://codeforces.com/contest/1056/problem/B 题意:输入n,m    求((a*a)+(b*b))%m==0的(a,b)种数(1<=a,b<= ...

  9. 51Nod 1305 Pairwise Sum and Divide | 思维 数学

    Output 输出fun(A)的计算结果. Input示例 3 1 4 1 Output示例 4 first try: #include "bits/stdc++.h" using ...

随机推荐

  1. ASP.NET MVC4中ViewBag、ViewData和TempData的使用和区别

    一.说明 本文章主要是讲解asp.net mvc中ViewBag.ViewData和TempData的使用和区别,ViewBag.ViewData和TempData常常用于将action方法中的数据传 ...

  2. 解决Pods Unable to find a specification for `xxxxx`问题

    错误信息为 Unable to find a specification for *RMQClient* (~> 1.x.x) depended upon by Podfile 刚开始以为这个已 ...

  3. service oriented architecture 构造分布式计算的应用程序的方法 面向服务的架构 分解技术

    zh.wikipedia.org/wiki/面向服务的架构 [程序功能做为服务] 面向服务的体系结构(英语:service-oriented architecture)是构造分布式計算的应用程序的方法 ...

  4. Message-oriented middleware

    en.wikipedia.org/wiki/Message-oriented_middleware Message-oriented middleware (MOM) is software or h ...

  5. Java实现MD5加密解密类

    http://blog.csdn.net/m_changgong/article/details/4361526

  6. 活动推荐 | 听说 PHP 是最好的语言 - 和 OneAPM 一起參与上海 PHPCon 技术盛宴吧

    2015年7月11日,第三届 PHP 大会就要和各位 PHPer 正式见面了.本年度,由 Think 技术社区主办,OneAPM 赞助的 PHPCon2015 是为全部热爱技术的 PHPer 提供的最 ...

  7. Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stoc

    今天在使用yum安装文件时,出现了以下问题: root@localhost opt]# yum update Loaded plugins: fastestmirror Could not retri ...

  8. tensorflow sigmoid_cross_entropy_with_logits 函数解释

    tf.nn.sigmoid_cross_entropy_with_logits(_sentinel=None,labels=None, logits=None, name=None) sigmoid_ ...

  9. 在Eclipse配置自动提示

    1.我们打开eclipse,选择菜单栏的window选项 2.点击Windows,选择下拉菜单里面的preferences选项,之后在打开的对话框的左侧找到Java选项 3.之后点击Java选项,选择 ...

  10. git bash的使用

    一.创建本地版本控制仓库 cd e:   进入e盘 cd gitspace 进入gitspace文件夹 git init 将E:\gitspace初始化为本地版本控制仓库 Initialized em ...