摘要: 啊啊啊啊...全在纸上 字丑...算了算了 然后除法部分都用逆元就好了 还有逆元打表....学到了...牛逼 #include<map> #include<set> #include<ctime> #include<cmath> #include<stack> #include<queue> #in 阅读全文
posted @ 2018-08-17 17:14 Jiaaaaaaaqi 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 给出n和点,m条边,每条边有各自的标号,进入第一个标号需要消耗1的费用,此后转换标号需要1费用,在同一个标号上走不需要费用。问你从1到n最少需要多少费用。 最短路变形,把第一个点看成不存在的标号,然后从第一个点开始走,然后就是dijkstra了...当时没好好学dij的优化,当场的时候没加堆优化,乱 阅读全文
posted @ 2018-08-17 11:08 Jiaaaaaaaqi 阅读(246) 评论(0) 推荐(0) 编辑
摘要: 一群人在玩狼人杀,村民只会说真话,狼人会说真话和假话,要你求出那些人一定是村民或者那些人一定是狼人。想到了并查集不会用... 1,如果全部人都是狼人,一定可以所以一定是村民的人一定是0。 2, 加入是这样的话,A说B人,B说C是人,C说D是人,D说B是狼,明显B错误了,这时候假设A是人,那么BCD都 阅读全文
posted @ 2018-08-16 15:36 Jiaaaaaaaqi 阅读(200) 评论(0) 推荐(0) 编辑
摘要: 第一种用线段树,用两颗数维护区间最大值和区间的最小值,然后更新的时候如果我目前区间内的最大值比我得到的v小,那么我就把这个区间修改成v,如果我的最小值比v大,那么v就是没有用的,直接跳过,然后这样每次更新[l, r]内的最大最小值,查询的时候返回每个位置的最大值,就可以求出答案 线段树: #incl 阅读全文
posted @ 2018-08-16 15:34 Jiaaaaaaaqi 阅读(199) 评论(0) 推荐(0) 编辑
摘要: 找出(l,r)内的所有的指数最大的次方和 因为一个数可能可以看成a^b和c^d,所以我需要去重,从后往前枚举幂数,然后找可以整除的部分,把低次幂的数去掉。 然后开n方的部分,先用pow()函数找到最接近答案的数,但是会丢失精度,然后在这个数的附近寻找最接近答案的整数,用快速幂在乘n次幂回去,看最接近 阅读全文
posted @ 2018-08-14 10:58 Jiaaaaaaaqi 阅读(185) 评论(0) 推荐(0) 编辑
摘要: 给出一些点集,然后对于每一次要求给出的这些点集里的1,2,3,4,5,6....n/2的匹配数, dp[i][j] 表示到第i次操作里点集为j的匹配数,然后我每次加入一条边u-v,我的状态就是 dp[i][j] = dp[i-1][j] + dp[i-1][(不含u,v)的j],删除就是dp[i][ 阅读全文
posted @ 2018-08-03 19:56 Jiaaaaaaaqi 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 给一个由4*4个4*4的小格组成数独,这些数独是由一个块逆时针旋转得来的,所以要还原的话就模拟出顺时针的过程,先把里面的字母转化成数字,然后从第一个块开始枚举,每个dfs和之前枚举的已经满足条件的块,然后先枚举每一行的每块,这一行枚举完了去枚举下一行的状态,一直枚举到最后一块为止。 #include 阅读全文
posted @ 2018-08-03 16:20 Jiaaaaaaaqi 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 遇事不决先打表。 然后会发现(个屁)大的矩形是由一个2L*2L的矩形重复出现组成的然后我们就可以这个矩形分成四个点到(0, 0)点的矩形,这样问题就变成了求四个到顶点(0, 0)的矩形的面积,然后就先去求这里面完整的块数,然后去找边缘的有一边是完整的块,然后找最右下角的没有完整的块的面积,然后加起来 阅读全文
posted @ 2018-08-03 11:42 Jiaaaaaaaqi 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 这莫队太强啦 先推公式S(n,m)表示从C(n, 0) 到 C(n, m)的总和 1.S(n, m) = S(n, m-1) + C(n, m) 这个直接可以转移得到 2.S(n, m) = S(n, m+1) - C(n, m+1) 通过变形就可以得到。 3.S(n, m) = C(n, 0) + 阅读全文
posted @ 2018-08-02 16:03 Jiaaaaaaaqi 阅读(135) 评论(0) 推荐(0) 编辑
摘要: 题目说给出一些子集,如果A是B的子集,B是A的子集,那么A和B就是相等的,然后给出n个集合m个关系,m个关系表示u是v的子集,问你最小再添加多少个关系可以让这n个集合都是相等的 如果这n个几个都是互相相等的,那么就等于是这n个集合看成点以后,构成的图是一个强连通图,那么就是说在加多少边让这个图变成强 阅读全文
posted @ 2018-07-31 19:26 Jiaaaaaaaqi 阅读(153) 评论(0) 推荐(0) 编辑