自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Twin Automata的博客

这里只是一个蒟蒻的孤芳自赏,如果能帮到你,那真是太好了。

  • 博客(79)
  • 收藏
  • 关注

原创 准备复活

退役了两年多的前OIer(并且是个废物)如今打算重新踏上ACM之路。

2020-09-08 21:11:15 135

原创 codeforces893E Counting Arrays 排列组合

题目链接:戳这里题目大意:给出x和y,求一个长度为y的序列,其乘积为x,允许有负数,求这种序列的个数,对1e9+7取模。题解:经典的排列组合问题。先对x进行质因数分解,那么答案就是C(t+y-1,t)之和,t为每个质因数的指数。再考虑负数,无非就是只会出现偶数个负数,答案再乘上2^(y-1)即可。代码:#include#define mod 1000000007using

2018-02-27 10:40:19 231

原创 codeforces852F Product transformation 排列组合

题目链接:戳这里题目大意:有一个长度为n的数组A,开始时,A内的元素全为a。现在进行m次操作,每次操作将A[i]变为A[i]*A[i+1],最后一个元素不变。现给出n,m,a,Q,输出m次操作后的A数组,每个元素对Q取模。题解:因为每个数刚开始都是一样的,那么我们可以把乘法考虑为指数的相加。用S代表指数,那么Si=Si+S(i+1)。设S[i][j]表示第i个数经过

2018-02-27 10:32:34 290

原创 codeforces869C The Intriguing Obsession 动态规划

题目链接:戳这里题目大意:齐心协力,我们可以以超乎想象的速度到达任何地方!现在,火炎姐妹(Fire Sisters)——火怜(Karen)和月火(Tsukihi)正在前往一个她们从未到达的地方——水中的小岛!有三种不同类型的小岛,方便地,各自涂上了红,蓝,紫三色。每种颜色的小岛各自有a,b,c个。这些小岛之间初始时互相分离。可以在小岛之间架桥,两个小岛间最多架一座桥。

2018-02-27 10:19:23 230

原创 codeforces859E Desk Disorder 并查集判环+乘法原理

题目链接:戳这里题目大意:有N 个人和2N 个座位。告诉你这N 个人它们现在的座位。以及它们想去的座位。 每个人可以去它们想去的座位或者就坐在原来的座位上。 新的座位安排和旧的座位安排,都不允许一个座位被两个人占据的情况。 问你新的座位安排的方案数。题解:可以发现不同的联通块是互不影响的,那么我们就可以统计出所有联通块分开统计答案在按照乘法原理乘起来。如果一个联通块内存在自环,那么答案

2018-02-27 10:07:07 219

原创 codeforces895C Square Subsets 状压dp

题目链接:戳这里题目大意:Petya又迟到了...老师给了他额外的任务。对于一个数组a,Petya需要统计从中间选择非空子集,使它们的乘积等于某个整数的平方的方法的数量。 如果这些方法所选择的元素的索引不同,则认为这两种是不同的方法。 因为结果可能很大,结果需要mod 10^9+7。题解:一个数是完全平方数,说明它的每个质因子都有偶数个,而a数组中的每个元素最大不超过70,那么我们可以

2018-02-27 09:51:22 270

原创 codeforces900D Unusual Sequences 容斥原理

题目链接:戳这里题目大意:输入x,y,求有多少个数列满足其gcd为x,和为y。题解:显然我们可以将y/x,这样就变成了求gcd为1,和为y/x的数列个数。如果不考虑重复,那么显然有2^(y-1)种方法,但这种情况里是存在不合法情况的,比如6分成{2,2,2},其gcd为2而不是1。所以我们考虑容斥原理,通过枚举gcd为2*gcd,3*gcd……的方式来去掉不合法情况即可。代码:

2018-02-27 09:35:52 210

原创 codeforces888D Almost Identity Permutations 排列组合

题目链接:戳这里题目大意:给出1个数n,求1~n的排列中满足最多有 k 个元素不满足 ai = i 的数列有几个。题解:考虑到k只有4,所以可以直接分类讨论,这个很好手推...代码:#includeusing namespace std;typedef long long LL;LL read(){ char c;LL sum=0,f=1;c=getchar();

2018-02-27 09:28:18 214

原创 codeforces938E Max History 组合数学

题目链接:戳这里题目大意:我们定义f(a)为:1、开始时,f(a)=0,M=1。2、对于每个2<=i<=n,如果a[M]<a[i],那么f(a)=f(a)+a[M],M=i。现在对于一个给定的数组a,求其所有排列的f(a)之和,答案对1e9+7取模。题解:一开始以为是把f(a)变成a[M],然后不会做。后来发现是题看错了QAQ。既然是加上,那么我们可以分开统计每个数的贡献。如果一...

2018-02-22 11:11:29 343

