08 2025 档案
摘要:下午马蹄杯被吊打了:( 这场DE难度感觉偏简单,好像G过的比F多 A 题意:给定2个小于等于12的整数x,y,求x+y是星期几 思路:不知道为啥取模WA了,直接加完之后判断一下减12就好了 void solve(){ int x,y;cin>>x>>y; x+=y; if(x>12){ cout<<
阅读全文
摘要:按位贪心+分讨+答案差分 题意:给定一个序列a以及一个k,构造一个x使(ai ^ x ) <=k的ai数量最多 思路:枚举每一个a,从高位到低位分类讨论 设该位为j , 那么有四种情况 aj=1,k=1 aj=1,k=0 aj=0,k=1 aj=0,k=0 前面的位a与x异或后与k相同,判断该位然后
阅读全文
摘要:以O(n^(1/4))的复杂度对一个数进行质因子分解 无敌了已经 ll ksc(int a,int b,int p){ ll z = (long double)a/p*b; ll res =(ull)a*b -(ull)(z*p); return (res+p)%p; } int ksm(int a
阅读全文
摘要:用来快速判断一个数是否为素数 期望时间复杂度O(logn),单次最坏时间复杂度O(lognxlogn) ll ksc(int a,int b,int p){ ll z = (long double)a/p*b; ll res =(ull)a*b -(ull)(z*p); return (res+p)
阅读全文
摘要:用于防止大数乘法溢出 //龟速乘O(logn) int gsc(int a,int b,int p){ int res=0; while(b){ if(b&1)res=(res%p+a%p)%p; a=(a<<1)%p; b>>=1; } return res; } //快速乘O(1) ll ksc
阅读全文
摘要:while((double)clock()/CLOCKS_PER_SEC<=0.965)continue;
阅读全文
摘要:优先队列+贪心 题意:现有n个电池,每个电池容量为ai。有m个充电桩,充电桩位置为pi,能为ti电池充满电。可以任意选择电池进行消耗,一电池能行一公里,问最远路程 思路: 显然,消耗电池的顺序是按充电桩位置顺序排列的。因为不能回头,每个充电桩都要尽可能利用到 不妨使用优先队列,按充电桩优先级排列每个
阅读全文
摘要:const int sz=26; struct mat{ ll m[sz+2][sz+2]; mat(){ memset(m,0,sizeof m); rep(i,1,sz)m[i][i]=1; } mat friend operator*(const mat&a,const mat&b){ mat
阅读全文
摘要:需设置初始温度T0,终止温度T1,降温系数delta 以P的概率接受新答案 #define delta 0.995 int ans=0; int cal(){...} void sa(){ int bt=3000,et=1e-15; while(bt>et){ ... int res=cal();
阅读全文
摘要:利用欧拉序序列来确定询问L,R 具体地,当查询u,v。 若lca(u,v)u||lca(u,v)v,[min(in[u],in[v]),max(in[u],in[v])] 否则 [out[u],in[v]] (满足out[u]<in[v]) 模板题[https://ac.nowcoder.com/a
阅读全文
摘要:分块大小改为n的2/3次方 int block = (int)pow(n,2.0/3.0); 当两个查询左端点在相同块时 如果左端点所在块是奇数块,则右端点按升序排序 否则,右端点按降序排序 if(idx[a.l]!=idx[b.l]){ return idx[a.l]<idx[b.l]; } if
阅读全文
摘要:引入头文件 #include<bits/extc++.h> using namespace __gnu_pbds; 内置平衡树 tree<pii,null_type,less<pii>,rb_tree_tag,tree_order_statistics_node_update>T; T.insert
阅读全文
摘要:笛卡尔树性质: 每个结点存储 (k,w) ,即一个序偶 对于k而言,是一个二叉搜索树(满足条件:根节点大于左节点,小于右节点) 对于w而言,是一个小根堆/大根堆(满足条件:根节点值小于/大于左,右节点值) 笛卡尔树不是平衡的 笛卡尔树的构建: 如何使一个数组->笛卡尔树? 单调栈O(n),处理出每一
阅读全文
摘要:题意: 给定一颗根为n的树,求子树不动点数量之和 思路: 不妨从1结点往上跳,每到一个新的根节点计算子树mex值的变化 因为mex单调递增,故可以通过暴力枚举+lca(u,v)=u来判断 void solve(){ int n;cin>>n; vector<vector<int>>e(n+1); r
阅读全文
摘要:1006 题意:给出若干参数,请求出x([L,R]范围内),使得表达式值最大 思路: 设题目所给的N/K为m 那么f(x)=x/(m/x)(向下取整)+x 如果x>m,那么f(x)=x,此时x越大越好,若R>m,那么一个答案为f(R)=R 如果x=m,那么f(x)=2x=2m 如果x<m,那么由于向
阅读全文
摘要:#include<bits/stdc++.h> using namespace std; ofstream infile,outfile; int times=100; void file(int tp){ char inname[10],outname[10]; infile.close(); o
阅读全文
摘要:B 题意:给定一些参数。和初始排列P={0,1,2,3...}.计算(n-1)次区间循环左移后的逆序对数量奇偶性 思路: 考虑对于一个排列而言,交换两个位置不同的数会对总体逆序对数量产生的影响 不妨设i<j,Pi<Pj 显然对于[0,i-1],[j,n-1]来说,交换Pi,Pj不会改变这两个区间对于
阅读全文
摘要:F 题意:给出一个数组a,每次可以选择一个数字v,使得所有ai:=|ai-v|。 求不超过n次操作下,sigma(1<=i<j<=n)|ai-aj|的最小值 思路: 对于两个奇偶性相同的数字,可以令v等于这两个数的平均值,并进行一次操作。发现这可以使两个数相等 因此你可以进行 n/2 次操作,使数组
阅读全文
摘要:template<class Info , class Tag> struct LazySegmentTree{ int n; vector<Info> info; vector<Tag> tag; LazySegmentTree(vector<int>init){ n = init.size();
阅读全文

浙公网安备 33010602011771号