ICode9

精准搜索请尝试: 精确搜索
  • splay2021-10-05 21:34:02

    奇怪的码长增加了 魔板 bool Type(int x) {return x==son[fa[x]][1];} void Update(int x) {size[x]=cnt[x]+size[son[x][0]]+size[son[x][1]];} void change(int x) { int y=fa[x],z=fa[y],k=Type(x); fa[x]=z; if(z) son[z][Type(y)]=x; else fa[x]=0; son[y][k]=son[x][k

  • CF103E Buying Sets2021-10-05 13:31:06

    https://www.luogu.com.cn/problem/CF103E 有一个大小为 \(n\) 的全集,每个元素是一个数,有 \(n\) 个子集。题目保证任意 \(k\) 个子集的并的大小 \(\ge k\)。 每个子集有一个可正可负的权值,你需要选出一些子集使得这些子集并的大小等于子集个数,且所选子集的权值和最小。可以为空集

  • 洛谷 P4926 [1007]倍杀测量者2021-10-03 20:31:14

    Description 洛谷传送门 Solution 一道差分约束好题。 题目要求我们输出最大的 \(T\) 使得至少有一个人女装。 那么容易想到二分答案。 所以这道题就很明显了,二分答案套差分约束,判断是否符合条件。 再来看如何建图。 对于 \(C_A > C_B * k\),我们从 \(B\) 向 \(A\) 连一条权值为

  • CLYZ-NOIP十连测 Day12021-10-03 12:31:28

    CLYZ-NOIP2021 国庆集训 B 组 Day1 题面:https://files.cnblogs.com/files/blogs/575626/day1B.zip 撰写博客 感觉很厉害,不明觉厉 我们令 \(dp_i\) 状态表示强制选择删除 \(i\) 位置并且干掉了 \(i\) 之前的和 \(i\) 所覆盖的线段的最小花费。 考虑状态转移,很显然就是 \[dp_i=\min_

  • 题解 CF1580D Subsequence2021-10-02 15:00:45

    稍作转化,题目就是要求: \[\sum_{i=1}^n\sum_{j=i+1}^na_i+a_j-2\times f(i,j) \]你也许会发现这和树上两点距离公式长得很像。于是把笛卡尔树建出来,每条边的权值是两个节点的权值差。于是就是选出 \(m\) 个点使两两的距离和最大。 考虑 \(O(n^2)\) 的树上 DP。定义 \(dp[i][j]\) 表

  • 题解 P7878 「SWTR-07」My rating is 1064(hard version)2021-10-02 15:00:07

    沿用 easy version 的思路:考虑如果到目前已经放了 \(2\) 个集合及以上,那么接下来只要轮换放置就可以避免「用同一个账号连续发出两个帖子」。所以在放了 \(2\) 个集合以后只要找到剩下前 \(k-2\) 大的数放即可。 于是一定是把前 \(x\) 个数放在第一个集合,第 \(x+1\) 放在第二个集

  • heoi2020树2021-10-01 20:02:44

    _ _01trie树合并 _ _ 在考场上一直想用数据结构维护,还花了好长时间算 $(a+1)^(b+1)$,现在看来当时好像在犯傻。。。。。。。。 异或有个神奇的工具是 01trie 树,此题就用此种方式解决。 插入操作,显然。 计算子树异或和,合并 01trie 树,记录 size,偶数为 0,奇数为 1,即可实现。 整体加 1,

  • 树形dp-没有上司的舞会2021-10-01 18:31:58

    题目 某大学有\(n\)个职员,编号为 \(1,2...n\). 他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司。 现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数\(r_i\),但是呢,如果某个职员的直接上司来参加舞会了,那么这个职员就无论如

  • 斯坦纳树2021-09-30 09:34:57

    斯坦纳树 定义: 最小斯坦纳树,就是花费最少的代价,联通给定的 \(k\) 个关键点。 感觉有点像迪杰斯特拉,但是又不太一样。 引入: 用一道例题引入: [模板] 最小斯坦纳树 参考:ix35题解 这个问题可以用 状压 \(DP\) 来解决,发现一个结论: 答案的子图一定是树 证明:如果答案存在环,则删去环上任意

  • YBTOJ&洛谷P4331:数字序列(左偏树)2021-09-28 19:29:53

    文章目录 题目描述数据范围 解析代码 题目描述 数据范围 n < = 1 e 6

  • 联通分量 [割点·割边]2021-09-27 19:34:19

    魔板 割点: void Tarjan(int u,int lst) { dfn[u]=low[u]=++Time; st[++tp]=u; for(int i=head[u];i;i=nxt[i]) { int v=to[i]; // int k=i,p=lst^1; if(i==(lst^1)) continue; // printf("!%d %d\n",u,v); if(!dfn[v]) { Tarjan(v,i); if(!mark[i]&a

  • 作业【状压DP】2021-09-27 17:02:12

    >Link luogu U137979 >Description 对于 100% 的数据, 1 ≤ b i ≤ n

  • 哈希表2021-09-25 20:33:12

    哈希表 引入: 如果我们要存放一堆数据,但是这些数据很大,直接用 \(vis\) 之类的不能忍一下。 而且要求尽量做到 \(O(1)\) 查询 那么就引入了哈希表。 定义: 散列表(又称哈希表,\(Hash Table\))是一种常用数据结构。它按照哈希特征分类存放,能够实现插入 \(O(1)\),查询均摊较低,几乎可做到 \(

  • 哈希表2021-09-24 08:37:06

    不断插入元素,询问某元素出现次数。 struct node{ int nxt, key, cnt; } t[N]; ll head[mod + 20], tot; void add(ll x) { for(int i = head[x % mod]; i; i = t[i].nxt) // Already Have { if(t[i].key == x) { ++t[i].cnt;

  • ToT - Top of Tree2021-09-22 23:01:54

    ToT - Top of Tree The latest code in the source code repository. Top of Tree, Top of the Tree, ToT, TOT:树的顶部,在源代码库中的最新代码 References https://llvm.org/ https://clang.llvm.org/

  • 题解 CF847A 【Union of Doubly Linked Lists】2021-09-21 21:04:47

    本文同步发布于 洛谷博客。 模拟题。 根据题目给的若干个双向链表的信息,我们可以枚举一个点,向左搜该链表的左端点,向右搜该链表的右端点,标记 \(vis\) 表示是否搜到过。这样我们就获得了每个链表的信息,然后按顺序把链表串联起来即可。 //By: Luogu@rui_er(122461) #include <bits/st

  • CF15212021-09-17 22:37:17

    CF1521 C:Nastia and a Hidden Permutation 一个比较容易想的策略是,先找到 \(1\),然后一个个求出剩下的。 如果询问 \(t=2,x=1\),回答就是 \(min(max(1,p_i),max(2,p_j))\)。如果回答 \(≤2\),可以断言 \(p_i,p_j\) 里面必然有 \(1\) 或 \(2\)。如果是 \(1\),那就有 \(p_i=1\);否则 \(i

  • sxy 的模板库2021-09-17 08:35:32

    sxy 的模板库 头 #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef unsigned long long ull; int read() { int x = 0, f = 1; char ch = getchar(); while (!isdigit(ch)) { if (ch == '-') f = -1; ch = getchar();

  • Codeforces Global Round 16 E-Buds Re-hanging 树上搜索/树上dp2021-09-16 22:05:49

    题目链接 题目大意 给你一棵树 根节点为1 规定一种节点为树芽: 1树芽不能是根节点 2树芽不能是叶子节点 3树芽的所有子节点都是叶子节点 树芽可以任意移动 即:树芽可以切断自己与父节点的联系 然后带着自己的子孙们 链接任意节点 可以移动无数次 问你如何移动会让最后树的所有叶子

  • D. Choosing Capital for Treeland(树形dp2021-09-14 17:04:10

    #include<bits/stdc++.h> using namespace std; const int mod=1000000007; const int N=4e5+10; struct node{ int to,nxt,val; }d[N];int head[N],tot=0; void add(int a,int b,int val){ d[++tot]={b,head[a],val};head[a]=tot; } int f[N],pos=0,MIN=1e9; v

  • 博弈论专题2021-09-14 12:34:00

    取石子1 #include<bits/stdc++.h> using namespace std; int n,m; int main(){ scanf("%d%d",&n,&m); if(n%(m+1)==0) cout<<2<<endl; else cout<<1<<endl; } 取石子2 #include<bits/stdc++.h> using namespace

  • NOIP模拟522021-09-14 06:32:49

    Point:暴力卡常非常重要,考虑理论复杂度与实际复杂度 T1:   显然考虑每一位的贡献即可,打表发现为n >> i,累计即可 代码如下: 1 #include <bits/stdc++.h> 2 using namespace std; 3 #define I int 4 #define LL long long 5 LL n,ans; 6 signed main () { 7 scanf ("%ll

  • 欧拉筛与素数判定2021-09-12 10:02:51

    欧拉筛模板 for(int i=2;i<=n;i++){ if(!vis[i]){ prime[++tot]=i; } for(int j=1;j<=tot && prime[j]*i<=n;j++){ vis[prime[j]*i]=1; if(i%prime[j]==0) break; } }

  • P3916 图的遍历2021-09-11 22:01:38

    反向建图。 时间复杂度呢?(不会) #include<cstdio> #include<iostream> #include<cstring> using namespace std; const int N=100005; int n,m,tot; int head[N],a[N]; struct node{ int to,next; }edge[N]; void add(int u,int v){ edge[tot].to=v; edge[tot].next=

  • 洛谷 P4183 - [USACO18JAN]Cow at Large P(点分治)2021-09-10 22:33:07

    洛谷题面传送门 点分治 hot tea。 首先考虑什么样的点能够对以 \(u\) 为根的答案产生 \(1\) 的贡献。我们考虑以 \(u\) 为根对整棵树进行一遍 DFS。那么对于一个点 \(v\),我们记其 \(mn_v\) 为其子树内距离其最近的叶子,\(dep_v\) 为 \(u\) 到 \(v\) 的距离,那么如果 \(mn_v\ge dep_v

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有