[CTSC2016]单调上升路径
题目:UOJ#201。
题目大意:给定n个点(n是偶数)的完全图,现在要你给每条边确定一个权值(互不相等),使得最长的单调上升路径最短。现在要你输出边的权值。
一条路径被称为单调上升的,如果沿着它走时的权值是单调递增的。
解题思路:题目中的证明告诉我们一个结论:单调上升路径至少为n-1。
所以我们要让这个单调上升路径长度为n-1。
一张n个点的完全图可以拆成n-1个互不相等的,每个点的度数都为1的子图。例如
而每个这样的子图都走一条边,则刚好n-1。
那么我们对这样的一张子图,使它的所有边权值连续即可。
那么如何构造这样的图呢?

把这张子图的边转一下,点不变,就是一张新的、边不重复的子图。
所以如此构造出子图即可。
我的编号方法如下图,每次旋转时,点$a$对应的另一个点$p_a$就改为$(p_a+1)\mod(n-1)+1$即可(与中间的点n有关的点有一些不同,见代码)。

C++ Code:
#include<cstdio>
#include<cstring>
int n,p[505],num=0;
int e[505][505];
int main(){
memset(e,0,sizeof e);
scanf("%d",&n);
for(int i=1;i<=n;++i)p[i]=n+1-i;
for(int i=1;i<=n;++i)if(!e[i][p[i]])e[i][p[i]]=e[p[i]][i]=++num;
for(int i=2;i<n;++i){
for(int j=1;j<n;++j){
if(i==j)p[j]=n;else
if(p[j]==n){
p[j]=(j+1)%(n-1)+1;
}else
p[j]=(p[j]+1)%(n-1)+1;
}
p[n]=i;
for(int j=1;j<=n;++j)if(!e[j][p[j]])e[j][p[j]]=e[p[j]][j]=++num;
}
for(int i=1;i<n;++i){
for(int j=i+1;j<n;++j)printf("%d ",e[i][j]);
printf("%d\n",e[i][n]);
}
return 0;
}
[CTSC2016]单调上升路径的更多相关文章
- 「CTSC2016」单调上升路径
「CTSC2016」单调上升路径 解题思路:根据提示可以得到答案的下界是 \(n - 1\) ,然后打表发现这个下界好像一定可以取到. 事实上考虑 \(n\) 个点完全图的边数是 \(\frac{n( ...
- UOJ#201. 【CTSC2016】单调上升路径 构造
原文链接https://www.cnblogs.com/zhouzhendong/p/UOJ201.html 题解 首先把题目里面的提示抄过来: 结论:假设带权无向图 G 有 100 个节点 1000 ...
- 【UOJ #201】【CTSC 2016】单调上升路径
http://uoj.ac/problem/201 别人都一眼秒的题对我而言怎么那么难qwq 这道题就是要构造一个n*n的邻接矩阵,满足矩阵\(A\)是一个拉丁方阵(也是数独?),\(a_{ij}=a ...
- [bzoj5025]单调上升路径
由于题目的证明可以发现$ans\ge 2m/n \ge n-1$,于是大胆猜测答案就是n-1若n是奇数,则将边分为n组,每组(n-1)/2,如果同组内边没有交点,那么只需要每一组边一个权值区间,从每一 ...
- Phpcms整理
一.先去官网下载一个pc(http://www.phpcms.cn/)进行安装 把下载的pc包放在服务器www目录下: 在地址栏访问localhost/project/install/install. ...
- 【CodeForces】914 H. Ember and Storm's Tree Game 动态规划+排列组合
[题目]H. Ember and Storm's Tree Game [题意]Zsnuoの博客 [算法]动态规划+排列组合 [题解]题目本身其实并不难,但是大量干扰因素让题目显得很神秘. 参考:Zsn ...
- 【POJ 3162】 Walking Race (树形DP-求树上最长路径问题,+单调队列)
Walking Race Description flymouse's sister wc is very capable at sports and her favorite event is ...
- 【BZOJ-2892&1171】强袭作战&大sz的游戏 权值线段树+单调队列+标记永久化+DP
2892: 强袭作战 Time Limit: 50 Sec Memory Limit: 512 MBSubmit: 45 Solved: 30[Submit][Status][Discuss] D ...
- poj3415 Common Substrings(后缀数组,单调栈 | 后缀自动机)
[题目链接] http://poj.org/problem?id=3415 [题意] A与B长度至少为k的公共子串个数. [思路] 基本思想是将AB各个后缀的lcp-k+1的值求和.首先将两个字符串拼 ...
随机推荐
- 如何在ZBrush 4R7中设置背面遮罩
ZBrush 4R7中的背面遮罩是如何来设置的?当我们在进行ZBrush雕刻创作的时候,经常会不经意的雕刻到背面的物体,那么,如何防止背面的物体不被雕刻到,这就需要设置下背景遮罩了. ZBrush 4 ...
- 第四章 Python之文件处理
文件操作 文件操作一般分为三步:打开文件得到文件句柄并赋值给一个变量--->通过句柄对文件进行操作-->关闭文件 f=open(r'C:\Users\hesha\PycharmProjec ...
- 路飞学城Python-Day20(元类的练习题)
练习一:在元类中控制把自定义类的数据属性都变成大写 class MyDef(type): def __new__(cls, class_name, class_attr, class_dic): up ...
- POJ 3122 Pie( 二分搜索 )
链接:传送门 题意:一个小朋友开生日派对邀请了 F 个朋友,排队上有 N 个 底面半径为 ri ,高度为 1 的派,这 F 个朋友非常不友好,非得"平分"这些派,每个人都不想拿到若 ...
- CodeForces-366C Dima and Salad 对01背包的理解 多个背包问题
题目链接:https://cn.vjudge.net/problem/CodeForces-366C 题意 给出n个水果和一个常数k,其中每个水果都有两种性质ai, bi(美味度,卡路里量). 要保证 ...
- 优化VR体验的7个建议
本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接: http://blog.csdn.net/cartzhang/article/details/50392607 作者:ca ...
- android startservice无法启动服务
1.android startservice无法启动服务 之前MainActivity.java中启动service源代码如下: private void startMyService() { //启 ...
- mysql-5.7.10-winx64 安装
安装ZIP中的EXE文件后,找到安装目录中的my-default.ini加入代码 1 2 3 4 5 6 #新设置的 [mysql] default-character-set=utf8 #新设置的 ...
- 一个通用Makefile的编写
作者:杨老师,华清远见嵌入式学院讲师. 我们在Linux环境下开发程序,少不了要自己编写Makefile,一个稍微大一些的工程下面都会包含很多.c的源文件.如果我们用gcc去一个一个编译每一个源文件的 ...
- java文件对照工具
今天想比較一下两个java文件.这两个文件是本地的. 就在网上下载了一个对照工具(破解版)认为挺好用的对于不同的地方有高亮显示. 就给大家分享一下.软件名叫:beyond compare 软件下载地址 ...