ICode9

精准搜索请尝试: 精确搜索
  • CSP-S模拟1 [斐波那契,数颜色,分组]2022-09-04 07:30:27

    CSP-S 模拟1 洛谷上原题,不挂题面了。 A.斐波那契 P3938 斐波那契 观察上图,可发现规律:一个数的父亲等于这个数减去最大的小于它的斐波那契数。特殊的,如果这个数是斐波那契数,设这个数为 \(x\),\(x = fib(i)\),那它的父亲为 \(fib(i - 2)\)。 数据最大到 \(1e12\),打表发现,\(fib(60) >

  • 最短路算法之 Dijkstra2022-09-03 23:00:19

    部分内容参考了李煜东的《算法竞赛进阶指南》,在此声明。 单源最短路径 单源最短路径问题,是说,给定一张有向图(无向图)\(G=(V,E)\) ,\(V\) 是点集,\(E\) 是边集,\(|V|=n\),\(|E|=m\),节点是 \([1,n]\) 之间的连续整数,\((x,y,z)\) 描述一条从 \(x\) 到 \(y\) 边长为 \(z\) 的有向(无向)边

  • 棋局评估(不常见的搜索)2022-09-03 22:32:15

    棋局评估(MINMAX搜索+α-β剪枝) 这是一个博弈的问题,在这里,你的对手希望他得高分,你希望你得高分,可是你分数高了他的分就低了。下棋的时候,你希望走出最好的局面,即使输也要分数最高,而你的对手恰恰相反,他要走出他的最好局面,也就是你的最坏局面,让你分数最低。这样交替行棋,也就完成了对

  • CSP-S模拟12022-09-03 21:31:19

    下发文件和题解 A. 斐波那契 对于上面这张图,尝试从2开始依次写下每个兔子的父亲的标号: 那么转换成数列就是这样的: 1 1 1 2 1 2 3 1 2 3 4 5 ... 可以发现这个序列由多个连续从 1 开始的序列组合到一起,每段长度依次是斐波那契数列里面的每一项. 那么就有以下规律: 令f(i)表示第i个

  • Codeforces Round #818 (Div. 2) C Madoka and Formal Statement2022-09-03 02:02:13

    Madoka and Formal Statement 思维 如果合法,说明 \(a_i \le b_i\),因此也可以认为 \(b_i\) 就是 \(a_i\) 最后能变成的最大值 根据题意操作,只有 \(a_i \le a_{i+1}\) 的情况,才能使 \(a_i + 1\),因此 \(a_i\) 的理论最大值应该是 \(b_{i+1} + 1\) 因此只要所有的 \(b_i\) 都不大于 \(

  • Codeforces Round #818 (Div. 2) B Madoka and Underground Competitions2022-09-03 01:31:41

    Madoka and Underground Competitions 构造 在一行里,如果选定了其中一个位置是 \(X\),接下来就直接往左和往右每 \(k\) 个放置一个 \(X\) 就行了 每一行的初始位置根据一开始的那个 \(X\),斜着一个方向铺满,即可做到每一行都存在一个 \(X\) . X . . . . . X . . . . . X .

  • CF375E Red and Black Tree2022-08-31 20:32:23

    题目传送门 Solution 非常神奇的一道题。 我们不考虑交换操作,相反,我们去考虑把多少个 \(0\) 的位置变为 \(1\),同时我们记录选了多少个黑点,如果跟原来黑点数量相同即是合法。 此时我们可以发现一个神奇的性质对于 \(u\) 的儿子 \(v\),如果覆盖 \(u\) 的节点不覆盖 \(v\),那么覆盖 \(v

  • Codeforces Round #817 (Div. 4)E Counting Rectangles2022-08-31 09:04:22

    Counting Rectangles 思维 把所有的矩形左上角都叠在一起,就会发现是一个二维前缀和的求解问题:\(\sum_{i=h_s+1}^{h_b-1} \sum_{j=w_s+1}^{w_b-1} (i*j*cnt_{ij})\) 这个显然就是一个二维前缀和的问题,直接算就好了 #include <iostream> #include <cstdio> #include <string> #inclu

  • gym-101667E How Many to Be Happy2022-08-30 16:30:08

    How Many to Be Happy? 最小割 因为是最小生成树,因此可以考虑对于一条边来说,他的左右两端的点视为处于两个不同的集合,然后只通过该边进行连接,这样最小生成树就必然会利用这条边 比该边大的边显然不用考虑,就考虑比该边边权小的边,然后进行最小割,边流量为 \(1\)(分割成两个集合,且割的

  • 多重背包问题 II2022-08-29 05:30:13

    多重背包问题 II(水题但有注意点) 二进制优化的多重背包问题(主要注意的是二进制优化后的数组的大小问题) AC代码 #include <cstdio> #include <iostream> #include <algorithm> #include <cstring> using namespace std; const int maxn=2010; int dp[maxn]; int w[maxn<<3],v[maxn

  • gym-103708E Erudite of words2022-08-28 23:03:59

    Erudite of words 组合数学 + 容斥 定义 \(F_i\):表示由 \(i\) 个字母组成的长度为 \(n\) 的单词数(每个字母必须在单词中出现) 显然答案就是 \(F_k * C_{m}^{k}\) 关于 \(F_i\) 的递推式: \[F_i = i^n - \sum_{j=1}^{k-1}(F_j) \]显然 \(i^n\) 代表 \(i\) 个字母随意摆放的情况,容斥地

  • CF1720D2 题解2022-08-27 13:31:16

    前言 题目传送门! 更好的阅读体验? 感觉 D1 和 D2 不是同一个难度档次的呀...... 思路 设 \(a_j\oplus i < a_i \oplus j\),这意味着数字 \(a_j\oplus i\) 中,从个位起前 \(k\) 位和 \(a_i \oplus j\) 相同,之后第 \(k+1\) 位就不同了。 两个不同下标的数有点难处理,考虑转化为同一个下

  • 洛谷 P2582 函数2022-08-26 21:03:17

    函数 - 洛谷 可以发现性质 \(g(f^m(x))=f^m(g(x))\) 。 若设左侧 \(x\) 所在环大小为 \(size(x)\) ,右侧 \(g(x)\) 所在环的大小为 \(size(gx)\) 。 可以得到,\(size(gx)\mid size(x)\) 。 这是因为左侧下标呈循环,右侧的值呈循环,若环的大小不满足 \(size(gx)\mid size(x)\) ,必然会出

  • 洛谷-P3388 【模板】割点(割顶)2022-08-25 23:00:37

    【模板】割点(割顶) tarjan 学了一下割点,发现就是找 \(low[nex] \ge dfn[now]\) 的点,同时根的话要求有两个分支才能作为割点 搜索的时候如果 \(nex\) 没有被访问过,则直接继续搜,如果访问过,则尝试通过 \(dfn[nex]\) 来松弛自己的 \(low[now]\),因为只考虑当前点能跑到的最上面的点,这与

  • CodeForces-505D Mr. Kitayuta's Technology2022-08-24 23:34:24

    Mr. Kitayuta's Technology tarjan + 思维 先缩点,然后考虑如何建边 如果其中一个 \(DAG\) 图中出现一个缩点后大小大于 \(2\) 的连通块(环),则考虑直接将这个 \(DAG\) 图变成一个环,代价显然都是相同的,即点的数量 因此延伸,考虑多个缩点前都有环的 \(DAG\) 图,我们不妨将他们全部变成一

  • 【题解】P5304 [GXOI/GZOI2019]旅行者(dijkstra,图论,最短路)2022-08-24 00:30:58

    【题解】P5304 [GXOI/GZOI2019]旅行者 一道利用 dijkstra 的很妙的图论题! 加深了我对于 dijkstra 的理解。 (于是在做完这道题两天后的模拟赛中遇到了和它套路几乎一样的,我却甚至没有想到用最短路……) 所以写个题解记录一下吧。 题目链接 [GXOI/GZOI2019]旅行者 - 洛谷 题意概述

  • AtCoder-abc265_e Warp2022-08-23 13:00:23

    Warp dp 状态优化 一开始想到的状态为:\(dp[i][x][y]\),第 \(i\) 步走到 \((x,y)\) 的方案数,但是发现状态转移非常难写,原因是坐标计算非常大 后来可以优化一下 \(dp\) 的状态:\(dp[i][j][k]\) 表示第 \(1,2,3\) 个方向走了 \(i,j,k\) 步 的方案数 这样就可以确定好所在的坐标,然后进行

  • 暑假集训82022-08-23 08:33:35

    暑假集训要结束了,快乐的时光总是短暂的,下面是丧心病狂的焚化课时间(人已经焚化了) 最后一场考试又来了一次模拟退役,,体验感极差 暑假结束了, 但是我还是这么菜。。。。。 A. T1 出了个大阴间题 考场一眼装压, 打了个一维的轻松过样例, 然后对拍, 一拍就假 然后发现子问题不优,但是全局可能

  • 2022.8.22 颓废记录2022-08-23 00:30:45

    Preface 没有序言 Content [luogu P4059][Code+#1]找爸爸 题面太长难以概括,不写简要题目了QAQ。 首先发现,肯定没有两个对应位置都是空格的,否则可以去掉让答案更优。 因此,我们只需要考虑最后一位是不是空格,如果是,讨论它在小 A 还是小 B。 具体而言,令 \(dp(i,j,k)\) 表示两个字符

  • 2022.8.21 摆烂记录2022-08-22 00:30:20

    Preface 回归 Content [luogu P4310]绝世好题 给定序列 \(a_{1\sim n}\),求子序列 \(b\) 的最长长度 \(k\),使得 \(\forall i \in [2,k],b_i\mathsf{\&}b_{i-1}\gt 0\)。 \(1\le n\le 10^5,1\le a_i \le 10^9\)。 跟二进制有关,考虑位运算。 发现 \(b_i \mathsf{\&}b_{i-1}\gt 0

  • Gym-101630C Connections2022-08-21 22:01:42

    Connections 思维 真没看出来 由于给的是强连通图,直接保留从 \(1\) 开始深搜,保证 \(1\) 能访问到其他所有点的,然后反向建图,保证所有点能够到达 \(1\) #include <iostream> #include <cstdio> #include <algorithm> #include <queue> #include <vector> using namespace std; const

  • [2011年NOIP提高组] 铺地毯2022-08-21 20:34:41

     [2011年NOIP提高组] 铺地毯 题目描述: 为了准备一个独特的颁奖典礼,组织者在会场的一片矩形区域(可看做是平面直角坐标系的第一象限)铺上一些矩形地毯。一共有n张地毯,编号从1到n。现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上

  • 2020年9月乙组 最大圆弧2022-08-21 15:02:04

    首先,如果将题目的“圆环”改成“数组”,相信大家都会做,就是如下 int sum=0,maxn=0;//sum更新最大值 for(int i = 1;i <= n;i++){ scanf("%d",&a); if(sum < 0)sum = 0;//当sum小于零时,不如啥都不选 sum += a; maxn = max(maxn,sum); } printf("%d\n",maxn); 但是此题是一个环

  • 题解 TSP 但是你有约束2022-08-20 17:34:27

    Description 给定一张带权完全图,求一条路径满足 不重复经过一个点。 在过点 \(i\) 时,\(1\cdots i - 1\) 要么全访问过,要么都没有访问过。 点数 \(n\) 有 \(1\le n\le 1e3\) Solution % 你赛唯一做出来一道题 wwwwwwww QAQ 花了 1h30min 发现自己找的规律不对 QAQ 所以找规律最好

  • 图的存储2022-08-20 00:02:26

    图的存储   邻接矩阵   它是利用矩阵的二维结构,使其中的一维代表其中一个端点,另一维代表另一个端点。     scanf("%d",&m); memset(G,0,sizeof(G)); for(int i=1;i<=m;++i) { scanf("%d%d",&x,&y); G[x][y]=G[y][x]=1;//无向图 }     缺点:空间占用太大,

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

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

ICode9版权所有