avatar
e*8
1
求指点。。。
我的代码,不知道为什么所有的case都可以过,就是第11个test case怎么都过不了
,不解啊不解 >_用的是union-find的数据结构,CLRS书上的算法
想法就是用hashtable记录每个connected component,然后有了每个component的大小
之后用totalpairs计算最后的结果
void makeset(int x, unordered_map> &table)
{
table[x] = {x,1};
}
int findset(int x, unordered_map> &table)
{
auto &temp = table[x];
if (temp.first != x)
temp.first = findset(temp.first, table);
return temp.first;
}
void setunion(int x, int y, unordered_map> &table)
{
int repx = findset(x, table), repy = findset(y, table);
if (repx == repy)
return;
auto &pa = table[repx], &pb = table[repy];
if (pa.second >= pb.second) {
pb.first = pa.first;
pa.second += pb.second;
} else {
pa.first = pb.first;
pb.second += pa.second;
}
}
unordered_map> connected(const vector> &
pairs)
{
unordered_map> table;
for (const auto &p: pairs) {
if (table.find(p.first) == table.cend())
makeset(p.first, table);
if (table.find(p.second) == table.cend())
makeset(p.second, table);
setunion(p.first, p.second, table);
}
return table;
}
long totalpairs(unordered_map> &table, long n)
{
long partialsum {}, total {};
for (int i = 0; i != n; ++i)
if (table.find(i) != table.cend()) {
const auto &temp = table[i];
if (temp.first == i) {
total += partialsum * temp.second;
partialsum += temp.second;
}
}
long singles = n - partialsum;
total += singles * partialsum + singles * (singles-1)/2;
return total;
}
avatar
c*o
2
Citi ThankYou Premier应该可以接收citi checking的TYP吧?收年费之前转成什么免
年费且含有TYP账户的信用卡比较合适呢?
avatar
t*t
3
武松墓在山东又被发现,墓内《武松日记》经专家确认为珍贵文物,其中有两段已翻译
成现代汉语:
一是《打虎悔恨篇》:昨天确实喝高了,竟然连老虎也敢打,真是仗著年轻耍二球。
二是《晚年反思篇》现在看,当年拒绝嫂子有些草率,不仅害了哥哥,自己丢了差使,
吃上官司,还被逼当了土匪,不值!
avatar
g*o
4
c++里面long 等于int吧
你要用long long,case 11的结果超出2e9了
avatar
y*i
5
yes
TY preferred

【在 c******o 的大作中提到】
: Citi ThankYou Premier应该可以接收citi checking的TYP吧?收年费之前转成什么免
: 年费且含有TYP账户的信用卡比较合适呢?

avatar
c*t
6
吊了。水浒传原来是史书
avatar
g*o
7
你的代码没完全理解,贴一个我的代码
#include
#include
#include
#include
#include
using namespace std;
vector vi[100006],res;
bool visited[100006];
int dfs(int x){
int ans=1;
visited[x]=1;
for(int i=0;iif(!visited[vi[x][i]])ans+=dfs(vi[x][i]);
}
return ans;
}
int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int N,I,sum=0;
cin>>N>>I;
for(int i=0;iint a,b;
cin>>a>>b;
vi[a].push_back(b);
vi[b].push_back(a);
}
for(int i=0;iif(!visited[i]){
int temp=dfs(i);
res.push_back(temp);
sum+=temp;
}
}
long long ans=0;
for(int i=0;ians+=res[i]*(sum-res[i]);
sum-=res[i];
}
cout<return 0;
}
avatar
c*o
8
多谢!

【在 y****i 的大作中提到】
: yes
: TY preferred

avatar
d*n
9
居然不是河南
河南落后了啊

【在 t**t 的大作中提到】
: 武松墓在山东又被发现,墓内《武松日记》经专家确认为珍贵文物,其中有两段已翻译
: 成现代汉语:
: 一是《打虎悔恨篇》:昨天确实喝高了,竟然连老虎也敢打,真是仗著年轻耍二球。
: 二是《晚年反思篇》现在看,当年拒绝嫂子有些草率,不仅害了哥哥,自己丢了差使,
: 吃上官司,还被逼当了土匪,不值!

