Problem - 3805

  题意是给出边的长度的,求出边长相等的三角形,输出任意一种答案。边长是1~n的数,每个只能用一次。

  其实比较容易可以看出,无论我们怎么操作,只要保持边长总和都是相邻整数就是了。例如现在得到长度为n,n+1,n+2的三条边,可以对应加上m+2,m+0,m+1,从而变成了s+1,s+0,s+2。反正我们在处理123之前,保持着总和是这样的结构就行了。然后最后到了123的时候就能对应加上去,使之相等。

代码如下:

 #include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring> using namespace std; const int N = ;
int arr[][N];
typedef pair<int, int> PII; void maketri(int n) {
int sum[];
int t = n;
n = (n - ) * ;
sum[] = (n << ) - ;
sum[] = (n << ) - ;
sum[] = (n << ) - ;
for (int i = ; i < ; i++) arr[i][arr[i][] = ] = n--;
PII tmp[];
while (n > ) {
for (int i = ; i < ; i++) tmp[i] = PII(sum[i], i);
sort(tmp, tmp + );
for (int i = ; i >= ; i--) {
int id = tmp[(i + ) % ].second;
sum[id] += n;
arr[id][++arr[id][]] = n--;
}
}
for (int i = ; i < ; i++) tmp[i] = PII(sum[i], i);
sort(tmp, tmp + );
for (int i = ; i < ; i++) {
int id = tmp[i].second;
sum[id] += n;
arr[id][++arr[id][]] = n--;
}
// for (int i = 0; i < 3; i++) {
// for (int j = 1; j <= arr[i][0]; j++) cout << arr[i][j] << ' '; cout << endl;
// }
printf("%d\n", arr[][]);
for (int i = ; i < t; i++) {
printf("%d %d\n", arr[][i], arr[][i]);
}
for (int i = ; i < t; i++) printf("%d ", arr[][i]);
printf("%d\n", arr[][]);
} int main() {
int T, n;
scanf("%d", &T);
while (T-- && ~scanf("%d", &n)) maketri(n);
return ;
}

——written by Lyon

hdu 3805 Triangle Conjecture的更多相关文章

  1. HDU 5914 Triangle 数学找规律

    Triangle 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5914 Description Mr. Frog has n sticks, who ...

  2. hdu 4324 Triangle LOVE

    题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4324 Triangle LOVE Description Recently, scientists f ...

  3. HDU 5914 Triangle 【构造】 (2016中国大学生程序设计竞赛(长春))

    Triangle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total Su ...

  4. HDU 5914 Triangle(打表——斐波那契数的应用)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5914 Problem Description Mr. Frog has n sticks, whos ...

  5. HDU 4324 Triangle LOVE 拓扑排序

    Problem Description Recently, scientists find that there is love between any of two people. For exam ...

  6. HDU 4324 Triangle LOVE (拓扑排序)

    Triangle LOVE Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tot ...

  7. hdu 6512 Triangle

    Problem Description After Xiaoteng took a math class, he learned a lot of different shapes, but Xiao ...

  8. HDU 6300.Triangle Partition-三角形-水题 (2018 Multi-University Training Contest 1 1003)

    6300.Triangle Partition 这个题就是输出组成三角形的点的下标. 因为任意三点不共线,所以任意三点就可以组成三角形,直接排个序然后输出就可以了. 讲道理,没看懂官方题解说的啥... ...

  9. HDU——1397Goldbach's Conjecture(二分查找+素数打表)

    Goldbach's Conjecture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Ot ...

随机推荐

  1. oracle 监听配置文件路径

    app\Administrator\product\11.2.0\dbhome_1\NETWORK\ADMIN listener.ora tnsnames.ora 配置监听直接在 tnsnames.o ...

  2. 洛谷P1029 最大公约数和最小公倍数问题 [2017年6月计划 数论02]

    P1029 最大公约数和最小公倍数问题 题目描述 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1 ...

  3. tomcat标准化安装

    操作系统说明: 操作系统 版本 linux red hat release 6.4 关键软件包说明: 软件包 版本 目录 运行用户 jdk-7u79-linux-x64.gz 1.7 /usr/loc ...

  4. ubuntu安装verilog

    1.安装verilog sudo apt-get install verilog 2.安装gtkwave sudo apt-get install gtkwave 3.安装dinotrace(和gtk ...

  5. visual studio code 调试reactjs

    1.首先到visual studio code官网下载ide. 2.打开visual studio code,点击右侧菜单条的小图标 找到[Debugger for Chrome],并安装 3.打开c ...

  6. 深入剖析Redis RDN持久化机制

    rdb是redis保存内存数据到磁盘数据的其中一种方式(另一种是AOF).Rdb的主要原理就是在某个时间点把内存中的所有数据的快照保存一份到磁盘上.在条件达到时通过fork一个子进程把内存中的数据写到 ...

  7. [运维]Dell R710 raid配置 标签: raid运维 2017-04-15 19:35 581人阅读 评论(16)

    Dell R系列的一些服务器,raid的配置都大同小异,公司大部分的服务器,都是Dell R710型号的,这个型号的raid界面配置起来还是很简单的,下面来跟随小编体验一下raid如何配置吧.ps:图 ...

  8. 阿里云ecs环境配置

    在阿里云 CentOS 服务器(ECS)上搭建 nginx + mysql + php-fpm 环境 https://ninghao.net/blog/1368 阿里云ecs从购买到环境搭建和建站!! ...

  9. 修改mysql数据库密码的3中方法

    方法1: 用SET PASSWORD命令 mysql -u root mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass ...

  10. yii生成Model出错:yii-gii-generators-model-Generator.json No such file or dictory

    讲runtime 这个文件夹添加权限 chmod o+w runtime