从Google Chrome到Mozilla Firefox

期中考试终于结束了。/yun 前几天打开电脑看会洛谷知乎,发现macOS版的Chrome慢的出奇/fad 感 觉 有 事。 网上找了个测速的脚本扔进控制台跑,随便测了几个常用网站,卡得惊人! 网站 平均速度 百度 2000~3000ms 洛谷 1500~2000ms CF >10000ms 注:是指所有网页内容、图标、插件加载完毕所需时间。 而且,浏览网页时还出现卡顿、闪退情况。就连打开Chrome软件也很卡。 下定决心换Firefox(flag出现! 然而这个想法有点咕,今天刚刚下了个Firefox新版本(stable build,懒得开dev),「Firefox 82.0.3.dmg」。 整体速度快了不少,居然还能一键迁移Chrome数据,太良心了。软件打开速度、网页加载卡顿都比Chrome好很多。先凑活着用吧,等放假了再详细配置。

CSP-2020游记

了解清楚CSP2020游记到底是一种怎么样的存在,是解决一切问题的关键。 总结的来说, CSP2020游记的发生,到底需要如何做到,不CSP2020游记的发生,又会如何产生。 问题的关键究竟为何? 黑格尔在不经意间这样说过,只有永远躺在泥坑里的人,才不会再掉进坑里。这启发了我, 伏尔泰曾经说过,坚持意志伟大的事业需要始终不渝的精神。这句话语虽然很短,但令我浮想联翩。 一般来讲,我们都必须务必慎重的考虑考虑。 一般来说, 卡耐基在不经意间这样说过,一个不注意小事情的人,永远不会成就大事业。这句话语虽然很短,但令我浮想联翩。 CSP2020游记,发生了会如何,不发生又会如何。 现在,解决CSP2020游记的问题,是非常非常重要的。 所以, 这种事实对本人来说意义重大,相信对这个世界也是有一定意义的。 而这些并不是完全重要,更加重要的问题是, 所谓CSP2020游记,关键是CSP2020游记需要如何写。 本人也是经过了深思熟虑,在每个日日夜夜思考这个问题。 这种事实对本人来说意义重大,相信对这个世界也是有一定意义的。 一般来讲,我们都必须务必慎重的考虑考虑。 现在,解决CSP2020游记的问题,是非常非常重要的。 所以, 我们都知道,只要有意义,那么就必须慎重考虑。 那么, 了解清楚CSP2020游记到底是一种怎么样的存在,是解决一切问题的关键。 了解清楚CSP2020游记到底是一种怎么样的存在,是解决一切问题的关键。 本人也是经过了深思熟虑,在每个日日夜夜思考这个问题。 我们不得不面对一个非常尴尬的事实,那就是, 要想清楚,CSP2020游记,到底是一种怎么样的存在。 一般来说, 迈克尔·F·斯特利在不经意间这样说过,最具挑战性的挑战莫过于提升自我。这句话语虽然很短,但令我浮想联翩。 西班牙曾经说过,自知之明是最难得的知识。这启发了我, 阿卜·日·法拉兹在不经意间这样说过,学问是异常珍贵的东西,从任何源泉吸收都不可耻。这启发了我, 一般来讲,我们都必须务必慎重的考虑考虑。 我认为, CSP2020游记,到底应该如何实现。 问题的关键究竟为何? CSP2020游记因何而发生?现在,解决CSP2020游记的问题,是非常非常重要的。 所以, CSP2020游记因何而发生?问题的关键究竟为何? 了解清楚CSP2020游记到底是一种怎么样的存在,是解决一切问题的关键。 西班牙曾经说过,自己的鞋子,自己知道紧在哪里。我希望诸位也能好好地体会这句话。 生活中,若CSP2020游记出现了,我们就不得不考虑它出现了的事实。 本人也是经过了深思熟虑,在每个日日夜夜思考这个问题。 既然如何, 就我个人来说,CSP2020游记对我的意义,不能不说非常重大。 生活中,若CSP2020游记出现了,我们就不得不考虑它出现了的事实。 带着这些问题,我们来审视一下CSP2020游记。 问题的关键究竟为何? 在这种困难的抉择下,本人思来想去,寝食难安。 现在,解决CSP2020游记的问题,是非常非常重要的。 所以, Read more…

Solution CF1305G Kuroni and Antihype

有一张 n 个点的图,点有点权 a_i。两点 i,j 有边当且仅当 a_i \operatorname{bitans} a_j = 0。求一棵生成有向森林,所有边都指向叶子节点,边权为边的起点的点权。最大化有向森林边权和。 n , a_i \leq 2 \times 10^5n 考虑添加一个点权为 0 的点,将边权变为两端点点权和,并将 ans 减去 \sum a_i;这样得到的答案和原问题是一样的。这样就把原题意的生成有向森林转化为了生成树。 考虑采用 \texttt{Kruskal} 算法,从大到小枚举边权和 x,枚举 x 的子集 i,将点权为 i 与 i \operatorname{bitxor} x 的点缩点并计算贡献。 时间复杂度 O(3^{18} \alpha (n))。 代码: #include<bits/stdc++.h> template<class T> inline void read(T &x){ Read more…

Solution [WC2012]记忆中的水杉树

听取WA声一片 一开始所有的线段互不相交。 对于第二问来说,一定存在一种方法使得所有线段都朝着一个方向动。比如说我们要让所有线段从上往下走。那么上面的线段得向下面的线段连边。 这是一个 \texttt{DAG},考虑怎么建出来: 我们可以先用扫描线,还是因为线段互不相交,所以在扫描线移动的过程中,当前所有线段的相对位置是不变的,所以我们可以把每条线段用斜截式表示,然后用 set 维护他们的关系,每次插入一条线段就和前驱后继连边就可以了。 然后将坐标表示为 (x+1,y)。 再去考虑第一问,如果直接做的话,感觉需要用数据结构去维护 \texttt{DAG}。 接着我们考虑把操作序列反过来,这样的话删线段就变成了加线段。然后考虑什么情况下加入是不合法的。 比如我们从下往上加线段,设这个线段的横坐标区间为 (l,r),那么如果不合法,那么当且仅当这个区间内有在它下面的线段,用上我们刚刚求的拓扑序就是这个线段的拓扑序比较小。 判断的话就线段树维护区间最小值就好了。 因为有四个方向,所以我们还得横纵各做一次扫描线,线段树维护最大值和最小值。 代码: #include<bits/stdc++.h> #define N 200009 #define inf 2e9 using namespace std; typedef long long ll; queue<int>q; int du[N],tot,head[N],n,xx[N],yy[N],ans[N],_xx[N],_yy[N],tag1[N],tag2[N],c[N],ans2,ans1[N]; ll nowx,b[N<<1]; inline ll rd(){ ll x=0;char c=getchar();bool f=0; while(!isdigit(c)){if(c==’-‘)f=1;c=getchar();} while(isdigit(c)){x=(x<<1)+(x<<3)+(c^48);c=getchar();} return f?-x:x; } struct Read more…

洛谷 ⑨ 月月赛 I & Cnoi2020作战日志

人均AK,被吊打,没有人权 /kk 14:00 开赛。直接开 T1,“出现次数最多的非空子串的出现次数”,显然是个模拟。发现数据不大,果断暴力。 int main() { char ch; while ((ch = getchar()) != EOF) ++cnt[ch – ‘a’]; for (int i = 0; i < 26; ++i) ans = max(ans, cnt[i]); printf(“%d\n”, ans); return 0; } 感觉人均AC,开T2。 14:30 感觉平淡。看着题面感觉没什么思路,但是图片提示了搜索有关思想。感觉就是个搜索。 首先,如果中间有分流然后合起来的情况(环),走一边肯定更优。然后一个块就不会走多次了。这道题就是从一个点到其余三个点的最短路之和了。DFS裸题。 火速切。 inline void dfs(int x,int y,int t){ for(int i=1;i<=N;i++) Read more…

Solution P3401洛谷树

本题有一个弱化版本:GDKOI2016魔卡少女。 弱化版大致题意是:询问一个区间的子区间异或和。具体方法是拆开二进制的每一位,然后用线段树维护异或前缀和中 0,1 的个数,个数相乘后再加权即为答案。这样正确的原因是:对于一个有贡献的区间 [L,R],它一定会被 sum[L-1] 和 sum[R] 算到且仅一次。 然后这题只要把序列的问题搬到树链剖分上就行了,细节处理比较多(而且麻烦)。 代码: #include<bits/stdc++.h> #define mid ((L+R)>>1) #define lc (id<<1) #define rc (td<<1|1) typedef long long LL; using namespace std; const int maxk=10,maxn=3e4+5; struct edge { int obj,len; edge *Next; }e[maxn<<1]; struct data { int sum,num0,num1; }tree[maxk][maxn<<2]; edge *head[maxn]; int cur=-1; data Read more…

Solution [PA2009]Circular Game

令先手为 A,后手为 B,将相邻同色棋子合并成块,首先特判一些情况: 如果所有格子都是满的,那么显然????必败。 否则如果所有块都只有一个棋子,那么显然平局。 枚举????的第一步操作,如果可以使得B无法操作,那么显然????必胜。 无视所有大小为 1 的块,考虑剩下块里相邻两块,它们往外扩张比往内缩更优: 如果是形如 [A_A]___B__A__BA____B___[AA_A],两边同色,所以中间这些块(包括位置)可以删除,不影响游戏结果。 如果是形如 [A_A]___B__A__B_A__[BB_B],两边异色,那么相邻两块相互靠近更优,可以等效替代成 [A_A]___[BB][AA]__[BB][AA]__[BB_B]。 经过上述转化后,不再存在大小为 1 的块,当存在大小至少为 3 且内部存在空隙的自由块时,该块显然可以永远操作下去。假设不存在自由块,那么显然不会平局,游戏等价于每堆石子数为相邻两块间距的 \texttt{Nim} 游戏。 我们可以分以下情况讨论: A 可以通过至多一步操作得到自由块,且可以阻止 B 得到自由块,此时结果为 A 胜。 A,B 一开始都没有自由块,但都可以通过一步得到,A 先堵 B,B 再堵 A 后双方都没有自由块,但是此时 \texttt{Nim} 游戏 A 胜,则最终 A 胜。 A,B 都没法通过一步操作得到自由块,但是此时 \texttt{Nim} 游戏 A 胜,则最终 A 胜。 A Read more…

Solution CF67D Optical Experiment

题意简述: 有 n 条光线从矩形上边的 n 个洞射入矩形区域后从下边的 n 个洞射出。 已知从第 i 个洞射入的光线编号为 x_i,从第 i 个洞射出的光线编号为 y_i,要求从这 n 条光线中选出最多数量的光线,使得这些光线中任意两条都会在矩形区域内相交。 思路分析 根据题意,所选光线按照射入洞口编号经过sort排序后,其射出洞口编号必然是倒序的。因此对所有光线按射入洞口编号排序后对其射出洞口编号求最长上升(不下降)子序列(即为 LIS)即可。 细节处理及注意事项 最大值最好开到 0x3f3f3f3f,这是int类型最大值; 不要类型定义 typedef pair<int,int> pii;,这样编译器会报错,如果一定要定义建议用 define 而不是 typedef。 代码: #include<bits/stdc++.h> using namespace std; const int INF=0x3f3f3f3f,N=1e6+5; pair<int,int> p[N]; int a[N],dp[N],n; inline int read() { //快读,加快输入速度 int res=0,fh=1; char Read more…

Solution CF1305F Kuroni and the Punishment

题意简述: 给定长度为 n 的数组 a_i。每次你可以花费 1 的代价使 a_i 加上或者减去 1。要求最小化代价使得所有 a_i 都是质数 k 的倍数。n \leq 10^5,\ a_i \leq 10^{12}。 思路分析: 首先我们令 k = 2,得到 ans \leq n。也就是说,对于最优解的画面,至多有 \lfloor \frac n 2 \rfloor 个整数的变化幅度超过 1。 设定阀值 \omega,我们随机从 a_{1 \dots n} 中选择 k 个数 x_{1 \dots k},每次检查 x-1,x,x+1 的每个质因子是否为答案。复杂度为 O(n \sigma (a) Read more…

Solution CF1165F2 Microtransactions (hard version)

做本题之前建议先完成本题的简化版。 思路分析 这题 hard version 的主要思想与 easy version 相同。我们唯一应替换的是搜索的方式。用二分搜索替换线性搜索可以将时间复杂度从 O(n^2) 降低到 O(n \log n)。 很明显,我们可以在此处应用二分搜索,因为如果我们可以在 d 这天订购所有微交易,那么我们就可以在 d+1 天的所有订单中订购所有微交易(即使使用 d 天的答案,也可以在 d+1 的日子不做任何交易)。 代码: 本题: #include <bits/stdc++.h> using namespace std; int n, m; vector<int> k; vector<pair<int, int>> q(200001); bool can(int day) { vector<int> lst(n, -1); for (int i = 0; Read more…