传送门

题目大意

让你构造一个有向图,使得从1到n有L条不同路径且长度分别是0~L-1。

分析

我们不难想到每一对相邻点之间连一条权值为0的边,之后二进制分解,将每一对点之间连一个权值为2^i的边,但是我们会发现这样在一些情况下还会剩下一些值不能覆盖。如果将剩下的值一一连边肯定会炸。于是我们还是利用二进制的思想,从最后一个点开始向前枚举,如果在这个点加上一条权值为之前不能构成的值中的最小值的边构成的数不会越界则加上这一条边。描述比较粗略,详见代码。

代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<cctype>
#include<cmath>
#include<cstdlib>
#include<queue>
#include<ctime>
#include<vector>
#include<set>
#include<map>
#include<stack>
using namespace std;
const int LOG = ;
int ans[],ans2[],ans3[];
int main(){
int n,m=,l,i,j,k;
scanf("%d",&l);
for(i=;i<=LOG;i++)
if((<<i)>l){
n=i;
break;
}
for(i=;i<n;i++){
ans[++m]=i;
ans2[m]=i+;
ans3[m]=;
ans[++m]=i;
ans2[m]=i+;
ans3[m]=<<(i-);
}
int t=<<(n-);
l-=t;
for(i=n-;i>;i--)
if((<<(i-))<=l){
ans[++m]=i;
ans2[m]=n;
ans3[m]=t;
t+=<<(i-);
l-=<<(i-);
}
printf("%d %d\n",n,m);
for(i=;i<=m;i++)
printf("%d %d %d\n",ans[i],ans2[i],ans3[i]);
return ;
}

ARC102D All Your Paths are Different Lengths的更多相关文章

  1. AtCoder Regular Contest 102 D - All Your Paths are Different Lengths

    D - All Your Paths are Different Lengths 思路: 二进制构造 首先找到最大的t,使得2^t <= l 然后我们就能构造一种方法使得正好存在 0 到 2^t ...

  2. 【atcoder】All Your Paths are Different Lengths[arc102D](乱搞)

    题目传送门:https://arc102.contest.atcoder.jp/tasks/arc102_b 这道题有点毒瘤啊,罚时上天.. 显然若$ l=2^n $那么就可以直接二进制拆分,但是如果 ...

  3. AtCoder Regular Contest 102 (ARC102) D All Your Paths are Different Lengths 构造

    原文链接https://www.cnblogs.com/zhouzhendong/p/ARC102D.html 题目传送门 - ARC102D 题意 给定 $L$,请你构造一个节点个数为 $n$ ,边 ...

  4. [Arc102B]All Your Paths are Different Lengths_构造_二进制拆分

    All Your Paths are Different Lengths 题目链接:https://atcoder.jp/contests/arc102/tasks/arc102_b 题解: 构造题有 ...

  5. Optimal Milking 分类: 图论 POJ 最短路 查找 2015-08-10 10:38 3人阅读 评论(0) 收藏

    Optimal Milking Time Limit: 2000MS Memory Limit: 30000K Total Submissions: 13968 Accepted: 5044 Case ...

  6. POJ2112 Optimal Milking (网络流)(Dinic)

                                             Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K T ...

  7. poj 2112 Optimal Milking (二分图匹配的多重匹配)

    Description FJ has moved his K ( <= K <= ) milking machines <= C <= ) cows. A ..K; the c ...

  8. POJ 2112 Optimal Milking (二分+最短路径+网络流)

    POJ  2112 Optimal Milking (二分+最短路径+网络流) Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K To ...

  9. POJ2112_Optimal Milking(网洛流最大流Dinic+最短路Flody+二分)

    解题报告 农场有k个挤奶机和c头牛,每头牛到每一台挤奶机距离不一样,每台挤奶机每天最多挤m头牛的奶. 寻找一个方案,安排每头牛到某一挤奶机挤奶,使得c头牛须要走的全部路程中的最大路程的最小值. 要使每 ...

随机推荐

  1. codeforces D. Area of Two Circles' Intersection 计算几何

    D. Area of Two Circles' Intersection time limit per test 2 seconds memory limit per test 256 megabyt ...

  2. HDU3727 Jewel(主席树+树状数组(或二分))

    Problem Description Jimmy wants to make a special necklace for his girlfriend. He bought many beads ...

  3. mysql之 mysql 5.6不停机主从搭建(一主一从基于日志点复制)

    环境说明:版本 version 5.6.25-log 主库ip: 10.219.24.25从库ip:10.219.24.22os 版本: centos 6.7已安装热备软件:xtrabackup 防火 ...

  4. java代码排序问题

    总结: package com.ja; import java.util.Arrays; import java.util.Collections; public class mili { publi ...

  5. AngularJS:输入验证

    ylbtech-AngularJS:输入验证 1.返回顶部 1. AngularJS 输入验证 AngularJS 表单和控件可以验证输入的数据. 输入验证 在前面的几个章节中,你已经学到关于 Ang ...

  6. 1 ignite核心特性

    1 Ignite是什么? Apache Ignite是一个以内存为中心的分布式数据库.缓存和处理平台,支持事务.分析以及流式负载,可以在PB级数据上享有内存级的性能. 2 Ignite是不是内存数据库 ...

  7. 侯捷STL学习(五)--allocator和容器之间的实现关系

    第十一节 分配器 STL源码学习----内存管理 分配器的好坏影响到容器的性能 operator new()里面调用malloc D:\Program Files (x86)\Microsoft Vi ...

  8. 此上下文中不允许异步操作。启动异步操作的页必须将 Async 特性设置为 true,并且异步操作只能在 PreRenderComplete 事件之前的页上启动。

    <%@ Page Language="C#" AutoEventWireup="true" ...... Async="true" % ...

  9. libstdc++.so.6

    libstdc++.so.6遇到的问题: 1.提示version `GLIBCXX_3.4.14' not found /usr/lib64/libstdc++.so.: version `GLIBC ...

  10. vue-cli脚手架build目录中的webpack.dev.conf.js配置文件

    此文章用来解释vue-cli脚手架build目录中的webpack.dev.conf.js配置文件 此配置文件是vue开发环境的wepack相关配置文件 关于注释 当涉及到较复杂的解释我将通过标识的方 ...