摘要:
题意:1e5的数组 计算有多少对 ai * aj <= max(ai ai+1...aj-1 aj) 题解:在处理这种涉及到区间极值的题时 好像是个套路分治 从级值中间分成两个区间 从区间短的那边暴力枚举算贡献 然后再分治下去 可以估计复杂度 一个点最多枚举n/2次 两个点最多枚举n/4次 4个点最 阅读全文
摘要:
题意:给出1e5个数 查询l,r区间内第一个不能被表示的数 比如1,2,4可以用子集的和表示出[1,7] 所以第一个不能被表示的是8 题解:先考虑暴力的做法 把这个区间内的数字按从小到大排序后 从前往后扫 当前能表示出[1,x] 假设第i个数字y-1<=x 那么就可以表示[1,x+y] 如果y > 阅读全文
摘要:
对一个大质数进行质因数分解 需要引用miller-robin来判素数 一直写的gcd居然挂掉了... 以后用__gcd了 #include <bits/stdc++.h> using namespace std; typedef long long ll; #define ull unsigned 阅读全文
摘要:
import requests from bs4 import BeautifulSoup import bs4 def get_html_text(url): try: #kv = {'user-agent':'Mozilla/5.0'} r = requests.get(url, timeout 阅读全文
摘要:
题意:1e6个人每人有一只猫 每个人认识自己的猫 现给出一些关系表示一个人认识某只猫 要选出一些人和一些猫 使得每个人都不认识选出来的猫 且人+猫=n 题解:答案肯定是 一个人的集合和一个猫的集合 那么对于某个人 他要么在这个答案集合中 要么不在 我们考虑第一个人 先考虑这个人在答案集合中 如果这个 阅读全文
摘要:
题意:最多1000天 每天需要至少ai个工人施工 有10000种工人可以雇佣 每种工人可以工作si到ti天 雇佣一个的花费是ci 问怎样安排使得施工花费最少 思考:最直白的建模方式 就是每种工人可以和他能工作的天 连边 但是这样就引出了一个一对多的问题 一种工人对他所连的所有天 贡献是一样的 也就是 阅读全文
摘要:
题意:N*M的矩阵 每个点上都有一颗植物 僵尸只能从每一行的最右边向左进攻 每个植物有攻击范围 可以保护在攻击范围内的植物 同时每一颗植物也保护他左边的植物 摧毁每个植物能获得价值 如果这个植物被保护着就无法摧毁 求最大收益 题解:看了题解说 一个物品被若干物品保护着 要摧毁它必须先摧毁保护它的东西 阅读全文
摘要:
题意:给一个全排列 按次序删除数 询问每次删除前的逆序个数 题解:没有删除操作的话 就是普通的树状数组搞了 带删除的话考虑 类似于带修主席树的操作 树状数组套动态开点权值线段树 #include <bits/stdc++.h> using namespace std; typedef long lo 阅读全文
摘要:
题意:给定一棵树 任选两个点 求这两个点之间距离是3的倍数的概率 题解:点分治模板题 #include <bits/stdc++.h> using namespace std; const int MAXN = 2e4 + 5; int n, cnt, sum, ans, rt; struct no 阅读全文
摘要:
题意:长为1e5的全排列 有两个操作 把一个数删掉 询问1,r这个区间内 找到一个数大于等于x 且这个数不等于区间内的所有数 题解:建一颗权值线段树 线段树里存值为i的数在原数组中的坐标 维护坐标的最大值 考虑删除操作 就等于让他的坐标变为n+1 因为答案一定在1-n+1 对于查询操作 等价于找在[ 阅读全文