ICode9

精准搜索请尝试: 精确搜索
  • 【模板】nim 游戏2022-02-19 16:03:55

    link 一道经典的博弈论题目。 首先说结论,先手必胜当且仅当所有堆的石头数异或和不为0。原因是假如所有堆的石头异或和不为0时必然有一种方法可以使得异或和变成0,而当异或和等于0时不论怎么取都会使得异或和变成非0数。这样下去总会有一个时候使得异或和为0后所有石头堆都为0,那么这

  • [BJWC2011]元素2022-02-19 15:34:20

    link 也算是线性基的模板题。感觉凡是带异或的题都和线性基或者01trie脱不了干系(也有可能是我见过的题太少了)。 线性基有一个性质,即假如一个数可以被线性基所异或出来而惨遭剔除,只需剔除线性基构成中的一个数就可以把它放进去了。 于是就可以考虑贪心,把贡献从大到小排序,尝试加入贡

  • 线性基2022-02-19 15:01:46

    link 线性基模板题目。 何为线性基?线性基是一个集合的衍生物,它也是一个集合,只不过要小得多,只有原集合值域的log级别。它能做的事很多,原集合能异或出来的结果它都可以,由此就可以拿来做许多有趣的事情,以后遇到了再说。 构造方面代码很简洁。 #include<cstdio> //#define zczc #defin

  • 字符2022-02-18 19:33:49

    一、大小字母的转换1 #include<bits/stdc++.h> 2 using namespace std; 3 int main(){ 4 putchar(getchar()-'a'+'A'); 5 return 0; 6 }     还没有解决的问题 1.明明随机数中的排序去重函数化 2.通排 3.排序中重新理解,背诵 4.

  • #贪心#CF605A Sorting Railway Cars2022-02-17 20:03:43

    题目 一个长度为 \(n\) 的排列,每次可以将一个数移至开头或者结尾,问最少多少次使其升序排列 分析 让数字连续的情况尽量多才能让移出来的次数尽量少, 找到最长的数字连续段,若其长度为 \(len\),那么答案为 \(n-len\) 代码 #include <cstdio> #include <cctype> using namespace std;

  • P2107 小Z的AK计划 题解2022-02-16 19:31:07

    题目传送门 分析 考虑一个贪心,由于 \(x_i\) 呈线性排列,我们一定要保证去到的机房越多越好,所以将 \(x\) 排序,每次前往最近的机房,如果可以 AK 则 AK,累加答案。 代码实现 我相信我的解法一定有漏洞,欢迎各位 dalao 来 hack。 #include <bits/stdc++.h> #define int long long using na

  • j金字塔2022-02-14 23:04:42

    给定dfs序列 求有多少中可能的树形结构 保证不重复: 我们只枚举第一个子树的情况 #include <iostream> #include <cstdio> #include <cstring> #define ll long long const int N=305; const int mod=1e9; using namespace std; int read() { int x=0,f=0,c=getchar(); while(

  • 车的放置2022-02-10 20:00:39

    给定带有禁止位置n*n棋盘最多能放多少个车 1元素: 每行只能放一个车 这个车的行列号是唯一的 0元素: 一个车不能同时在两个行 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N=205; int read() { int x=0,f=0,c=getchar(); whil

  • 关押罪犯2022-02-10 17:04:46

    给定一个图 将点划分成两个集合 求集合内部边的最大值 二分图判定: 不存在奇环 #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N=20005; const int M=100010; int read() { int x=0,f=0,c=getchar(); while(c<'0'||c>'

  • 巧克力王国2022-02-10 17:04:38

    link 可以认为是K-D树模板题。当然这只是不带修改的K-D树,带修的以后写了再说。 作为一篇学习笔记,先介绍一下什么是K-D树。要明白一点,即K是一个变量,用来指代此数据结构处理和维护的空间维数,比如要维护平面上的点或者二元组集合那么就应该叫做2-D树(不然真的以为是kbd卡丹树吗,那样叫

  • 【主席树】【模板】2022-02-10 10:00:30

    【主席树】【模板】 刚学主席树,理解还不是很深,先粘一下板子吧。 模板1 Code #include<bits/stdc++.h> using namespace std; inline int read() { register int x=0,w=1; register char ch=getchar(); while((ch<'0'||ch>'9')&&ch!='-') ch=getchar(

  • 不同子串个数2022-02-08 22:34:25

    link 也算是一道模板题了。 上一道题并没有提到的是,后缀数组还有一个很重要的应用,即\(height\)数组,以下简称h。\(h_i\)的定义是排名为i的后缀与排名为i-1的后缀的最长公共前缀长度,而h数组我们可以\(O(N)\)求得。方法如下。 首先有一个结论,\(h[rank[i-1]]-1\le h[rank[i]]\),证明没

  • 亿些原古博客汇总 II2022-02-07 19:00:08

    之前那个太满了编辑一下卡一年所以就新开一个。 [USACO12FEB]Nearby Cows G [2] 一句话题意:给你一棵 \(n\) 个点的树,点带权,对于每个节点求出距离它不超过 \(k\) 的所有节点权值和 \(m_i\) 。 \(1 \le n \le 10^5\) 定睛一看这就是今年省选B卷D1T2的60pts数据嘛。 k的范围很小,可以

  • 三体攻击(蓝桥杯省赛2018C/C++A组第七题) 暴力2022-02-07 16:34:54

    题目: 题目描述:略 输入输出样例 示例 输入 2 2 2 3 1 1 1 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 2 1 2 1 1 1 1 1 1 1 2 输出 2 思路: 暴力破解: 读懂题意(难点)给每个战舰(i, j, k)赋于生命值d(i, j ,k)循环m轮攻击,每轮攻击相当于防御值d(i, j ,k)down操作,直到防御值 d(i, j ,k) < 0时

  • 征途2022-02-06 09:32:48

    link 决策单调性的另一种写法。似乎仍然可以使用斜率优化但我没去写。 方程不重要,我的那个“方差一瞥”已经写得很清楚了,说一下决策单调性的第二种写法吧。这种写法适用于: \[f[x]=\min\limits_{i=0}^{x-1}\{g(i)+w[i,x]\} \]其中\(g(i)\)是一个与\(f[i]\)无关的函数。可以发现这个

  • 绿豆蛙的归宿2022-02-06 08:31:42

    link emm,题目本身并不见得很难,主要是有一个点必须理清楚。期望DP的计算需要遵守全期望公式,大概是\(E=\sum\limits_i^m p_i\times c_i\),也就是说你在搞清楚一个东西对于期望的贡献的同时还应该要知道它产生贡献的概率。这也就回答了为什么本题中只能逆推而不能顺推的问题。毕竟一个

  • 快速排序(模板)2022-02-03 14:35:17

    #include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 1000010; int a[N]; int n; int read() { int f = 1 , s = 0; char c = getchar(); while(c > '9' || c < '0')

  • LibreOJ 109 并查集2022-02-02 18:31:14

    题目链接:LibreOJ 109 并查集 题目大意: 题解: 并查集模板,结果用二进制表示,注意要快读。 #include <cstdio> #include <iostream> using namespace std; int fa[4000010], ans; inline int read() { char ch = getchar(); int ans = 0, f = 1; while (ch < '0' || c

  • scanf 和 getchar2022-02-02 18:00:29

      今天在编写二叉树的代码的时候,发现一个奇怪的现象,代码如下:    bool CreateBiTree(BiTree *T) { char ch; printf("Node:"); scanf("%c", &ch); if (ch == '#') { *T = NULL; return false; } else { *

  • P8086 『JROI-5』Music 题解2022-01-30 21:03:37

    注意坑点:看到题目,点进赛时公告板,有一行字:不保证数据类型一定正确。说明什么?不开long long见祖宗! 然后就是模拟,因为 \(n\) 有 \(10^7\),所以得使用 \(\Theta(n)\) 的复杂度,那么开一个 \(bool\) 数组,记录歌曲是否听过(虽然 \(bool\) 数组开 \(10^7\) 有点危险,但不会 \(MLE\))。 最后,上

  • ST表模板2022-01-29 16:35:23

    #include<bits/stdc++.h> using namespace std; int n,m; int f[100111][50],logn[10000011]; inline int read(){ char c = getchar(); int x = 0, f = 1; while (c < '0' || c > '9') { if (c == '-') f = -1; c =

  • 字符串输入输出处理2022-01-26 18:04:19

    1:基础知识 gets(ch);//用于输入带有空格的字符串 scanf("%s",ch);//仅可接受不带空格字符串的 2:代码 #include<stdio.h> #include<string.h> #define MAX 1000 int main(void) { int n,count=0; char ch[MAX]; scanf("%d",&n);//当你输入一个数字并按下回车时,下面getchar()

  • Atcoder 试题选做2022-01-26 10:31:36

    [ARC087D] Squirrel Migration 瞎扯:考虑 \(dis(x,y)=dep_x+dep_y-2dep_{lca(x,y)}\),于是让 \(lca\) 最小即可。 易知如果根节点的最大的子树不超过一半,那么所有的 \(lca\) 都可以在根。如果大于一半呢,递归这棵子树吗?好像不太好做的样子。 正解:我在想马呢。直接选中心做根,完事了。

  • 快读快输模板2022-01-25 15:35:56

    1 #include "bits/stdc++.h" 2 using namespace std; 3 typedef long long ll; 4 inline ll read()//内联函数可以节省调用的开销,而且能够便于编译器和上下文配合做优化 5 { 6 ll s = 0,w = 1; 7 char ch = getchar(); 8 while(ch < '0' || ch > '9'

  • 牛客小白月赛44(还有没补的)2022-01-24 12:34:57

    一步步慢慢走,终归是能走到山顶的 A.深渊水妖 就按照题目要求的去找就行了 代码 #include <bits/stdc++.h> using namespace std; typedef long long ll; typedef pair<int,int> PII; #define int128 __int128 #define endl '\n' #define IOS ios::sync_with_stdio(false);cin.ti

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

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

ICode9版权所有