摘要: 数据最大就2^31次方,通过计算这些数开方五次就变成1了,然后把继续开方也不会变了,所以对于每个块,前5次更新暴力,之后就可以直接跳过,查询就直接就可以了 #include<map> #include<set> #include<ctime> #include<cmath> #include<sta 阅读全文
posted @ 2018-07-26 19:33 Jiaaaaaaaqi 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 另外开一个数组维护每一个块内的总和。 给区间加值是,残余的块一个一个点更新,整个的块一次性更新 查询的时候也是,残余的块一个一个点加,整个的块一次性加 #include<map> #include<set> #include<ctime> #include<cmath> #include<stack 阅读全文
posted @ 2018-07-26 17:45 Jiaaaaaaaqi 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 区间加值还是正常的操作,查找前驱的时候用lower_bound查找,然后范围所在位置的值 #include<map> #include<set> #include<ctime> #include<cmath> #include<stack> #include<queue> #include<stri 阅读全文
posted @ 2018-07-26 16:55 Jiaaaaaaaqi 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 让ci = ai / bi, 求sum(ci)的值,因为每次 ai 都是加一的,那么我可以用一颗线段树来维护每个 i 位置的 ai 距离达到 bi 还需要的数的最小值,更新是每次都减一,如果我某一个区间的最小值等于 0, 这就说明我这时候的ai已经满足了ai/bi==1的情况,那么对应的ci的位置就 阅读全文
posted @ 2018-07-26 12:22 Jiaaaaaaaqi 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 在个给出的矩阵从,从左上角走到右下角,然后再从右下角走到左上角,两次不能经过想同的点,每个点都有一个价值,问最大的价值是多少。 可以把原来的问题化简成从左上角走两条路到右下角,然后把价值加起来,然是这时候我出发点和目标点的价值加了两次,而原本只计算一次,所以最后要减掉,然后建图 1.超源到(1,1) 阅读全文
posted @ 2018-07-26 10:05 Jiaaaaaaaqi 阅读(178) 评论(0) 推荐(0) 编辑