08 2018 档案
摘要:A - 3人でカードゲームイージー / Card Game for Three (ABC Edit) AtCoder - 2066 B - たくさんの数式 / Many Formulas AtCoder - 2067 C - すぬけ君の塗り絵 / Snuke’s Coloring AtCoder -
阅读全文
摘要:A - Polycarp’s Practice CodeForces - 1006B B - Three Parts of the Array CodeForces - 1006C C - Two Strings Swaps CodeForces - 1006D D - Military Probl
阅读全文
摘要:A - The Text Splitting CodeForces - 612A B - HDD is Outdated Technology CodeForces - 612B C - Replace To Make Regular Bracket Sequence CodeForces - 61
阅读全文
摘要:A - USB Flash Drives CodeForces - 609A B - The Best Gift CodeForces - 609B C - Load Balancing CodeForces - 609C D - Gadgets for dollars and pounds Cod
阅读全文
摘要:A - こだわり者いろはちゃん / Iroha’s Obsession AtCoder - 1973 B - いろはちゃんとマス目 / Iroha and a Grid AtCoder - 1974 C - いっしょ / Be Together AtCoder - 2019 D - アンバランス /
阅读全文
摘要:文章目录 题意简述:思路分析:组合计数12 乘法逆元逆元的定义逆元的求法 快速幂code view 题意简述: 有一个 H 行 W 列的网格。 Iroha 现在站在左上角 (1, 1)。 她每次会向右或向下走,直到走到右下角 (H, W)。 唯一的限制是,她不能走到左下方的 A 行 B 列。 求行走
阅读全文
摘要:A - Romaji CodeForces - 1008A B - Turn the Rectangles CodeForces - 1008B C - Reorder the Array CodeForces - 1008C D - Saving Snuuk AtCoder - 4190 E -
阅读全文
摘要:A - Tanya and Stairways CodeForces - 1005A B - Delete from the Left CodeForces - 1005B C - Summarize to the Power of Two D - Polycarp and Div 3 CodeFo
阅读全文
摘要:此函数在: #include<algorithm> 头文件下 它是按字典序对数组生成排列 所以在使用前要将数组排序。 举个栗子: sort(p, p+n); // 排序,得到p的最小排列 do { for(int i = 0; i < n; i++) printf("%d ", p[i]); //
阅读全文
摘要:题意简述: FJ打算去购物,在此之前,他需要一些盒子来装他要买的各种各样的东西。每个盒子都用来携带一些特定的东西(也就是说,如果他要买这些东西,他必须事先买到盒子)。每种东西都有自己的价值。现在FJ的购物金额只有W美元,他想用这笔钱购物,使他所买的物品的总价值最高。 有多组测试数据 详情请戳--背包
阅读全文
摘要:目录 作者有话说 二维费用的背包问题 状态定义及转移 物品总个数的限制 小结 分组的背包问题 状态定义及转移 小结 有依赖的背包问题(重要) 分析 最后是非常不正经的ending 作者有话说 本篇博文中的各类数组都从1开始 题目里好像混进去了什么奇怪的东西 二维费用的背包问题 二维费用的背包问题是指
阅读全文
摘要:思路:反素数及其在OI中的应用 里面第一种类型 #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> using namespace std; #define LL unsigned long long #def
阅读全文
摘要:概念:对于任何正整数n,其约数个数记为f(n),如果某个正整数n满足:对任意的正整数i(0< i< n)都有f(i)< f(n),则称n为反素数。 emmm…,这个概念有点啰嗦,反素数其实就是区间里因子个数最多的那个数。 信竞中有如下应用: 求约数刚好等于n的最小的那个数求区间里的最小反素数([1,
阅读全文
摘要:题意简述 农夫约翰要购买价格为T的物品,他有N种硬币,每种硬币的面额为Vi,数量为Ci,同时店主也只有这几种面额的硬币,但数量无限,问约翰总共要经手的硬币数量(约翰买东西给店主的硬币数量+店主找钱给约翰的硬币数量=约翰经手的硬币数量) 分析 思路比较容易想,让硬币的面额作为背包重量,让硬币的数量作为
阅读全文
摘要:先等一下,字多预警,密集恐惧症慎入,喂,你,就是你,小板凳搬好了吗,站久了可是会腿酸的 无节操地王婆卖瓜一下, 本文 深度好文 目录 先扯两句 0-1背包 其它类似的状态定义 1 2 小结 3 记忆化搜索 滚动数组(优化空间复杂度) 初始化 完全背包 递推关系 优化时间 滚动数组 简单有效的常数优化
阅读全文
摘要:暑假,小哼准备去一些城市旅游。有些城市之间有公路,有些城市之间则没有,如下图。为了节省经费以及方便计划旅程,小哼希望在出发之前知道任意两个城市之前的最短路程。 上图中有4个城市8条公路,公路上的数字表示这条公路的长短。请注意这些公路是单向的。我们现在需要求任意两个城市之间的最短路程,也就是求任意两个
阅读全文
摘要:sscanf(字符串转化为整数)和sprintf(整数转化为字符串)都只适用于“123456”这种字符串 sscanf是将字符串转化为整数(或其它类型,这里用较为),格式为 sscanf(字符串的名字,"%d",整型变量的名字); sscanf还可以分离整数和其它字符,下举一例 s[100]="12
阅读全文
摘要:紫书P278-279 例9-10 分析 很容易想到定义dp[i][j]为s[i]~s[j]最少需要添加多少个括号 边界: 串为空时,dp[i+1][i]=0单个串时,dp[i][i]=1 转移: 如果s[i]与s[j]匹配,转移到dp[i+1][j-1]枚举断点,转移到dp[i][k]+dp[k+1
阅读全文
摘要:紫书P304-305 题意 分析 这道题很容易看出来搜索比较简单吧,四堆糖果都只能取最上面的,那每一次选的时候每一堆糖果可以选也可以不选(其实dp也可以,但是没有dfs这么好写)本着dfs超时的原则,记忆化一下dp[i][j][k][l]表示每一堆取对应下标个最多可以获得的最大个数 由于篮子里有相同
阅读全文
摘要:先扯两句 这道题紫书上P269-270有讲解 分析 可以把从左到右再回来看作是:两个人同时从最左点出发,经过2条不同的路径到最右点,除了起点和终点外每一个点都恰好被一个人经过。(颇有些小学奥数的意味) 定义状态dp[i][j] 为第一个人走到i,第二个人走到j,还需要走的最短距离。但是这个状态在转移
阅读全文
摘要:先扯两句 (似乎不止2句,qwq数学老师的风格) 高维dp的题是第一次遇到【甚至第一次在编程中用到四维数组】 高维dp由于维度比较高,考虑的东西比较多,所以比较麻烦【脑阔大】 然后由于我太limited了,所以扯一下大佬字字珠玑的博客 算法概述 顾名思义——一种处理多方面状态的DP,这种DP特点是…
阅读全文
摘要:参考博客: CodeForces - 11D A Simple Task 好久没写状压dp了,对于集合状态的表示都有些生疏: 空集.............................0 只含有第i个元素的集合{i}............1<<i 含有全部n个元素的集合{0,1...n-1}.
阅读全文
摘要:参考博文: http://www.cnblogs.com/George1994/p/7821357.html 知识点 重结点:子树结点数目最多的结点; 轻节点:父亲节点中除了重结点以外的结点; 重边:父亲结点和重结点连成的边; 轻边:父亲节点和轻节点连成的边; 重链:由多条重边连接而成的路径; 轻链
阅读全文
摘要:传送门 题意简述:奶牛想证明他们是聪明而风趣的。为此,贝西筹备了一个奶牛博览会,她已经对N头奶 牛进行了面试,确定了每头奶牛的智商和情商。 贝西有权选择让哪些奶牛参加展览。由于负的智商或情商会造成负面效果,所以贝西不 希望出展奶牛的智商之和小于零,或情商之和小于零。满足这两个条件下,她希望出展奶牛
阅读全文
摘要:传送门 分析 刚开始的时候想的是求最长路和次长路,没有注意到题目中的条件是要求2条路不能交叉(2条路不能有公共的城市)。于是乎,就枚举边,把边删掉,然后在每个块里面求最长路。 刚开始想用spfa,把每条边的边权取反,求最短路,然后打着打着发现这么要枚举s,t,正解应该打树的直径(n个城市,n-1条边
阅读全文
摘要:先上一道例题:Bridging signals POJ - 1631 这道题第一反应就想到了 [CEOI96]渡轮问题 就是一个非常裸的求最长上升子序列的长度,还不要方案,非常的水。然而,常规的dp复杂度是 O(n^2) ,这道题会愉快地TLE,所以要进行nlogn级别的优化。 //O(n^2) T
阅读全文
摘要:题意简述 求由1~k之间的数(含)组合成n的方案数 分析: 本质:完全背包方案数(完全部分和问题-划分数) 状态定义: dp[i][j]:前i种数凑成j的方案数 公式: dp[i][j]=dp[i-1] [j] (不取)+dp[i][j-i] (至少取一个) 道理与完全背包相似,也可以滚成一维 然后
阅读全文
摘要:传送门 来自vjudge的题意 分析 定义状态:dp[i][j] 为把区间i~j变成回文的最小代价 转移: s[i]==s[j] dp[i][j]=dp[i+1][j-1] 如果 s[i+1]~s[j]是回文串 则对于s[i]可以增加可以删除,dp[i][j]=dp[i+1][j]+min(ac(s
阅读全文
摘要:题意简述:有t种蚂蚁 ,a个蚂蚁 每个蚂蚁属于一个种类 不同类蚂蚁可以区分 同类蚂蚁不可以区分 求这些蚂蚁组成大小为s s+1…b集合的组合数 多重集组合数模板 n种物品,第i种物品有ai个,不同种类物品可以互相区分但是相同种类无法区分。从这些物品中取出m个,求方案数。 ——方法来源于《挑战程序设计
阅读全文
摘要:传送门 vjudge上友善的中文题意 分析 后缀0代表该数是10的倍数,应由若干2*5产生 我们把每个格子里的数因数分解预处理出它包含的2和5的数量 而10的个数,为2的个数和5的个数取min dp[i][j][k] =min(dp[i][j-1][k],dp[i-1][j][k]) k=0:2 k
阅读全文
摘要:传送门 题意简述: 你是火系法师,对面有一排敌人,每个敌人都有HP,你要向他们扔火球,扔 i时,i的HP减少a,同时i+1和i -1的HP减少b。法师只能攻击到2号到n-1号。如果一个人已经死了你还可以继续攻击它。问你至少要扔多少个火球才能杀死所有敌人,并依次输出每个火球的攻击目标。 注意:如果一个
阅读全文