avatar
e*8
10
多谢多谢~~果然是应该用long long

【在 g****o 的大作中提到】
: c++里面long 等于int吧
: 你要用long long,case 11的结果超出2e9了

avatar
j*2
11
ThankYou Preferred or Citi Forward.

【在 c******o 的大作中提到】
: Citi ThankYou Premier应该可以接收citi checking的TYP吧?收年费之前转成什么免
: 年费且含有TYP账户的信用卡比较合适呢?

avatar
o*1
12
门庆墓里肯定有更珍贵的文物

【在 t**t 的大作中提到】
: 武松墓在山东又被发现,墓内《武松日记》经专家确认为珍贵文物,其中有两段已翻译
: 成现代汉语:
: 一是《打虎悔恨篇》:昨天确实喝高了,竟然连老虎也敢打,真是仗著年轻耍二球。
: 二是《晚年反思篇》现在看,当年拒绝嫂子有些草率,不仅害了哥哥,自己丢了差使,
: 吃上官司,还被逼当了土匪,不值!

avatar
e*8
13
我的想法和你其实差不多。这个题关键就是要算每个connected component的大小:可
以用dfs算,也可以用union find找。我没用dfs,是因为union find的时间复杂度基本
上和dfs差不多,用union find+hash table比较节省空间(因为id的大小范围虽然是
0-10^5,但是输入有可能实际上没那么大)。union find的算法基本上就是找
CLRS的伪代码一行一行翻译成C++代码的-_-bbb,唯一的改动是CLRS里面把一个tree
附到另个tree上的时候用的是rank(一个tree height的估计),我用的是tree实际的
结点数目(算法在这里http://www.cs.uiuc.edu/~jeffe/teaching/algorithms/notes/16-unionfind.pdf

【在 g****o 的大作中提到】
: 你的代码没完全理解,贴一个我的代码
: #include
: #include
: #include
: #include
: #include
: using namespace std;
: vector vi[100006],res;
: bool visited[100006];
: int dfs(int x){

avatar
k*g
14
forward
perfered
premier
prestige
都是
可以申一个prestige
avatar
l*y
15
怎么不是杭州呢

【在 d*****n 的大作中提到】
: 居然不是河南
: 河南落后了啊

avatar
d*0
16
还有att more

【在 k******g 的大作中提到】
: forward
: perfered
: premier
: prestige
: 都是
: 可以申一个prestige

avatar
H*7
17
Actually the journal was written in English. Wusong obviously was a bi-
linguist.
avatar
o*1
18
是啊,杭州自古出名墓,从伍子胥到岳飞,再到江泽民。

【在 l******y 的大作中提到】
: 怎么不是杭州呢
avatar
z*3
19
江泽民什么时候墓的?

【在 o******1 的大作中提到】
: 是啊,杭州自古出名墓,从伍子胥到岳飞,再到江泽民。
avatar
H*g
20
我已经挖过了,里面有一台笔记本,一摞光盘。可惜盘是BD的,我只有DVD驱动器,读
不了。

【在 o******1 的大作中提到】
: 门庆墓里肯定有更珍贵的文物
avatar
l*y
21
哇靠,B记本可是珍本啊。

【在 H********g 的大作中提到】
: 我已经挖过了,里面有一台笔记本,一摞光盘。可惜盘是BD的,我只有DVD驱动器,读
: 不了。

avatar
H*g
22
可惜被我插220V电源烧坏了。后来我才想到当时没有交流电,门庆可能是用醋,铁皮和
铜钱做的电池。

【在 l******y 的大作中提到】
: 哇靠,B记本可是珍本啊。
avatar
a*9
23
1*******[email protected]
楼主好人

【在 o******1 的大作中提到】
: 门庆墓里肯定有更珍贵的文物
avatar
i*a
24
硬盘坏就没有问题, 快速送到香港修

【在 H********g 的大作中提到】
: 可惜被我插220V电源烧坏了。后来我才想到当时没有交流电,门庆可能是用醋,铁皮和
: 铜钱做的电池。

avatar
p*5
25
木乃伊14寸?

【在 o******1 的大作中提到】
: 门庆墓里肯定有更珍贵的文物
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。