08 2018 档案
摘要:排序之后按行枚举是显然的,那么我们枚举到i时,求小于yi的最大值就要用到线段树的区间求最值了,注意一点就是只有当xi不等于xi-1的时候才要更新它们。#includeusing namespace std;#define ll long long#defi...
阅读全文
摘要:解析:我们要找的点肯定在n-1个矩形的公共区域里,所以我们只要找出矩形的公共区域然后取任意一个顶点的值就好了,公共区域通过前缀和可以搞出来#includeusing namespace std;#define ll long long#define pb ...
阅读全文
摘要:解释下题意 问这种长度为 n 且本质不同(本质不同是指环上数字的相对位置不同,如 1234 和 2341,3412,4123 都是本质相同的,它们本质上是一个环)的环有多少种。所以打表时可以控制1就在1位置,这样就不会有重复的计数了,然后OEIS一下就能找...
阅读全文
摘要:仅记录模板const int N=2e7;const int maxn=N+10;int primes,prime[maxn],phi[maxn];bool vis[maxn];void init(){ int i,j; phi[1]=1; ...
阅读全文
摘要:解析: 其实规律比较好找 即对于每个 i, 求有多少个小于它的 a 满足 gcd(i, a) = 1 且 a 是奇数 当 i 是奇数时, 答案为 φ(i)/2 当 i 是偶数时, 答案为 φ(i). 注意 i = 1 时, 答案为 0. 记个前缀和就好了, ...
阅读全文
摘要:解析: 共有k维,每一维度仅有2个状态,所以一共有2^k个状态 枚举每个状态, n和m是独立存在的, 所以在此状态下对n和m分别取最大值即可#include#define ll long longusing namespace std;const int N...
阅读全文
摘要:打表找规律 在n%3==0时 分三份 在n%4==0时分成n/2 n/4 n/4 #includeusing namespace std;int T;long long n;int main(){ scanf("%d",&T); while (T...
阅读全文
摘要:则B出剪刀得分的期望是:aa*(c-b)/(a+b+c) 依次类推 所以B获胜的期望是:(aa*c-aa*b+bb*a-bb*c+cc*b-cc*a)/(a+b+c) 最后化简下分数 并且考虑为负数的情况#include#define LL long lon...
阅读全文
摘要:dp是不可能的,这辈子都写不出的。。。当放最大数字的时候只能占据一行一列 其余的数字 1. 只占据1行 2. 只占据1列 3. 填充在被占据过的行和列里面这里需要对取模优化 有两种方法吧 1. 减少取模次数 2. 结果值改成int,每次都存到int里面v...
阅读全文
摘要:#include #define ll long long#define rep(i, n) for (int i=0; i> T; while (T--) { cin >> m >> n; memset(g, 0, ...
阅读全文
摘要:若x1,x2,…..xn均大于等于0,则x1+x2+…+xm=k的方案数是C(k+m-1,m-1)种 好比有k个小球,放到m个盒子里,每个盒子不能为空,问有多少种放法。这里保证每个小球都是相同的,并且k>=m。分到m个盒子里,就等价于用m-1个板去隔开这k个...
阅读全文
摘要:设d1[ i ]为从a1开始到 ai 的最长递增子序列长度,设d2[ i ]为从ai开始到an的最长递增子序列长度,假设要把ap改为q,可以把序列分为1到p-1和p+1到n两段,可以用线段树找到1到p-1最大值下标cur,然后ans+=d1[cur],如果q...
阅读全文
摘要:题意:有n个学生,m个政党,每个学生有支持的政党,但是如果你给他一些钱,他就可以给你想让他投的党投票,现在想付出最少的钱使得1政党有绝对优势(票数严格大于其他党)。 分析:通过枚举政党 1 获取(1到n)票数所需花费的金币,对能获得票数最高的情况取最小花费即...
阅读全文
摘要:解析: 初始矩阵(B,A,1) 单位矩阵(1,1,0,2,0,0,K,0,1) 其中K可以分成好几段,分段具体看代码#include#define ll long long#define inf 0x3f3f3f3f#define pb push_back...
阅读全文
摘要:#include#define ll long long#define inf 0x3f3f3f3f#define pb push_back#define mod 1000000007#define rep(i,a,b) for(int i=a;i=a;i-...
阅读全文
摘要:Swordsman Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 188 Accep...
阅读全文
摘要:题意:给定一个N个点的零图,M次操作,添加或删除一条边,每一次操作以后,打印用1,2,…N/2条边构成的匹配数。 分析:因为N的范围很小,所以可以把点的枚举状态用二进制表示集合。用一维数组dp[S]表示二进制集合为S的点集的匹配数。 每次加边操作,从大到小遍...
阅读全文
摘要:Pinball Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 591 Accepte...
阅读全文
摘要:Werewolf Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1443 Accep...
阅读全文
摘要:D. The Wu time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output Childan is ma...
阅读全文
摘要:哇哇哇,这次榜是歪的。。 题意: 有一个长度为n的序列,初始值全为0,然后给定m个操作,每个操作指定区间[L,R]和值v,然后将该区间中所有小于v的值替换成v。其中每次操作的L、R和v由一个给定的“随机”函数生成。求经过m次操作以后序列中各个的异或值(看原题...
阅读全文
摘要:两端的弧长可以通过公式 求出。现在我们则需要求出两个圆心角即可。而我们发现,两个圆心角分别可以用余弦公式求出,其中大圆的圆心角的一半的余弦为,每个小圆的圆心角的余弦的一半为,继而我们即可将问题转化为一个解三角形的问题。#include #define max...
阅读全文
摘要:Problem Description Anton has a positive integer n, however, it quite looks like a mess, so he wants to make it beautiful after k...
阅读全文
摘要:C. Vasya And The Mushrooms time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard out...
阅读全文
摘要:#includeusing namespace std;#define ll long long#define pb push_back#define inf 200000099999999#define mod 998244353#define rep(...
阅读全文
摘要:D. Vasya And The Matrix time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output...
阅读全文
摘要:直接dfs,每旋转一次就要判断是否可行,这样感觉几乎纯暴力的办法竟然能过 另这个矩阵旋转代码写的挺精简的,值得借鉴一下#include#define ll long longusing namespace std;const int N=20;char ar...
阅读全文
摘要:思路:S[i][j]=S[i-1][j]+S[i-1][j-1](递推到每一项和求和都满足这个公式) S[i-1][j-1]=S[i-1][j]-C[i-1][j] 所以S[i][j]=2*S[i-1][j]-C[i-1][j] 同理可推出余下的公式S(l,...
阅读全文
摘要:inv代表的逆元,逆元可以倒推出其他数的逆元 Comp(a,b) 就是C(a,b) X 关于 mod 的逆元为 x^(mod - 2);const int maxn=1e5+5;const int mod=1e9+7;ll inv[maxn],fac[max...
阅读全文
摘要:找个规律会发现 M[i][j] = M[i-2*L][j] = M[i][j-2*L] 也就是这是一个2L*2L的矩阵循环所得到的 让求x0,y0到x1,y1的和 我们就可以处理出来以x0,y0为左上角的2L*2L的矩阵 然后同时进行求和 代码中是一些简单的...
阅读全文
摘要:题意 有一堵墙,往上面贴海报,每张海报有各自的范围,可以相互覆盖,求最后还能看见多少张海报? 解析 线段树,离散化 每张海报的粘贴就是一个区间操作,所以可以考虑用线段树来解决。但是题目中所给的墙的长度数据量太大,都存下来 肯定...
阅读全文
摘要:解析:当n是奇数时,只是每种情况比n-1多了一个1 当n是偶数时,包含一的情况是n-1多了一个1 不含1 的情况就是n/2的情况数,因为n拆分出所有的数字都是2的倍数,只需要将每种拆分结果中的数字都除以2就会与n/2的一种拆分相对应。#includeco...
阅读全文
摘要:解析:只需在预处理中将所有数字对1e9+7取模,然后将给定的数字取模,用map进行匹配即可#includeusing namespace std;typedef long long ll;typedef unsigned long long ull;type...
阅读全文
摘要:【题意】 给你一个长为n的数组a 让你对于每个长度为m的窗口。 算出其中的最大值以及从左往右遍历的时候这个最大值更新的次数。 【题解】 单调队列。 从后往前滑动窗口。 会发现我们维护以这个窗口里面的值为元素的单调队列的时候。 这个单调队列的长度就是最大值更新...
阅读全文

浙公网安备 33010602011771号