当前位置: 首页 > news >正文

打卡信奥刷题(3226)用C++实现信奥题 P8398 [CCC 2022 S4] Good Triplets

P8398 [CCC 2022 S4] Good Triplets

题目描述

Andrew\rm AndrewAndrew是十分好奇的学生,一天他在纸上画了一个圆,圆心在(0,0)(0,0)(0,0)。设周长为CCC,圆上每一个点的坐标为:

现在Andrew\rm AndrewAndrew在圆上画了nnn个点,第iii的点画在pip_ipi上,Andrew\rm AndrewAndrew可能在一个位置上画多个点。

现在一个好的三角形(a,b,c)(a,b,c)a,b,c)的定义为:

  • 1≤a<b<c≤n1\le a<b<c\le n1a<b<cn
  • 原点(0,0)(0,0)00严格位于顶点在pap_apaPbP_bPbpcp_cpc的三角形内。特别注意的是,原点不在三角形的周长上。

Andrew\rm AndrewAndrew问你有多少个好的三角形。

输入格式

第一行两个整数n,cn,cn,c,表示点的个数和圆的周长。

接下来一行,有nnn个整数,具体意义见题目描述。

输出格式

输出一个整数xxx,表示有xxx个好的三角形。

输入输出样例 #1

输入 #1

8 10 0 2 5 5 6 9 0 0

输出 #1

6

说明/提示

样例111解释:

Andrew\rm AndrewAndrew画了下面的图:

原点严格地位于顶点为p1p_1p1p2p_2p2p5p_5p5的三角形内,所以(1,2,5)(1,2,5)125是一个好的三角形。其他五个好三联体是(2,3,6),(2,4,6),(2,5,6),(2,5,7)(2,3,6),(2,4,6),(2,5,6),(2,5,7)236),(246),(256),(257(2,5,8)(2,5,8)258

对于20%20\%20%的数据:3≤n≤200,3≤c≤1063\le n\le 200,3\le c\le10^63n200,3c106

对于另外20%20\%20%的数据:3≤n≤106,3≤c≤60003\le n\le 10^6,3\le c\le60003n106,3c6000

对于40%40\%40%的数据:3≤n≤106,3≤c≤1063\le n\le 10^6,3\le c\le10^63n106,3c106且所有点的位置互不相同。

对于100%100\%100%的数据:3≤n≤106,3≤c≤1063\le n\le 10^6,3\le c\le10^63n106,3c106

C++实现

#include<iostream>#include<cstdio>#include<algorithm>usingnamespacestd;constintN=1e6+5;intn,c;inta[N];intcnt[N];intsum[N];longlongc2(intx){if(x<=1){return0;}return(longlong)x*(x-1)/2;}longlongc3(intx){if(x<=2){return0;}return(longlong)x*(x-1)*(x-2)/6;}intmain(){scanf("%d%d",&n,&c);for(inti=1;i<=n;i++){scanf("%d",&a[i]);cnt[a[i]]++;}intli=c/2;longlongans=0;intnow=0;for(inti=1;i<=li;i++){now+=cnt[i];}if(c%2==0){for(inti=0;i<c;i++){ans+=(longlong)cnt[i]*c2(now);ans+=(longlong)c2(cnt[i])*(now-cnt[(i+li)%c]);now-=cnt[(i+1)%c];now+=cnt[(i+li+1)%c];}}else{for(inti=0;i<c;i++){ans+=(longlong)cnt[i]*c2(now);ans+=(longlong)c2(cnt[i])*now;now-=cnt[(i+1)%c];now+=cnt[(i+li+1)%c];}}for(inti=0;i<c;i++){ans+=c3(cnt[i]);}longlongsum=c3(n);printf("%lld\n",sum-ans);return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

http://www.jsqmd.com/news/772971/

相关文章:

  • 3步实现视频PPT智能提取:extract-video-ppt让课件整理自动化
  • AI模型线上部署的A/B测试设计指南
  • 学之思开源考试系统:3步快速搭建专业在线考试平台的完整指南
  • 基于MCP协议的AI编码助手治理平台:跨模型记忆与自动化API检查
  • 苏州装饰公司哪家靠谱?2026年苏州本地高口碑装修公司推荐排名 - 速递信息
  • 08-MLOps与工程落地——模型注册表与模型服务
  • 如何通过3步解锁QQ群聊天记录的隐藏价值:ChatLog完整指南
  • 重构搜索范式:阿里云 Elasticsearch 开启“Agent 原生”时代,打造企业级 AI 记忆湖
  • 【新人专属】OpenClaw 2.6.6 Windows 11 一键部署完整教程(包含安装包)
  • PySide6实战:手把手教你用SQLite+QTableView打造个人数据管理工具(附源码)
  • 3分钟终极指南:qmcdump轻松解锁QQ音乐加密文件,实现音乐自由播放
  • 5分钟搞定AI文本生成:oobabooga一键安装完全指南
  • 终极指南:如何用markdownReader插件彻底改变你的Markdown阅读体验
  • 集团首都公报:继美国谷歌公司、苹果公司之后,世界第三家手机控制系统公司(即     武汉市放飞炬人控制系统有限公司)今天2026年5月6日9点36分获得官方批准。
  • 昆山老房翻新装修公司哪家靠谱?2026年口碑推荐与避坑指南 - 速递信息
  • AI Agent团队数字档案库:用工程化方法管理角色人格与长期记忆
  • 大语言模型结构化剪枝实战:基于LLM-Pruner的模型压缩与部署优化
  • Windows热键冲突终极指南:三步快速定位被占用的快捷键
  • XnConvert v1.111.0 图像格式转换调整
  • 如何在XSLT中将动态字段值(如姓名)安全注入HTML链接的URL参数
  • HTML怎么标注回收估价规则_HTML估价逻辑说明折叠区【指南】
  • Install-TidGi-Windows-x64安装步骤详解(附TidGi知识库搭建教程)
  • 2026年昆山装修公司全包价格性价比最高排行榜推荐与避坑指南 - 速递信息
  • 中国词元:构建自主AI生态的“云-端“协同战略
  • AI_Agent记忆系统设计与实现
  • JavaScript中Object-getOwnPropertySymbols获取方法
  • 别再死记硬背三环了!用Arduino+伺服电机做个机械臂,实战理解位置、速度、力矩模式
  • 血清替代物(人血小板裂解液)从工艺到细胞扩增性能替代FBS的可行性分析
  • 从硬件到解决方案:2026年全球人形机器人及智能机器狗二次开发服务商全景解析 - 速递信息
  • WarcraftHelper:魔兽争霸3终极兼容性修复指南,让经典游戏在现代电脑流畅运行