题目直接找链接 题意: 有一个2*n大的平面,有的格子不能走,有的格子可以走,最初状态所有格子都可以走,有q个操作,每个操作都把某个格子变化一下:能走变不能走,不能走变能走,输出每次操作之后能否从1,1到 2,n.合法的走法:有共同边的格子可以相互到达. solve: 思维题,考虑一下有什么特殊的性质吧:怎样快速的判断能不能到达呢,其实很简单:只要有一个“卡死”的就过不去,没有“卡死”的就可以过去,什么叫“卡死”呢,想一想,只要有对角线相邻的或者上下相邻的不能走的格子,就“卡死”了. ps:我们…
洛谷P1667 数列 题目描述 给定一个长度是n的数列A,我们称一个数列是完美的,当且仅当对于其任意连续子序列的和都是正的.现在你有一个操作可以改变数列,选择一个区间[X,Y]满足\(A_X +A_{X+1} +-+ A_Y<0,1<X<=Y<n,\)令\(S=A_X +A_{X+1} +-+ A_Y\),对于\(A_{X-1}\)和\(A_{Y+1}\)分别加上S,\(A_X\)和\(A_Y\)分别减去S(如果X=Y就减两次).问最少几次这样的操作使得最终数列是完美的. 输入输出…
题目:https://www.luogu.org/problemnew/show/P1088 题意: 给定一个n个数的排列,要求得到这之后的第m个排列. 思路: next_permutation的简单应用. 题意本身是说找到m加上当前值之后在火星人的表示法里的数. 但是本身加减顺序是可换的,题意可以变换成当前的值之后的第m个 所以当前的排列之前的根本不需要管,只用从当前开始,跑m次next_permutation就可以了. #include<stdio.h> #include<stdli…
题目 传送门:QWQ 分析 不想画图. https://www.luogu.org/problemnew/solution/P1641 好神仙的题啊. 代码 // luogu-judger-enable-o2 #include <bits/stdc++.h> using namespace std; typedef long long ll; ; ; ll fac[maxn]; int exgcd(ll& x,ll& y,ll a,ll b){ ;y=;} else{ exgc…
点此看题面 大致题意: 给你一张无向图,每个点权值为\(0\)或\(1\),多组询问两点之间是否存在一条回文路径. 暴力\(DP\) 首先,看到\(n\)如此之小(\(n\le5000\)),便容易想到一个\(O(m^2)\)的暴力\(DP\). 我们用\(f_{i,j}\)表示\(i\)与\(j\)两点之间是否存在一条回文路径. 初始化,\(f_{i,i}=1,f_{i,j}=1(s_i=s_j)\),即分别预处理最短的奇数长度回文路径和偶数长度回文路径. 然后我们把所有\(f_{i,j}=1…
题目描述 有这样一种魔板:它是一个长方形的面板,被划分成n行m列的n*m个方格.每个方格内有一个小灯泡,灯泡的状态有两种(亮或暗).我们可以通过若干操作使魔板从一个状态改变为另一个状态.操作的方式有两种:  (1)任选一行,改变该行中所有灯泡的状态,即亮的变暗.暗的变亮:  (2)任选两列,交换其位置.  当然并不是任意的两种状态都可以通过若干操作来实现互相转化的.  你的任务就是根据给定两个魔板状态,判断两个状态能否互相转化. 输入格式 文件中包含多组数据.第一行一个整数k,表示有k组数据. …
#include <stdio.h> #include <string.h> #include <iostream> #include <string> #include <math.h> #include <algorithm> #include <vector> #include <stack> #include <queue> #include <set> #include <…
题意:有\(n\)个点,连\(m\)条边,求最多有多少条食物链(从头走到为有多少条路径). 题解:之前抽了点时间把拓扑排序补完了,这题其实就是一道拓扑排序的裸题.关于拓扑排序: ​ 1.首先,我们用\(in\)记录某个点的入度,\(out\)表示这个点向外所连的点. ​ 2.遍历所有点,找到入度为\(0\)的点,将其入队. ​ 3.遍历队列(将队头元素记录并存入答案后弹出),将入度为\(0\)的点所连边一条一条的消去,即所有的\(out[x]=-1\),且该点所连的点的入度都需要\(-1\),如…
感觉要做出来这个题,需要一定的线代芝士 首先,我们来观察这个柿子. 我们将\(B\)的权值看作是收益的话,\(C\)的权值就是花费. 根据矩阵乘法的原理,只有当\(a[i]和a[j]\)都为\(1\)的时候,才能够获取到\(a[i][j]\)代价,而把\(a[i]\)弄成1,又会付出\(c[i]\)的代价. 那这不就是一个经典的最大全闭合子图模型吗? 我们令\(S \rightarrow (i,j)\)这个坐标对应的点.流量是\(b[i][j]\),表示割去这个边,就舍弃了\(b[i][j]\)…
好久之前做的题了QWQ 现在来补一发博客 一道神仙题啊..qwq 首先,我们可以看出来,我们如果对于每个点维护一个\(val\),表示他的直系儿子中有几个表现为1的. 那么\(val[x]>>1\) 就是他反应的类型 这样十分便于我们计算一开始的\(val\) 那么考虑修改. 一定是会修改一条\(连续1(对应着0->1),或者连续2(1->0)\) 也就是说,如果我们能够知道一次修改,\(1到x\)的路径下最下面的1或者2的位置,我们就能够通过链修改来实现. 其实一开始我想的是二分…