山东多校联合模拟赛 Day1第一题
2016-06-06 15:47
155 查看
咳咳,说到写题解,在以前是想都不敢想的事,不过既然现在要写了,那就不算什么大事了。第一次写,感觉有些小刺激, O(∩_∩)O哈哈~。
言归正传哈,直接上题。
Day1的第一题,是一道非常水的题,什么屁矩形的个数,还有就是题目给的样例,画的图简直不堪入目(#‵′)凸。
根据题目描述,它想让我们求围成矩形的个数,让我们仔细思考一下。矩形。。。对对对,是圆的内接矩形,这样的话每一条矩形的对角线都是过圆心的,而且根据题目描述,每一个点都是不重复的。这样的话就好玩了。只需要求出有多少对点是连在圆的一条直径上就好了。连在圆的直径上的点,如果沿着圆弧走的话,相距的距离就是圆周长的一半。分析到这,剩下的相信你们已经会了。当然,如果你仍然不会的话可以参考一下我的烂代码(QAQ)。。。
言归正传哈,直接上题。
Day1的第一题,是一道非常水的题,什么屁矩形的个数,还有就是题目给的样例,画的图简直不堪入目(#‵′)凸。
根据题目描述,它想让我们求围成矩形的个数,让我们仔细思考一下。矩形。。。对对对,是圆的内接矩形,这样的话每一条矩形的对角线都是过圆心的,而且根据题目描述,每一个点都是不重复的。这样的话就好玩了。只需要求出有多少对点是连在圆的一条直径上就好了。连在圆的直径上的点,如果沿着圆弧走的话,相距的距离就是圆周长的一半。分析到这,剩下的相信你们已经会了。当然,如果你仍然不会的话可以参考一下我的烂代码(QAQ)。。。
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> #include<algorithm> #include<queue> using namespace std; int N; int zb=0,sum=0,ans=0; int v[25]; int c[25]; int main() { //freopen("rect.in","r",stdin); //freopen("rect.out","w",stdout); memset(c,0,sizeof(c)); memset(v,0,sizeof(v)); scanf("%d",&N); for (int i=1;i<=N;i++){ scanf("%d",&v[i]); zb+=v[i]; c[i]=zb; sum+=v[i]; } sum=sum/2; for (int i=1;i<=N;i++) for (int j=i;j<=N;j++) if (c[i]+sum==c[j]) ans++; ans=(ans*(ans-1))/2; printf("%d",ans); return 0; }
相关文章推荐
- iOS开发中可能会用到的一些函数。。。
- java泛型(一)、泛型的基本介绍和使用
- Android开发之 选择相册图片或者拍照
- struct和typedef struct
- 应用程序脱机
- BlockingQueue 阻塞队列,很有用的一种
- windows的cmd下的find命令比bash(win10下的Ubuntu的bash)下的grep比较
- xcode导出ipa的几种方式-by
- windos下配置 sublime text+quick3.5 开发环境
- C语言二叉树求叶子数
- C#中制作启动窗体的方法和问题
- 深入理解Java内存模型——volatile
- 小议java中常用的定时任务
- mybatis关联查询,一对一,一对多
- ios 获取手机相关的信息
- 数据仓储之DLL层接口设计
- A*算法入门
- 面试题2:C++实现Singleton单例模式
- RF-连接数据库
- JavaScript学习笔记四:对象