哈密顿图的利用
来源:互联网 发布:怎么开淘宝充值店 编辑:程序博客网 时间:2024/04/29 14:44
题目链接
对于题意我是真的理解错了。难受,wa无数发
题意:其实是任意两个人都有鄙视关系,你鄙视我或者我鄙视你,就是n个点一个完全图,每条边带方向。
求最长链分别是1~n是的个数。
官方题解是说可以证明不论怎么画最长链都是n(都存在哈密顿路径),所以不是n的长度答案都是0只有n的时候
有答案,需要计算。这要怎么证明呢?
反正法,假设不能。
下面点用数字表示。
当只有一个点的时候,自己一个,有哈密顿路径。加上一个点,要么这个点指向起点,让自己变成起点,要不
自己被指向,作为终点,显然都成立。
1->2
2->1
当再加入一个点3时,3对起点,终点都有两种方向选择,如果指向起点,马上得到一条哈密顿路径,所以只能起点指
向新加入点,这时如果指向终点,那1->3->2就是一条哈密顿路径,如果终点指向它,3就是新的终点,1->2->3是新
的哈密顿路径。所以3个点怎么指都有一条哈密顿路径。
再加入一个新点,如上所说,不能指向起点,不能被终点指向,否则马上就有一条哈密顿路径。
那就是起点指向它,它指向终点。那起点的下一个点(下图点2),如果指向点4,有哈密顿路径,如果4指向2
还是有。在加一个点也是一样的。所以证明一直存在。
1->2->3
|
v ^
4 -> |
总条数可以这样想:每个点跟其他点都有连线,n*(n-1),但有重复,再除2,共有n*(n-1)/2条线,每条线有一个方向,
一条线可以两个方向任选一个,每条线互不影响,乘法原理,所以有2^(n*(n-1)/2)种答案。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>#include<stack>#include<queue>#include<vector>#include<set>#include<map>#include<string>using namespace std;typedef long long ll;const int INF=0x3f3f3f3f;int main(){ int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); for(int i=1;i<n;i++) printf("0\n"); printf("%d\n",1<<((n-1)*n/2)); } return 0;}
阅读全文
0 0
- 哈密顿图的利用
- 欧拉图,哈密顿图
- poj2438 哈密顿图
- 哈密顿图
- 哈密顿图
- HDU 2181 哈密顿绕行世界问题 (求一个图的所有哈密顿回路)
- 算法学习---关于哈密顿图的哈密顿通路求解问题
- 哈密顿环的实现
- hdu2181 哈密顿绕行世界问题 哈密顿图。。水题
- 欧拉图和哈密顿图
- poj2438构造哈密顿图
- poj2438(哈密顿图)
- 哈密顿图 poj 1776
- 求图的所有哈密顿环算法
- 求图的所有哈密顿环算法2
- 任意连通图的哈密顿回路计算流程
- hduTour Route【竞赛图的哈密顿回路】
- poj1776Task Sequences【竞赛图的哈密顿路径】
- lg P1553 数字反转(升级版)
- 技术的成长曲线
- 常量指针 const void * 指针常量 void* const 指向常量的指针常量 const void* const
- JVM性能优化, Part 1 ―― JVM简介
- Java基础编程1—成绩等级
- 哈密顿图的利用
- 朴素贝叶斯分类算法
- hive集群间数据迁移,export+import
- 系统集成项目管理工程学习笔记(一)项目立项管理
- synchronized详细介绍
- iOS 开发者的公司账号与个人账号之间的区别
- Android实战屏幕适配方案-基础知识
- java 数据类型相互转换
- 对于JAVA实现SFTP实例-SSH-2.0-OpenSSH_5.3等报错解决