首页 > TAG信息列表 > lL
P3177 树上染色做题记录
树形 dp 好题。 做这题的思想历程: 定义 \(dp_{i,j}\) 表示以 \(i\) 为根的子树中,选择了 \(j\) 个节点的答案。感觉还要带上一维状态就是所有黑点距离 \(i\) 的距离,这违反了做题思路中间的简洁性的原则。于是我们 查看题解。 经过不明方法之后,我们想到了定义 \(dp_{i,j}\) 对于答案Codeforces 杂题选讲 #1
1715C Monoblock 展开 题意简述: 我们定义连续 \(k\)(\(k\) 尽可能大)个相同的数被称为一个“块”。一个序列的“块”数就相当于将其直接去重后的序列长度。 给定一个长度 \(n\) 的序列和 \(m\) 次询问。对于每次询问,有两个数 \(i,x\),先将 \(a_i\) 改为 \(x\),然后输出 \(\sum\limitsacwing889. 满足条件的01序列
acwing889. 满足条件的01序列 原题链接:https://www.acwing.com/problem/content/891/ 求组合数 卡特兰数 逆元 快速幂 费马小定理 思路 题目要求一个01串,其任何一个前缀都要保证0的数量不小于1的数量 可以将这个排列转化成一个路径。1表示向上走,0表示向右走 符合排列要求的路径就9.13 模拟赛总结
惨。 T1 就是考欧拉函数,对这东西完全不熟早就忘了。凭借仅存的印象写了出来,然而又忘了判那个大于平方的质因数/ll/ll T2 直接 dp。但一开始没看到 0 代表不能走,而且将“不能早到也不能晚到”误理解为“中途都不能经过终点”,写完过不去样例。调了很久发现理解错题意,8:00 左右过了样矩阵游戏
矩阵游戏 是一道氵题; 正好拿来练矩阵乘法; 题目传送门 https://www.luogu.com.cn/problem/P1397 显然老老实实的递推挂了; 那么 很容易想到矩阵加速 如何从F(1,1)转换到F(n,m) 每一列进行m-1次乘a加b的操作A 每一行进行n-1次乘c加d的操作B 可得 F(i,n)=F(i,1)* ( A^(m-1)); (^表示次方) 同理 每2021年中国大学生程序设计大赛(哈尔滨)Gym 103447
B Magical Subsequence E Power and Modulo I Power and Modulo 二进制,思维,二分 题意 给你一个序列 \(A_n\),你可以进行多次操作; 每次操作可以选择一个任意长度的序列 \(B_m\) ,然后使得\(A_{B_i}-2^{i-1}\)。问你最少多少次操作可以将\(A_n\)序列变为零。 题解 可以发现 将A_n$求组合数I II III IV
求组合数 求组合数1 递推 $ O(n^2) $ 原题链接:https://www.acwing.com/problem/content/887/ 思路 数据范围为2000,可以在\(n^2\)以内解决问题,就直接使用下面的递推即可 已知公式 \[C_{a}^{b} = C_{a-1}^{b} + C_{a-1}^{b-1} \]就用此公式递推求即可 for(int i = 0; i < N; i ++)COMPFEST 14 - Preliminary Online Mirror (Unrated, ICPC Rules, Teams Preferred)
比赛链接: https://codeforces.com/contest/1725 A. Accumulation of Dominoes 题意: \(n * m\) 的矩阵,从左上角开始,将 1 到 \(n * m\) 的数,放到矩阵中,先放第一行,从左到右,然后第二行,以此类推。问相邻且数字差为 1 的格子有多少个。 思路: 答案就是 \((m - 1) * n\),特判一下只有一列的Mondriaan's Dream(状压dp)
Mondriaan's Dream(状压dp) 题目大意:用1x2的方块填满NxM的大矩形,问填满的方法有多少种。解题思路:利用先填好竖着的方块,剩下的空格再用横着的来填,且要求填好竖着的方块时,每一行都要能用横着的方块填满(即连续的空出来的位置必须是偶数,即合法) AC代码 #include <cstdio> #include <cst快速幂
#include<iostream>using namespace std;const int maxn = 1e5+5;typedef long long ll;ll fastpow(ll a , ll n){ if(n==1) return a; ll temp = fastpow(a,n/2); if(n%2==1) //如果n是奇数,n/2向下取整,则会使得a少乘一个次方 return temp*temp*a; else return temp*temp;}i中秋节yyds
P8539 「Wdoi-2」来自地上的支援 为什么都在用线段树啊? 首先,我们发现一个数如果有一次没有被选,那它以后就永远不会被选上了,所以x被选k次的临界是它从x到x+k-1一直被选上,x+k-1>n就不合法了。 为了保证这个数在它自己的位置上被选中第一次,它需要比前面的修改后最大值大或相等(因为修POJ 1995 Raising Modulo Numbers 【Solution】(快速幂)
[原题传送门](http://poj.org/problem?id=1995) 题目大意 先给定n组数据, 每组先给定m为模数, 再给定h组号码ai与bi, 输出每组数据处理的结果 题解 a^b的大小把握不住,从以下几点出发 1.考虑到求模公式:(ab)%p=(a%p)(b%p)%p 证明如下: 令a=k1p+r1,b=k2p+r2; 则(ab)%p=(k1k2pp+k1r2p+k2r1p+AcCoders 7961 Problem D:【省选基础数据结构 树状数组】树状数组 题解
树状数组板子,单点修改,区间查询,注意处理读入字符的问题。 //7961 Problem D:【省选基础数据结构 树状数组】树状数组 #include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN=100005; ll c[MAXN],a[MAXN],n; #define lowbit(x) ((x)&-(x)) void add(lCF1526B I Hate 1111--数学性质推不出来?打表就好啦
题意: 给定一个n,他是否能被 11,111,1111,.......这样的数表示呢 样例:33=3*11,144=111+11*3 解: 首先可以发现的是:1111=1100+11=11*101,11111=11100+11=111*10+11,后面的不难验证都可以由11,111表示 问题缩小了,也就是n能不能被11,111表示 也就是解方程:11x+111y=n,有非负整数解 首先由于g题解 洛谷 P1641 【[SCOI2010]生成字符串】
\(P1641 [SCOI2010]\)生成字符串 前置知识 组合数、坐标轴。 题目描述 以\(n\)个\(1\)和\(m\)个\(0\)组成字符串,求出满足条件「在任意的前\(k\)个字符中,\(1\)的个数不能少于\(0\)的个数」的字符串数量。 解题思路 考虑到题目要求的条件「\(1\)的个数不少Red and Blue Graph(图论,组合计数)
题意 给定一个\(N\)个点\(M\)条边的无向图。 有\(2^N\)种方式将每个节点染成红色或者蓝色。求满足下列条件的染色方案数: 恰好有\(K\)个点染成了红色 有偶数条边的端点染成了不同颜色 题目链接:https://atcoder.jp/contests/abc262/tasks/abc262_e 数据范围 \(2 \leq N \leq 2 \tiI Hate Non-integer Number(DP)
题意 有一个包含\(N\)个元素的数组\(A\). 有\(2^N - 1\)种方式从中选择至少一项。问其中有多少满足平均值为整数。 题目链接:https://atcoder.jp/contests/abc262/tasks/abc262_d 数据范围 \(1 \leq N \leq 100\) 思路 如果选中了\(x_1,x_2,\dots, x_i\),那么它们的平均值为\(\frac{洛谷 P1734 最大约数和(dp)
https://www.luogu.com.cn/problem/P1734 题目描述 选取和不超过 S 的若干个不同的正整数,使得所有数的约数(不含它本身)之和最大。 输入格式 输入一个正整数 S。 输出格式 输出最大的约数之和。 输入输出样例 输入 #1复制 11 输出 #1复制 9 说明/提示 【样例说明】 取数字 4 和# Educational Codeforces Round 135 (Rated for Div. 2) A-E
Educational Codeforces Round 135 (Rated for Div. 2) 传送门 A 题意: 给定n个颜色的各自的数量,每次可以使用两个不同的颜料,问最后可能剩下哪种颜料,输出任意一个即可。 分析:直接输出个数最多的那个颜料即可 void solve(){ int n;cin>>n; vector<int>a(n+1); rep(i,1,n平面二维点对问题(转化一维)
【元素周期表】通过观察点对构造规律,转化成矛盾或者传递关系 平面坐标系内,给出p个点对(x,y),如果有3个同行或者同列的点对,那么他们组成的“矩形四个角”就都被覆盖,求最少添加多少点使得所有n*m区域都被覆盖。 部分分:p=0,考虑构造,发现只要靠边一行一列都填满就可以满足要求 正解:把洛谷 P1044 [NOIP2003 普及组] 栈(dp)
https://www.luogu.com.cn/problem/P1044 给定一个n,在满足栈的出度入度条件下,求符合条件的permutation数量。 输入 3 输出 5 #include<bits/stdc++.h> using namespace std; typedef long long LL; const int N=2002000,M=2002; const int INF=0x3f3f3f3f; LL f[M][M]; int mainluogu P8350 [SDOI/SXOI2022] 进制转换
题面传送门 首先题面中那个\(y=1\)的数位dp部分分是诈骗,这题和数位dp没有半毛钱关系。 为啥SDOI两个T2都是算法诈骗题啊 首先考虑一个爆搜,爆搜三进制每一位是什么,然后转化成二进制。这个复杂度显然是\(O(n)\)的,不可接受。 但是实际上可以优化,我们考虑对于一个较低位的三进制数,其能[数学基础] 10 数论分块
数论分块 简介 数论分块通常被用来以\(O(\sqrt n)\)的复杂度快速计算形如\(\sum \limits_{i=1}^n f(i)g(\lfloor \frac n i \rfloor)\)的含有除法向下取整的和式,它的核心思想是将\(\lfloor \frac n i \rfloor\)相同的数打包同时计算,主要利用了Fubini定理。 证明 1. 证明时间复杂度*ABC 236 D - Dance(dfs)
https://atcoder.jp/contests/abc236/tasks/abc236_d 题意:两个两个组队,开心值异或,求最大开心值。 注意这句话: If Person i and Person j pair up, where i is smaller than j。 Sample Input 1 2 4 0 1 5 3 2 Sample Output 1 6 Sample Input 2 1 5 Sample Output 2 5P5723 【深基4.例13】质数口袋
#include<iostream> using namespace std; bool p(int a){ for(int i=2;i<=a-1;i++) if(a%i==0)return false; return true; } int main(){ int n; cin>>n; int sum=0,sump=0; for(int i=2;i<=n-1;i++){ if(p(i)){