2016国庆总结

1、关于long long

c++输入输出可用流读入、输出(cin cout fin fout…)
scanf printf 时 要用%lld 不要用%I64d

2、数据范围

int : -(2^31-1)—-2^31-1
普通数据都可以使用 4 byte

long long -(2^63-1)—-2^63-1
一般的大数据使用 8 byte
注意不要数组开太多

更大的数据需要看题目是否有:
模的要求
超出范围(如2e9)则输出-1
最后才考虑 高精度(比较麻烦)

值得注意:即使用了大范围的数据类型,也要注意先减后加,先除后乘,以免在运算过程中超出

3、DAG的最小生成树(单维,多维)

普通方法:一共有n*n条边,再做Kruskal

但是如果n很大(如10000),则需要考虑减少无用的边

例子:有n个点坐标表示为(xi,yi,zi),每两个点之间都有一条边。两点距离dis[i,j] = min( |Xi-Xj|, |Yi-Yj|, |Zi-Zj|)。 求最小生成树

可以依次按照x维,y维,z维排序。增加每次排序中相邻的点之间的边,得到3n条边。如图:
因为分别连接相邻的点与直接连接分开的两点距离相同,而多连接了一个点,显然更优。

这样问题就解决了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值