NC214490. 母牛烃
描述
CSHwang合成了一种有机物,名为母牛烃.
他由一些特殊的碳原子构成,因为某种原因,这些碳原子的化学键有无数个.
最终这种物质有n个碳原子,主链长度是m.
这种物质的碳原子要么是在主链上,要么是直接和主链上的某个碳原子相连.(但是不会和主链的头尾的碳原子相连)
他们之间有n-1个碳-碳双键,因为某种原因,这些碳-碳双键的能量非常特殊
CSHwang有一种装置,可以给每一个碳原子设定一个势力值,每个碳原子的势力值各不相同且范围在[1,n]。
碳-碳双键的能量取决于它所连接的两个碳原子的势力值的差.
CSHwang,因为某种原因,想要让所有碳-碳双键上的能量都不相同.
他应该如何设定碳原子的势力值.
碳原子从1开始编号到n,按编号顺序输出一种可行的势力值设定方案。
输入描述
第一行读入n,m表示一共n个碳原子,主链长度为m。(2<=n<=10000,m<n)
接下来一行读入m个整数,表示主链上碳原子的编号。
接下来m行,每行读入一个整数数k(0<=k<=n-m),表示有k个碳原子与当前主链上的碳原子直接相连以及这k个碳原子的编号。
输出描述
按编号顺序输出一种可行的势力值设定方案。
示例1
输入:
11 5 1 2 3 4 5 0 1 6 2 7 8 3 9 10 11 0
输出:
6 8 11 2 10 4 1 5 3 7 9
说明:
C(clang11) 解法, 执行用时: 5ms, 内存消耗: 380K, 提交时间: 2020-12-24 22:02:07
#include<stdio.h> int n,m,i,j,k,b[10010],a[10010]; int main() { scanf("%d%d",&n,&m); for(i=1;i<=m;i++){ scanf("%d",&b[i]); } int f[2]; f[0]=1;f[1]=n; int s=0; int ans; for(i=1;i<=m;i++){ a[b[i]]=f[s]; f[s]+=s?-1:1; scanf("%d",&k); if(k>0){ for(j=1;j<=k;j++){ scanf("%d",&ans); a[ans]=f[1-s]; f[1-s]+=s?1:-1; } } s=1-s; } for(i=1;i<n;i++){ printf("%d ",a[i]); }printf("%d\n",a[n]); return 0; }
C++(clang++11) 解法, 执行用时: 6ms, 内存消耗: 532K, 提交时间: 2020-12-06 23:24:10
#include<stdio.h> int n,m,i,j,k,b[10010],a[10010]; int main() { scanf("%d%d",&n,&m); for(i=1;i<=m;i++){ scanf("%d",&b[i]); } int f[2]; f[0]=1;f[1]=n; int s=0; int ans; for(i=1;i<=m;i++){ a[b[i]]=f[s]; f[s]+=s?-1:1; scanf("%d",&k); if(k>0){ for(j=1;j<=k;j++){ scanf("%d",&ans); a[ans]=f[1-s]; f[1-s]+=s?1:-1; } } s=1-s; } for(i=1;i<n;i++){ printf("%d ",a[i]); }printf("%d\n",a[n]); return 0; }