原创 codeforces486D Valid Sets 树上计数

题目链接:戳这里题目大意:给出一棵树,树上有点权,求这棵树的满足最大点权与最小点权之差小于d的连通子图的个数。题解:我们可以枚举一个点作为最大的点权向下扩展。但这样有一个问题:点权相等的点会重复扩展。所以我们规定点权相等的点,只能由编号小的向编号大的点扩展。代码:#include#define maxn 200005#define maxm 400005#define mod 1

2018-02-22 09:57:00 256

原创 codeforces52B Right Triangles 计数问题

题目链接:戳这里题目大意:给出一个n*m的只有‘*’和‘.’的矩阵,求三个顶点都是‘*’且直角边平行于矩阵边的直角三角形个数。题解:显然对于一个直角顶点,它能构成的直角三角形的个数为(左边‘*’的个数+右边‘*’的个数)×(上边‘*’的个数+下边‘*’的个数)。代码:#include#define maxn 1005using namespace std;typedef long

2018-02-22 09:36:48 441

原创 bzoj3240 [NOI2013]矩阵游戏 数学递推

题目链接:戳这里3240: [Noi2013]矩阵游戏Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 1855  Solved: 847[Submit][Status][Discuss]Description婷婷是个喜欢矩阵的小朋友,有一天她想用电脑生成一个巨大的n行m列的矩阵(你不用担心她如何存储)。她生成的这个

2018-01-31 10:59:52 171

原创 自己的各种模板整理

“或许是不知梦的缘故,流离之人追逐幻影。”

2018-01-24 08:59:20 437

原创 bzoj2683 简单题 cdq分治+树状数组

题目链接:戳这里2683: 简单题Time Limit: 50 Sec  Memory Limit: 128 MBSubmit: 1877  Solved: 762[Submit][Status][Discuss]Description你有一个N*N的棋盘,每个格子内有一个整数,初始时的时候全部为0,现在需要维护两种操作: 命令

2018-01-23 17:33:47 234

原创 SNOI省选模拟赛Round5 T2 逃离迷宫escape 搜索+并查集+预处理剪枝+双联通分量?

题目大意:有一个n*m的地图,有些地方是墙,有些地方是空地,有一个人和一个箱子还有一个终点,给出人,箱子,和终点的位置,求人把箱子推到终点,箱子的最少移动次数。n,m【前言】考场上只打出了n^4的搜索...虽然加了剪枝但用处不大,考完后发现std的代码可读性几乎为零,只好一个人磕了一下午....【题解】这题正解真是好难啊,能想到那么多。n^4的搜索很好打,bfs+bfs即可

2018-01-19 21:50:54 314

原创 SNOI省选模拟赛Round4 T3 回家home 矩阵+容斥

题目大意:n个点m条边,学校在1号店,家在2号点,有k个点(不是家和学校)必须要到达,求从学校到家经过路径数在[l,r]之间的方案数。n题解:我今天才知道一个图的邻接矩阵的k次方是从i到j走k步的方案数...知道了这个,先考虑没有k个限制的情况,我们可以利用前缀和来求出[1,l-1]和[1,r]的方案总和,相减即可。前缀和的处理:在做快速幂时,可以先预处理出2的i次方的转移矩阵,也就是要作k次方的

2018-01-18 21:36:24 201

原创 SNOI省选模拟赛Round4 T2 最大团clique 二分图(神题)

题目大意:给出n个点的坐标,要求选出最多的点使得这些点两两之间的距离小于等于k。n题解:这题真是神题啊,我还是太傻了根本没想到这么机智的做法。爆搜加好的剪枝可以得80分~~然后说这个机智到不行的做法吧。首先我们知道一般图的最大团问题是个NPC问题,但这道题的特殊性质可以让我们转成二分图来做。我们可以先枚举两个点,并且将他们作为最大团中的两个点,显然这两个点的距离首先要满

2018-01-18 18:12:56 626 2

原创 SNOI省选模拟赛Round4 T1 查询query 分块&&线段树

题目大意:给定一个序列,两种操作:1)Q l r 询问[l,r]的和,对329701061取模。2)C l r 将[l,r]内每个数变成其立方。n,q题解:一眼线段树对吧。听教练说是道简单的线段树,但我又傻又笨又手残,不知道咋维护每个数的立方,就去写分块了。但是还能注意到一个问题:为啥这个模数看起来这么奇怪啊?肯定有某种奇异的规律,打表试试。打了1~100的表后

2018-01-18 14:45:31 312 1

原创 bzoj 2509 送分题 && SNOI省选模拟赛Round3 T3 正方形square 树状数组

