2019徐州网络赛
忘了把账号密码记下来了,所以就记一下思路,只有几道补题的代码。
A. Who is better?
斐波那契博弈+扩展中国剩余定理
扩展中国剩余定理已经收入模板
B. so easy
用线段树大小不够。
这里提供标程的解法
q的值比较小,所以解题应该从q入手
用并查集模拟实现一个链表
用map模拟并查集,初始时每个点的父亲指向后面第一个可用的点。 当删除一个点i时,令x的父亲等于x+1的父亲 查询时直接输出 x 的父亲.
12345678910111213141516171819202122232425262728#include <bits/stdc++.h>using namespace std;const int maxn = 1e5 + 100;unordered_map<int, int> fa;int findfa(int x) { if (!fa.count(x)) return x; return fa[x] = findfa(fa[x]);}int main() { int n, ...
2019南京网络赛
B. super_log
递推式求解,转化为求aaa⋯n个aa^{a^a{\cdots}n个a}aaa⋯n个a,则欧拉降幂套公式。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748#include<bits/stdc++.h>using namespace std;#define ll long longint t;ll a, b, m;ll Mod(ll x, ll m) { return x < m ? x : (x % m + m);}ll q_pow(ll a, ll b, ll mod) { ll ans = 1; while (b) { if (b & 1)ans = Mod((ans*a),mod); a = Mod(a*a, mod); b >>= 1; } return ans;}ll euler_phi(ll n){ ll m ...
2019南昌网络赛
B. Fire-Fighting Hero
很垃圾的英文表述,题意是有一个无向图,图上有几个点是救火站,从这几个救火站同时出发,求出到图上所有点的最短路,也就是说,这几个救火站距离为0,bfs。还有一个救火hero,他从给定点出发,求所有点最短路。
求完图上的最短路后,对救火队找出最短路长度最长的点,对救火hero,同样如此,两个最大值比较。
bfs以消防队为源点求最短路时可以先把所有消防队都压入队列中,也可以给所有消防队加一个距离为0的源点,以新的源点为起点求最短路。
题中可能会多次给出同一条边,要取最小值作为该边长度。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667#include<bits/stdc++.h>using namespace std;typedef long long ll;typedef pair<int, int> pii;const ...
hexo
**
找博客主题时逛了一圈发现还是ghost的默认casper主题最好用,但ghost是动态部署,github只支持静态网页,而我又懒得搞ghost,所以只好找静态移植版的casper。
**
安装
先附上ghost链接。
其实github支持的jekyll和hexo都有casper的移植。
先是Jekyll版:Kasper
还有hexo版:capser
hexo版的 demo
安装方法参考 底噪
以下是安装过程中遇到的一些问题:
由于我使用了自己购买的域名,所以与github绑定时会自动添加一个CNAME文件,但在hexo每次hexo g -d时删除原有文件,CNAME就没了,又要重新设置,所以查了一下,发现放在source文件夹里的文件不会被删除,因此把CNAME文件剪切到source文件夹(主题内文件夹即theme内的source,而非hexo的文件夹)就解决问题了。
虽然source中有image文件夹,但如果使用文件夹中图片可能会出现无法显示到网页上的情况,所以最好还是上传到图床上,再用URL。附SM图床
直接用hexo new [filename] 默认在post ...
mathjax
hexo-casper中插入mathjax
casper美中不足的就是为了追求轻便,而放弃了mathjax。但由于我有时会用到数学公式,因此决定折腾一下。
首先在hexo-casper的github项目中,已经有人加入了mathjax,但并未被整合进主项目中,因此首先要做的就是clone下已经有mathjax的git。如果对其他没有需要的话,就只需要修改“add mathjax support”部分即可。地址
完整下完之后,由于markdown与mathjax语法存在冲突,所以还需要修改一些文件。参考地址 注意把themes/_config.yml中的“mathjax: false” 改为“mathjax: true”。
到这一步可以试一下,如果成功了就ok。。
如果还不行的话,可能是因为博客地址是https,而github项目中引用的js是http资源,因此会被block。解决方法是在需要使用mathjax的 .html中加入
1<meta http-equiv="Content-Security-Policy" content=&quo ...
【HAOI2011】Problem b
https://darkbzoj.tk/problem/2301
题意:对于给出的 nnn 个询问,每次求有多少个数对 (x,y)(x,y)(x,y),满足 a≤x≤b,c≤y≤da≤x≤b,c≤y≤da≤x≤b,c≤y≤d,且 gcd(x,y)=kgcd(x,y) = kgcd(x,y)=k。
容斥原理+莫比乌斯反演+整除分块
在 [a,b],[c,d][a,b],[c,d][a,b],[c,d] 上的答案可以由容斥变为 [1,b],[1,d]−[1,a)[1,d]−[1,b][1,c)+[1,a)[1,c)[1,b],[1,d]-[1,a)[1,d]-[1,b][1,c)+[1,a)[1,c)[1,b],[1,d]−[1,a)[1,d]−[1,b][1,c)+[1,a)[1,c)
则现在要求 ∑i=1n∑j=1m[gcd(i,j)=k]\sum_{i=1}^n\sum_{j=1}^m[gcd(i,j)=k]∑i=1n∑j=1m[gcd(i,j)=k]。
把 kkk 除掉,变为 ∑i=1⌊nk⌋∑j=1⌊mk⌋[gcd(i,j)=1]\sum_{i=1}^{\lfloor\fra ...
Guess
拓扑排序
题意:给定一个上三角矩阵代表一个数列,其中 aija_{ij}aij 代表数组元素和 sum[i⋯j]sum[i\cdots j]sum[i⋯j] 的正负,求出一个符合条件的数列。
这是一道构造题,因此只要确定一种可行解即可。
对于一段区间的元素和,自然想到可以理解为两个前缀和的差,而一旦将所有前缀和都求出来了,就可以构造出一组可行解了。
将每一个前缀和 sum[1⋯i]sum[1\cdots i]sum[1⋯i] 视为节点,矩阵中每一个元素视为边,若为正,则代表 sumj−sumi>0sum_j-sumi>0sumj−sumi>0 ,即 sumj>sumisum_j>sum_isumj>sumi ,这样一个偏序关系可以用拓扑序来构造出可行解,只要将所有大小关系都表现在边上,最终一定可以找到一个拓扑序列,满足矩阵的所有元素。
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include<bits/ ...
Grakn Forces 2020
http://codeforces.com/contest/1408
D. Searchlights
题意:二维平面上给定 n 个机器人,m 个监控,1≤n,m≤20001 \leq n, m \leq 20001≤n,m≤2000,每个监控可以覆盖 (1,1)(1,1)(1,1) 到 (ci,di)(c_i,d_i)(ci,di) 这个矩形范围。每次操作可以把所有机器人向上平移或向右平移,问最少操作次数使得所有机器人都不在监控范围内。
枚举
枚举向右平移多少次,计算需要向上平移的次数。
需要向上平移的次数等于所有机器人所在坐标的 y坐标 与所在 x坐标对应的y的上边界 的差值。
枚举每个机器人和每个监控,记录向右移动 i 距离时,需要向上移动的距离的最大值。
随着往右平移,需要向上平移的次数递减,即向右移动越多,向上移动越少(或相同)。
这是一个类似阶跃函数的形式,先处理出阶跃的点,再画出平台。
12345678910111213141516171819202122232425262728293031#include <bits/stdc++.h>using na ...
《权力的游戏》人物谱系图可视化
项目地址: https://github.com/woriazzc/GOT_SocialNetGraph
参考[1]: https://zhuanlan.zhihu.com/p/92412494
参考[2]: https://blog.csdn.net/weixin_44324814/article/details/108100159
启动项目
具体操作请见github项目地址。
在参考[1]中的项目里给出的 GOT.csv 并不是可以直接使用的格式,可以参考我的github中的 GOT.csv 修改格式,或者直接用我的github中的 GOT.csv。
这里介绍Windows下的配置方式。
配置neo4j
以Windows10为例
安装java环境:
https://www.oracle.com/java/technologies/javase-downloads.html
从上面的链接下载JDK,跟随导引一步一步安装完成。
如下图添加系统变量。注意这里的路径要换成你刚才安装JDK的路径。
在Path中添加新的路径。
安装完成后cmd中输入java -version检查是否安装完 ...
Good Bye 2019 - Subset with Zero Sum
http://codeforces.com/contest/1270/problem/G
题意:给出一个数组 aaa,每个数满足 i−n≤ai≤i−1i-n\leq a_i \leq i-1i−n≤ai≤i−1。找出一个和为 0 的子集.
首先,这些数的范围就摆明了要把它们转化到 1 到 n 的范围,但并不能直接加减偏移量来转化,那样就会始终还是一个子集求和的问题。
本题重点就在于把和为0与环的首尾相接联系起来。
先说结论,把 a[i]a[i]a[i] 变为 b[i]=i−a[i]b[i]=i-a[i]b[i]=i−a[i] ,则 b[i]b[i]b[i] 在 1 到 n 之间。并且有 a[i]=i−b[i]a[i]=i-b[i]a[i]=i−b[i] ,从 i 指向 b[i] ,找到一个环,取环上点即是答案。
证明很简单,把 a[i]a[i]a[i] 的和式转化为 i−b[i]i-b[i]i−b[i] 的和式,最终最后一个 b[i]b[i]b[i] 与开头的 iii 相等,中间也都抵消了,最终和为 0 .
因为 b[i]b[i]b[i] 是 1 到 n 之间的,所以每个点都有且仅有 ...