51 nod 1804 小C的多边形(贪心)
来源:互联网 发布:软件开发运维驻场合同 编辑:程序博客网 时间:2024/05/18 19:37
1804 小C的多边形
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题
收藏
关注
小C偶然发现了一个奇妙的n个点的多边形。现在你需要给外圈的边标记上1~n-1,里圈的边也标记上1~n-1,使得对于一个外圈相邻点与中间点构成的三角形的边权之和都相等。
图中带三角形的三个点构成的三角形的边权都要相等。
你需要输出一种标记方案。(如果不存在就输出0)
Input
一共一行。第一行,有一个n(4<=n<=1,000,000)。
Output
第一行n-1个数表示顺时针方向外圈的的边权(ai)。第二行n-1个数表示顺时针方向里圈的的边权(bi)。并且a1和b1,b2构成第1个三角形,a2和b2,b3构成第2个三角形....,an-1和bn-1,b1构成第n-1个三角形。具体请参看样例!
Input示例
4
Output示例
1 2 32 3 1
直接贪心将最小的边匹配最大的边即可
O(N)给我T了。。。最后加了挂
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>#include <bits/stdc++.h>using namespace std;const int N = 1e6+10;typedef long long LL;LL a[N], b[N];inline void write(LL x){if(x>=10)write(x/10);putchar(x%10+'0');}int main(){ LL n; scanf("%lld", &n); LL x=((1+(n-1))*(n-1))/2*3; if(x%(n-1)!=0) cout<<0<<endl; else { x=x/(n-1); a[1]=1,a[2]=2; b[1]=x-1-(n-1),b[2]=n-1; for(LL i=2;i<=n-1;i++) { a[i]=i; b[i+1]=x-b[i]-i; } for(LL i=1;i<=n-2;i++) { write(a[i]); putchar(' '); } write(a[n-1]); puts(""); for(LL i=1;i<=n-2;i++) { write(b[i]); putchar(' '); } write(b[n-1]); puts(""); } return 0;}
阅读全文
0 0
- 51nod 1804 小C的多边形(贪心)
- 51 nod 1804 小C的多边形(贪心)
- 【51Nod】1804 小C的多边形
- 51Nod-1804-小C的多边形
- 51nod 1804 小C的多边形
- 51nod 1804 小C的多边形
- 51nod 1804 小C的多边形(规律)
- 51nod小c的多边形(找规律(构造))
- 小C的多边形
- 51Nod 1831 小C的游戏
- 51Nod-1831-小C的游戏
- 51nod 1831 小C的游戏
- 51nod-1831 小C的游戏
- 51nod 欢乐手速场C 开心的小Q
- [51Nod 1816] 小C的二分图 口胡
- 51nod 1091 线段的重叠(贪心)
- 51nod 1276:岛屿的数量 (贪心)
- 51nod 1091 线段的重叠 贪心
- 蓝桥杯 算法提高 连接乘积
- 【二】Java基础语法整理
- noip2000 方格取数 T4
- 深入了解spring mvc
- 对oracle数据库中表添加主键约束
- 51 nod 1804 小C的多边形(贪心)
- (转)menuconfig的执行流程,构建一个menuconfig系统的方法
- 每周LeetCode算法题(五):416. Partition Equal Subset Sum
- 【初探】 二叉搜索树
- 洛谷 P2014 选课
- 线性布局(LinearLayout)
- mysql中用户的创建及权限相关的说明
- golang map的遍历
- Android Studio Run 'app'安装APK到设备的过程