题目链接:戳这里2509: 送分题Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 62  Solved: 26[Submit][Status][Discuss]Description给出平面上的M条平行于坐标轴的线段,问有多少个正方形。 Input第1行为两个正整数N,M。接下来M行,每行4个非负整数x1,y1,x2,y2(0≤x1≤x2≤N,0≤y

2018-01-17 21:32:40 257

原创 SNOI省选模拟赛Round3 T2 游戏game 最小割

B 游戏(game.pas/c/cpp)TL:1S  ML:128MB【Description】GFS CLJ在玩这样一个游戏:有一个N*M的矩阵,每个格子代表一个人。他可以选择杀死一个人,或者让一个人活着。如果处在(i, j)位置的人被杀,得到B[i][j]的收益,否则得到W[i][j]的收益。另外还有Q个额外任务,每个任务的形式是这样的:如果以(x1,y1)为左上角

2018-01-17 20:07:23 187

原创 SNOI省选模拟赛Round3 T1 路径规划path DP

A 路径规划(path.pas/c/cpp)TL:1S  ML:128MB【Description】kAc在数轴上有N片西瓜地。第 i片的坐标是X[i](注意 X并没有排序)。任意两片西瓜地坐标不同。有一天他要给这N片西瓜地浇水。初始他在X[1]的位置。他必须按1..N 的顺序浇水,也就是说,必须先去X[1],再去X[2]...最后到X[n](他可以沿着坐标轴正方向或者负方向走)。

2018-01-17 17:32:38 318

原创 bzoj2873 光之大陆 Prufer编码+计数

题目链接:戳这里2873: 光之大陆Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 70  Solved: 33[Submit][Status][Discuss]Description在光之大陆的土地上,各种势力盘根错节。来自光之峡谷的精灵,来自黑暗森林的亡灵,来自古老东方的人类共同生活在一起。善于打造装置的矮人,

2018-01-16 21:27:23 696

原创 bzoj1236 KPSUM && bzoj2900 好玩的数字游戏

两个题目的区别只有单组数据和多组数据。随便放一个的链接好了:传送门2900: 好玩的数字游戏Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 99  Solved: 59[Submit][Status][Discuss]DescriptionTK在虐题的同时,也喜欢玩游戏。现在,有这样的一个游戏,规则是这样的

2018-01-16 16:45:40 298

原创 SNOI省选模拟赛Round1 T3 tree

题目大意:给定一颗树,要求支持两种操作:1 x y:加入一组点对,并输出x到y路径上的和。2 e v:将第e条边的值改为v,然后询问之前加入的点对距离和的最大值,然后恢复原状。题解:树链剖分。我太弱了并不能完全讲清题解的意思,就先占个坑吧。代码:#include#define maxn 300005#define ls (id<<1)#define rs (id<<1

2018-01-15 22:13:50 186

原创 SNOI省选模拟赛Round1 T2 string

题目大意:有n个01串,每个字符串可以看做是其本身的无限重复,求任意两个字符串的最长公共前缀的最长长度,保证每个串不存在周期。n分析:我在现场打了暴力拿了80分诶。正解是trie树。枚举两个串的长度a,b (a可以发现,a,b同时存在周期gcd(a,b),于题意不符。而在LCP所以两个串的长度不会超过a+b-gcd(a,b),因此我们可以将每个串暴力扩展到1000的长度

2018-01-15 20:30:26 297

原创 SNOI省选模拟赛Round1 T1 Travel TreeDP

题目大意:给你一颗n个节点的树,每条边有边权。Q组询问,每次询问u,k,输出从u点出发在mod k意义下的最长路。2分析:很容易想到预处理出dis[i][j]表示i到j的距离,对于每次询问O(n)查询,时间复杂度O(n^2+Qn),不可做。考虑优化,用dp[u][k]表示从u出发在mod k意义下的最长路,对于每次询问O(1)查询,时间复杂度为O(n*n*k+Q),也不行。

2018-01-15 17:56:00 233

原创 LOJ2254 && bzoj5016 [Snoi2017]一个简单的询问 莫队算法

题目链接:LOJ  bzoj题目描述给你一个长度为 NNN 的序列 aia_ia​i​​,1≤i≤N1\leq i\leq N1≤i≤N,和 qqq 组询问,每组询问读入 l1,r1,l2,r2l_1,r_1,l_2,r_2l​1​​,r​1​​,l​2​​,r​2​​,需输出∑x=0∞get(l1,r1,x)⋅get(l2,r2,x) \sum\lim

2018-01-11 14:39:57 431

原创 codeforces401D Roman and Numbers 状压DP

题目链接:戳这里题目大意:输入一个数,将该数的每个数位重新排列后(无前导零),有多少个数%m=0?分析:因为最多有18位数,可以考虑用18位的2进制数表示每一位上的数是否使用,状压dp转移即可。定义dp[state][k]表示当前状态为state时,%m余数为j的方案数。转移方程为dp[state][(k*10+dight[j])%m]=dp[state^(1注意重复问题,如果

2018-01-08 07:41:26 310

原创 hdu4123 Bob’s Race 树的直径+rmq

题目链接:戳这里Bob’s RaceTime Limit: 5000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3884    Accepted Submission(s): 1235Problem DescriptionB

2018-01-05 20:45:59 276

原创 hdu2829 Lawrence 斜率优化 or 四边形不等式优化

题目链接:戳这里LawrenceTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4665    Accepted Submission(s): 2142Problem DescriptionT.

2017-12-29 10:28:17 221

原创 codeforces163A:Substring and Subsequence DP

题目链接:戳这里题目大意:给你两个字符串s和t,求s的子串等于t的子序列的个数。题解:定义dp[i][j]表示考虑到s的第i个字符,t的第j个字符的情况。显然dp[i][j]=dp[i][j-1],只有当s[i]==t[j]时,dp[i][j]=dp[i][j-1]+dp[i-1][j-1]+1。代码:#include#define mod 1000000007using name

2017-12-27 20:43:22 208

原创 hdu6092 Rikka with Subset DP(思维好题)

题目链接:戳这里题目大意:有n个数,给出m个b[i],表示n个数中的子集和为i的有b[i]个,求最小字典序的n个数。题解:首先肯定b[0]=1。对于从1开始第一个b[i]≠0的i来说,这n个数中肯定有b[i]个i。然后将每一个i删掉,即b[j]-=b[j-i]。(和为j+i的组合数−和为j的组合数(元素中没有i)=和为j+i的组合数(元素中没有i))依次得出n个数即可。代码

2017-12-27 16:59:29 164

原创 codeforces366C Dima and Salad 背包dp

题目链接:戳这里题目大意:n个物品,每个物品有a和b两个属性,现在要选一些物品,使得a属性的和是b属性的和的k倍,求a属性和的最大值。题解:将问题变形:将每个物品的重量看做a[i]-k*b[i],价值看做a[i],分正负做两次背包,最终两个重量相等的背包就是一组可行解。代码:#includeusing namespace std;typedef long long LL;int

2017-12-27 15:49:38 250

原创 codeforces351B Jeff and Furik 逆序对+递推

题目链接:戳这里题目大意:有一个1~n的排列,两个人玩游戏,先手的人每次会交换a[i],a[i+1]且a[i]>a[i+1]的两个数,后手每次50%交换a[i],a[i+1]且a[i]>a[i+1]的两个数,50%交换a[i],a[i+1]且a[i]题解:不难发现先手每次会减少一个逆序对,后手每次50%增加一个逆序对,50%减少一个逆序对。也就是说每两次操作有50%的概率不变,50%概率减

2017-12-27 11:28:14 218

原创 codeforces429B Working out (DP)

题目链接:戳这里题目大意:有一个n*m的矩形,一个人从(1,1)出发,只能向下或向右走到(n,m),另一人从(n,1)出发,只能向上或向右走到(1,m),两人的路径最多只能有1个交点,且交点的值不计入答案,求两人路径经过的值的最大值。题解:因为n,m所以可以先预处理出(1,1)到(i,j),(i,j)到(n,m),(n,1)到(i,j),(i,j)到(1,m)的最大值,再枚举交点在哪里

2017-12-27 09:03:58 215

原创 codeforces180C Letter DP

题目链接:戳这里题意:给定一个字符串,求将其改成前段全是大写字母,后段全是小写字母最少需要改动的字母数量。题解:dp[i][0]表示考虑到第i位,且第i位是大写字母时的最小代价,dp[i][1]表示考虑到第i位,且第i位是小写字母时的最小代价。如果s[i]是大写字母,那么dp[i][0]=dp[i-1][0],dp[i][1]=min(dp[i-1][0],do[i-1][1])+1。

2017-12-26 22:34:10 274

原创 codeforces459E DP

题目链接:戳这里题意:给出一幅有向图,求一条边权递增的路径的最长长度。题解:先把所有边排序保边权不递减,设dp[i]表示以i点结尾的最长路径长度,对于相等的边要一起转移。代码:#includeusing namespace std;typedef long long LL;int read(){ char c;int sum=0,f=1;c=getchar(); whi

2017-12-26 21:48:51 223

原创 codeforce 148D 概率DP

题目链接:戳这里D. Bag of micetime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputThe dragon and the p

2017-12-26 18:03:21 183

原创 poj1260 Pearls DP

题目链接:戳这里PearlsTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 9687 Accepted: 4952DescriptionIn Pearlania everybody is fond of pearls. One compan

2017-12-26 16:00:15 153

原创 hdu1159:Common Subsequence dp

题目链接:戳这里Common SubsequenceTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 42990    Accepted Submission(s): 19829Problem Descri

2017-12-26 15:56:58 172

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除