思路题
ENESAMA
究极米其林肥宅
展开
-
传播QTYdalao的正解
https://blog.csdn.net/QTY2001/article/details/77507716 dalao真是太强啦我的乱搞做法有考虑不周的地方,虽然我没有想清楚为什么最后统计小于0的情况只用走一遍所以我写的是走了两遍但是其他的还是理解到了,十分巧妙的思路和一般的带权并查集类似上方修改find的时候pushdown可能我写的比较丑所以要开longlong就...转载 2018-11-01 18:21:35 · 238 阅读 · 0 评论 -
yjqcc--BJ80中集训
题目背景wxh0l0910给了rncfx一个N∗M的棋盘,一开始所有各自的颜色都是0,然后共价爷依次进行K次操作,第ii次操作要么是把第Li行到第Ri行的所有格子全部刷成颜色Ci, 要么是把第Li列到第Ri列的所有各自全部刷成颜色Ci。 在依次进行完所有操作后,wxh0l0910向rncfxrncfx提出了一个问题:“有多少个无序的角相邻或者边相邻的格子对,他们的颜色相同?”输入格式第...原创 2018-12-23 19:43:50 · 297 阅读 · 0 评论 -
喵喵国的游走
这是一道很简单的dp题,但是思路比较难想主要方法就是枚举每个点走i次走回自己的方案数然后略微容斥一下,就可以A掉了#include<bits/stdc++.h>using namespace std;int mod,n,m,c[2005][2005],w[2005],dp[2005];int moc(int x){ if(x>=mod) return ...原创 2018-12-18 19:32:52 · 231 阅读 · 0 评论 -
犬犬制作礼物
可以发现状态是三个三个的转移的问题变为三种颜色固定数量,求相邻颜色不同的组合方案数枚举开头的颜色A,另外两个颜色BC可以插在中间有奇数和偶数的两种情况B,C,或者BC然后讨论一下统计方案就行了#include<bits/stdc++.h>using namespace std;int t,m,r,g,b,ans;const int mod=1e9+7;...原创 2018-12-18 19:36:57 · 217 阅读 · 0 评论 -
咋肥似呀(joke)--发了一堆tarjan论文...
一道十分巧妙的分治题,很明显是需要离线的那么我们看看时间轴分了类后,一条边有贡献当且仅当连接的两个点在左边没有形成环如果前半部分在左边能够形成环,我们就把他们加入下一层的左边,否则就加入右边然后递归tarjan处理,已经成环的就可以直接并查集合并为一个点,那么可以发现复杂度就是mlogm理解了之后就是非常简单的一道题了#include<bits/stdc++...原创 2019-01-03 19:18:15 · 357 阅读 · 0 评论 -
BJ80中-串后缀
这是一道非常简单的后缀数组既然与LCP有关,我们考虑在height数组上解决这个问题我们找到最小的height位置h后,二分到两边,都看作满足期望为1的条件时解决那么对于左边最小贡献设为f1,右边最小贡献设为f2我们现在就是分配期望到两边,考虑一个点在左右需要的贡献f1*p1+f2*h==f2*p2+f1*h,p1+p2==1那么就可以解出p1和p2的具体大小最后...原创 2018-12-26 07:36:13 · 290 阅读 · 0 评论 -
序列
最近真的该好好反思一下,今天的题思路都是对的但是不是写错了,就是看错了,或者想的偏了,没有看到题的重点这道题如果没有单调递增的限制,不过就是一道简单的斜率优化那么有了过后呢,用树状数组来满足这个限制,我们现在就是一个单点修改区间查询每个点维护一下斜率优化时的东西,开个vector就可以了听说这道题也可用CDQ分治做,可以再思考一下#include<bits/st...原创 2019-01-01 18:11:29 · 206 阅读 · 0 评论 -
绳子(rope)
绳子(rope)有一根绳子,从左到右分为 n 段,每一段长度相同,厚度为 1。共有 m 种颜色,第 i 段的颜色为 ai。有两种操作:(1)将绳子从某相邻两段的交点处折叠,将对应的段拧在一起。必须保证对应的段颜色相同,拧在一起之后的厚度为原先两段之和。例如,现在绳子的颜色为 1 2 2 1 3,厚度为 1 2 1 3 1,我们可以在第 2、3 两段的交点处折叠绳子,颜色变为 2 1 3...原创 2019-01-01 18:20:08 · 778 阅读 · 0 评论 -
电影(movie)
这个就是我思想出现了一点偏差。。。反正B序列放过去的都是可以固定有序的,那么现在我们只需要考虑把A中原来的变为有序即可以每个数的值为下标,位置为值,重新建一个数组并离散那么现在我们只需要一段连续的单调上升区间了,而要去掉区间外的值所以我们优先考虑去掉这个区间左右端点的值包含的值,这些去掉都是没有任何影响的如果去掉后就可以了,那自然是皆大欢喜,如果不行,那么我们优先去掉一边,...原创 2019-01-01 18:25:41 · 347 阅读 · 0 评论 -
几何高手(geometry)
我们发现0这个位置肯定是0剩下来的n个位置如果确定了,那么整个序列就可以确定了那么这些位置决定的根据是什么呢,当然是最后输出的字典序了所以我们先随便赋值,sort时直接改一下cmp就可以得出最后的答案了比较时如果相同那么交不交换都对它的位置没有影响,否则交换后对应位置的数就会改变把dp[i]位置的1改到i位置再输出就可以了#include<bits/stdc++...原创 2019-01-02 16:17:28 · 262 阅读 · 0 评论 -
扫雷大师
表面上看是一道交互题,但是实际上可以把所有数据存下来比较看一下它的种子是哪一个就可以了,找的办法非常简单#include <bits/stdc++.h>#include "minesweeper.h"using namespace std;static const int dx[] = {1, 1, 0, -1, -1, -1, 0, 1};static ...原创 2019-01-02 16:22:29 · 369 阅读 · 0 评论 -
神O和神牛
这是一道状压dp题dp[i]表示状态为i时最小的时间那么我们考虑什么时候可以办护照就是下机和登机的那个时间,那么我们枚举这一次办哪个签证,再找一下他能放的最靠前的位置就可以了如果我们能够把签证办理时间排序,可以发现最优位置单调不降,那么就可以O(2^n*n)做出这道题了代码写炸了好几次,还看错了题,实际上也不难#include<cstdio&...原创 2019-01-09 21:58:08 · 288 阅读 · 0 评论 -
神O的法法序列
很简单的一道题(虽然我没有做出来)我们可以大致分一下块,dp[i][j]表示在对于i这个位置假设询问的状态为j,只考虑后面2^8位,那么答案是多少利用lucas定理可以发现如果位置用i+k表示的话,k为j的子集时这个数才有贡献那么就高位前缀和处理dp,剩下的枚举子集就做完了#include<bits/stdc++.h>using namespace std;...原创 2019-01-09 22:02:08 · 236 阅读 · 0 评论 -
yjqaa--BJ80中集训
给定一个非负整数x,你每次可以对x执行两种操作,要么令x=x−1,要么令x=x−2^i(前提条件是x&2^i≠0。令f(x,y)表示从x变成y的最小操作次数。求1<=x<=n,1<=y<=n,的所有f(x,y)的和对1000000007取模的结果。输入格式一行一个另一串表示询问的N的二进制表示(保证合法,没有前导0)输出格式一行一个整数表示答...原创 2018-12-23 19:13:22 · 316 阅读 · 0 评论 -
AGC 016 F - Games on DAG(状压dp)
AGC 016 F - Games on DAG(状压dp)题意给你一个有 个点 条边 DAG 图,点的标号和拓扑序一致。现在有两个人进行博弈,有两个棋子分别在 号点上,需要不断移动到它指向的点上。如果当前两个点都无法移动,那么就视为当前操作的人失败。问有多少边集满足先手必胜。 这是一道思维非常困难的状压题我们考虑转化问题,两个棋子是独立的,那么我们如果求...原创 2018-12-28 15:15:09 · 314 阅读 · 0 评论 -
令人窒息的T1---看题目输出答案
这道题令人窒息思路题解说的很清楚考场有同学直接看出了答案???不过-1的规律就可以推理公式了原创 2018-11-03 17:27:24 · 240 阅读 · 0 评论 -
1103四校联考--表格
题解如下看完上面的题解如果还不懂的话,我就借着上面的思路讲讲自己的理解吧区间修改跟往常一样对于更新来说,这一次集合中的最大数大于左右子树的最大值那么当max不小于min的时候,max就是这个数了为什么有这个限制条件呢?因为如果之前某个数被选过了,就会导致min比较大而max还没有被更新过,现在就可能比min更小,而这显然是不合法的另外还要注意离散化的时候...原创 2018-11-03 17:52:45 · 246 阅读 · 0 评论 -
noip模拟--任
大致就是有一个01矩阵,保证任意两个1之间只有一条路径相连,相邻两个1视作连边每次询问一个区间内有多少个联通块,1e5个询问,n和m是2000以内可以发现图必定是一棵树,那么联通块个数就是点数-边数维护一下前缀边数和点数,在处理一下一条线上的连边数量,就可以O(1)得到答案了代码如下#include<bits/stdc++.h>#pragma GCC optim...原创 2018-11-02 16:20:44 · 158 阅读 · 0 评论 -
noip模拟题 ----飞
本题的空间限制是32MB可以发现实际上就是要求有多少对线段产生了相交又因为y轴上是升序,所以就是求产生的序列中,有多少个逆序对可以发现因为数据生成的方法是有迹可循的,我们可以将值域分块每a的长度就是一个块,可以通过一个块的贡献统计其他块的贡献,就减少了空间和时间复杂度用树状数组来维护这个东西#include<bits/stdc++.h>#pragma...原创 2018-11-02 16:26:28 · 322 阅读 · 0 评论 -
CDQZ多校集训题目--盛夏
题意:给一个有向无环带权图,每条路径上最多只能割一条边,最后使1到n无路径,问最小割边边权和是多少。题意很清楚,但是这道题的题解其实是只适用于很少的情况的我们考虑的做法是网络流最小割对于所有边的反向边,流量均为inf那么如果具体分析原因其实是这条路径割上游,那条路径割下游,然而可以走这条路径的上游和那条路径的下游,如何避免?考虑到那条路径的上游和这条路径的下游是没有割的,中...原创 2018-12-04 11:24:40 · 248 阅读 · 1 评论 -
bzoj4283 魔法少女伊莉雅
因为今天还有别的计划,暂且将学习这道题的计划搁置dalao博客原创 2018-12-03 20:10:03 · 438 阅读 · 0 评论 -
洛谷P4921 情侣?给我烧了!
一道莫名其妙的黑题这道题其实我开始的思路是容斥的,然而我写的容斥减去了一些重复的部分导致最后的答案很奇怪然后就换换思路ans[i][j]表示i对情侣中有j对和睦的方案数考虑ans[i][j]的转移,那么可以得出表示i对情侣中选j对情侣的方案数,乘上在i排座位里选j排座位的方案数,乘上这j对情侣坐j排座位的方案数,乘上每对情侣各有两种做法的方案数,而其他的i-j对情侣...原创 2018-12-13 20:00:53 · 300 阅读 · 0 评论 -
BJ80中集训---程序锁
这是一道思路题,话说这次集训特别喜欢考思路题我们考虑一个字符串什么时候不合法当且仅当当前值为0且两边均为P时然后我们发现当我们遇到P时我们是可以一直保留P的所以问题转化为对于两个字符串,分别求出f[i]表示前缀和最小为i且前缀和最小时,后一个字母为P此时的方案数是多少然后两个字符串的f[i]和f[j],如果i+j>=0,对答案就有f[i]*f[j]的贡献那...原创 2018-12-19 19:05:21 · 342 阅读 · 0 评论 -
省选模拟赛--折纸(paper)
这是一道探究性质的题目,但是思路很清晰明了性质:对于一个满足要求的子矩形,他的折叠方式的顺序是可以任意改变的证明:其他的情况也可以类推了因此我们只需要考虑这个大矩形横着划分的方式*竖着划分的方式就是答案了然后对于每一个划分的位置,都是可以合并的如果翻折时越过了除大矩形边界外的边界是没有影响的可以证明此时一定可以先自行翻折成较短的长度剩下的就是简单的MAN...原创 2018-12-14 19:45:38 · 468 阅读 · 0 评论 -
省选模拟--取石子(stone)
这道题主要是思路题如果抑或和为0,则答案显而易见是Draw,石子对两边的贡献相同否则显然只考虑抑或后的最高位的贡献,题目转化为01序列,问先手是否能拿奇数个1就可以开始讨论,情况1:如果n为偶数,则必胜,先手可全拿偶数位置或奇数位置上的数情况2:如果n为奇数,当序列两端有1是可以继续讨论,否则回到Bob先手的情况1之后Alice必须和Bob拿相同的0或1,否则又会转化为...原创 2018-12-14 19:57:34 · 348 阅读 · 0 评论 -
BJ80中集训--多线程
这算是一道比较综合的思路题吧,考场上只想出了后半部分的贪心考虑如果我们已经求出了一种可行情况,那么其他的答案不过只有三种:1.上升序列给一个给下降序列2.下降序列给一个给上升序列3.两个序列交换一个元素因为如果超过一个元素的操作,就会在另一种里面形成不合法的情况接下来只需要求出一个可行解即可O(n)求答案了如果两个序列已经相交过了,就已经互不影响了否则如果新加...原创 2018-12-26 19:38:11 · 213 阅读 · 0 评论 -
BJ80中--连续区间查询
给出一个1到N的排列,定义一个区间是连续的区间当且仅当这个区间的值域也是个区间。例如[1,3,2]是连续区间,但是[1,3]并不是。再给出M次询问,每次询问一个区间[L,R],需要求的是包含这个区间的长度最小的区间。如果有多个,请输出左端点最小的那一个。输入格式第一行一个整数N,表示排列长度。 接下来一行N个整数,用空格分开,表示给出的排列。 接下来一行一个整数M,表示询问个数。 ...原创 2018-12-21 21:10:42 · 523 阅读 · 0 评论 -
毒瘤(指题目名)
首先如果我们不考虑复杂度的话,直接主席树二分就能轻松解决了但是3e5的数据范围会让的算法跑得很慢,而且常数也比较大所以我们考虑换一个思路假如我们从小到大把点按权值排序,然后开始用并查集合并,记录下合并时的位置的值,最左边的位置,以及所在块的权值接着我们考虑把询问的权值从大到小排序,那么对于每一个询问,就可以把所有权值比他大的合并点都加进来我们设询问的左端点l作为左边界时,右...原创 2019-04-01 19:05:06 · 353 阅读 · 0 评论