cf 389D Fox and Minimal path 【构造】
2017-09-05 17:31
295 查看
点击打开链接
题意:
给你一个整数n,让你构造一个地图,该地图包含n个顶点,要求你构造的地图顶点1->顶点2 的最短路条数为n。
题解:
已知n可以拆成二进制形式。
那么我们可以很容易先构造一个2^31条最短路的地图,接下来再构造一条长度为31的最短路。
接下来按n的二进制位数在个地图和路上连边即可,
#include<bits/stdc++.h>
using namespace std;
const int maxn=1005;
int ma[maxn][maxn];
int n;
int bit[50];
int fac(int x){
int cnt=0;
while(x){
bit[++cnt]=x%2;
x/=2;
}
return cnt;
}
void unicom(int u,int v){
ma[u][v]=ma[v][u]=1;
}
int main(){
scanf("%d",&n);
int len=fac(n);
int pos=3;
unicom(1,3);
unicom(1,4);
for(int i=1;i<=32;++i){
unicom(pos,pos+2);
unicom(pos,pos+3);
unicom(pos+1,pos+2);
unicom(pos+1,pos+3);
pos+=2;
}
int beg=pos+2;
pos+=2;
for(int i=1;i<=31;++i){
unicom(pos,pos+1);
pos++;
}
unicom(2,pos);
if(bit[1]) unicom(1,beg);
beg+=2;
int t=5;
for(int i=2;i<=len;++i){
if(bit[i]){
unicom(beg,t);
}
beg++;
t+=2;
}
puts("100");
for(int i=1;i<=100;++i){
for(int j=1;j<=100;++j){
if(ma[i][j])printf("%c",'Y');
else printf("%c",'N');
}puts("");
}
return 0;
}
题意:
给你一个整数n,让你构造一个地图,该地图包含n个顶点,要求你构造的地图顶点1->顶点2 的最短路条数为n。
题解:
已知n可以拆成二进制形式。
那么我们可以很容易先构造一个2^31条最短路的地图,接下来再构造一条长度为31的最短路。
接下来按n的二进制位数在个地图和路上连边即可,
#include<bits/stdc++.h>
using namespace std;
const int maxn=1005;
int ma[maxn][maxn];
int n;
int bit[50];
int fac(int x){
int cnt=0;
while(x){
bit[++cnt]=x%2;
x/=2;
}
return cnt;
}
void unicom(int u,int v){
ma[u][v]=ma[v][u]=1;
}
int main(){
scanf("%d",&n);
int len=fac(n);
int pos=3;
unicom(1,3);
unicom(1,4);
for(int i=1;i<=32;++i){
unicom(pos,pos+2);
unicom(pos,pos+3);
unicom(pos+1,pos+2);
unicom(pos+1,pos+3);
pos+=2;
}
int beg=pos+2;
pos+=2;
for(int i=1;i<=31;++i){
unicom(pos,pos+1);
pos++;
}
unicom(2,pos);
if(bit[1]) unicom(1,beg);
beg+=2;
int t=5;
for(int i=2;i<=len;++i){
if(bit[i]){
unicom(beg,t);
}
beg++;
t+=2;
}
puts("100");
for(int i=1;i<=100;++i){
for(int j=1;j<=100;++j){
if(ma[i][j])printf("%c",'Y');
else printf("%c",'N');
}puts("");
}
return 0;
}
相关文章推荐
- CF - 801B. Valued Keys - 构造+贪心
- CF - 484 - A. Bits(构造)
- CF 277.5 C.Given Length and Sum of Digits.. 构造
- CF 518A(Vitaly and Strings-构造)
- CF 330B Road Construction 构造路径 水题
- CF 862C Mahmoud and Ehab and the xor 构造
- CF Round231C (ZWJ 神构造)
- cf 709D Recover the String(构造题)
- 【cf 487C】【数论+构造】【根据前缀积取模构造序列】
- 【打CF,学算法——二星级】CodeForces 237B Young Table (构造)
- cf 570B B. Simple Game(构造)
- CF 312C. The Closest Pair 简单构造
- CF 892D Gluttony 构造
- 【打CF,学算法——三星级】CodeForces 550D Regular Bridge (构造)
- 【打CF,学算法——二星级】CodeForces 96B Lucky Numbers (构造/dfs)
- CF 715A Plus and a square root(数学构造)
- CF 482A(Diverse Permutation-相邻距离不同数为k的1~n全排列构造)
- cf 487C Prefix Product Sequence 构造+逆元
- cf 605B B. Lazy Student 构造 好题
- [cf][R#467C][构造题]Lock Puzzle