題目:
思路:先定義乙個結構體用於儲存ip字首,然後按照題以模擬即可,有乙個問題就是n最大是1e5,vector的erase是o(n)的,所以合併操作複雜度是o(nn),可能會超時,我的**中第一步合併是
o(n)的,但是第二步是o(nn)的,可以改用list。
**:用vector的**(100分)
#include
using
namespace std;
const
int maxn =
1e5+5;
struct node
else
i--;if
(!flag)ip[cnt++
]= t;
else len = t;}}
if(!len)len = cnt *8;
cnt =7;
for(
int i =
0; i <
4; i++
) cnt +=8
;}}node()
bool
operator
<
(const node b)
const};
node a[maxn]
;vector ans;
bool vis[maxn]
;bool
judge
(node b , node c)
}return
true;}
bool
judge1
(node b , node c)
int len = b.len -1;
if(b.ip4[len]
!= c.ip4[len]
)return
true
;else
return
false;}
intmain()
sort
(a , a + n)
;for
(int i =
0; i < n ;
)else
break;}
}for
(int i =
0; i < n ; i++
)for
(int i =
0; i < ans.
size()
-1; i++
)else
break;}
}for
(int i =
0; i < ans.
size()
; i++
)return0;
}
用list的**(100分)
#include
using
namespace std;
const
int maxn =
1e5+5;
struct node
else
i--;if
(!flag)ip[cnt++
]= t;
else len = t;}}
if(!len)len = cnt *8;
cnt =7;
for(
int i =
0; i <
4; i++
) cnt +=8
;}}node()
bool
operator
<
(const node b)
const};
node a[maxn]
;list ans;
bool vis[maxn]
;bool
judge
(node b , node c)
}return
true;}
bool
judge1
(node b , node c)
int len = b.len -1;
if(b.ip4[len]
!= c.ip4[len]
)return
true
;else
return
false;}
intmain()
sort
(a , a + n)
;for
(int i =
0; i < n ;
)else
break;}
}for
(int i =
0; i < n ; i++
)for
(auto t = ans.
begin()
; t != ans.
end(
); t++
)else
break;}
}for
(auto t = ans.
begin()
; t != ans.
end(
); t++
)return0;
}
CCF認證 送貨
問題描述 為了增加公司收入,f公司新開設了物流業務。由於f公司在業界的良好口碑,物流業務一開通即受到了消費者的歡迎,物流業務馬上遍及了城市的每條街道。然而,f公司現在只安排了小明乙個人負責所有街道的服務。任務雖然繁重,但是小明有足夠的信心,他拿到了城市的地圖,準備研究最好的方案。城市中有n個交叉路口...
CCF認證 2017 12 遊戲
問題描述 有n個小朋友圍成一圈玩遊戲,小朋友從1至n編號,2號小朋友坐在1號小朋友的順時針方向,3號小朋友坐在2號小朋友的順時針方向,1號小朋友坐在n號小朋友的順時針方向。遊戲開始,從1號小朋友開始順時針報數,接下來每個小朋友的報數是上乙個小朋友報的數加1。若乙個小朋友報的數為k的倍數或其末位數 即...
ccf認證 201712 2 遊戲
題目 問題描述 有n個小朋友圍成一圈玩遊戲,小朋友從1至n編號,2號小朋友坐在1號小朋友的順時針方向,3號小朋友坐在2號小朋友的順時針方向,1號小朋友坐在n號小朋友的順時針方向。遊戲開始,從1號小朋友開始順時針報數,接下來每個小朋友的報數是上乙個小朋友報的數加1。若乙個小朋友報的數為k的倍數或其末位...