随笔分类 - 省选
摘要:[数论][SDOI2012]Longge的问题
阅读全文
摘要:题意:给出一个序列,每个元素有颜色。共m次操作,改变一种颜色或统计颜色的块数由于m,n都比较大,所以我们直接mn暴力是不行的,要考虑优化。那么mn慢在哪里呢?每次操作时,都要遍历一遍整个序列,其中访问到了很多没用的元素。那么就从这里入手,如果我们每次只遍历要修改的元素,就能快很多。所以我们用链表,把每种颜色的串起来,组成多个链表以供查询。每次修改时只要沿着链表走就行了,减少了无用遍历。每次修改(把a变成b)时,遍历a链表,记录这种颜色贡献了多少个块,然后再遍历一遍,进行修改,然后再遍历一遍,记录现在贡献了多少个块,然后相减,加入答案,最后合并两个链表。因为访问到的点不会改,所以块也不会改,所以
阅读全文
摘要:差分约束系统,题意非常明显,比较简单。1、题目中有冲突的数据需要特判。2、注意读题:每个小朋友都必须分到糖果,所以最后的答案要加n3、注意差分约束系统有两种形式:最长路和最短路(对应≥和≤);其中最长路解出来的结果是最小值,最短路解出来的结果是最大值。(都是接近常数);要根据题意选取适当的形式;View Code 1 #include <cstdio> 2 #include <cstdlib> 3 #include <queue> 4 #include <cstring> 5 #define S n+1 6 #define N 100000+10
阅读全文
摘要:题目大意:n*m的矩形,切成面积相等的n块,要求N 块的长边与短边的比值的最大值最小。n<=10.初看这道题没有思路,虽然n<=10但是又没说只能切成整数,所以就不知道怎么捉。。二分答案又没想到怎么验证。事实上,我没有注意到面积相等这个条件。由于只能切(不能拼),所以每次切完的面积必然是n的整数倍,这样就可以搜了。※注意double r;int n=5;r=1/n;printf("lf",r);//此时输出0.000000r=(double)1/(double)n;printf("%lf",r);//此时输出0.200000View Code
阅读全文

浙公网安备 33010602011771号