2018宁夏邀请赛 L Continuous Intervals(单调栈+线段树) 传送门:https://nanti.jisuanke.com/t/41296 题意: 给一个数列A 问在数列A中有多少个区间满足,区间内数字排序后是一段连续的连续的区间 即排序后区间内的任意元素满足 \(a_{i+1}-a_i<=1\) 题解: 根据题意可知 满足题意的区间应当满足以下性质: \(max-min==num-1\) 即当前区间最大的数字减去当前区间最小的数字等于区间数字的种类数 我们枚举区间的右端点…
------------7题弟弟,被各位半小时13题的大佬打惨了(滑稽)---------- 签到题就不写了. F :Moving On            (1247ms) 题意:给定大小为N的带点权,带边权的完全图,N<200. 然后Q次询问,每次给出(u,v,w),让你求在除了起点终点的其他途经点的点权都<=w的条件下的最短路. 思路:可以离线做的话,显然就是需要排序了. 然后想到floyd就是一个用点更新的最短路算法. 那么我们把floyd的第一层按点权排个序即可. 那么第k层的di…
https://vjudge.net/problem/Gym-102222I 居然补到个防ak,刚开始不知道啥是循环左移右移(只能移一次),不好想.. 题意:以冒泡排序为背景 给你n,k 问在1~n的n个数的全排列中有几个能经过k次遍历就排好序了(这里排好序是指最长上升子序列长度至少为n-1 for(int i=1;i<n;++i) if(a[i]>a[i+1]) swap(a[i],a[i+1]) 这算一次遍历结果%mod(也给出来了 题解:冒泡k趟之后,新序列的第i项是原序列前min(i+…
>传送门< 前言 辣鸡网络赛,虽然我是个菜鸡,然而好几个队伍十几分钟就AK???我心态那会彻底崩了,后来群里炸了,话题直接上知乎热搜,都是2018ICPC宁夏网络赛原题,这怎么玩,拼手速?还有我竟然签到都做不出来QAQ太菜了题意 维护一个栈,每次操作之后询问栈里的最大值$x_{i}$,求$(1*x_{1})\wedge (2*x_{2})\wedge \cdots \wedge (n*x_{n})$的结果 分析 开始写的时候就就正常的维护栈,但是$WA$了,后来找了半天发现我想错了.我让栈顶元…
https://vjudge.net/problem/Gym-102222K 题意:给定N点M边的无向图,每个点有点权.  点覆盖表示某个点集S{}覆盖了所有的边,其贡献是S中点权之积. 现在让你求所有满足条件的点集贡献之和.N<36,保证无重边,自环. 思路:点覆盖选谁不选谁肯定状压,N有36再来个折半,然后想办法合并两边.可以枚举左边那堆点的状态,对于左边没选中的那些点,若他连接的其他左边点都被选中了(否则该状态舍去), 求出他连接的右边那些点,即是右边的必选点,那么右边就可以选该必选点集或…
题目链接 :https://nanti.jisuanke.com/t/26217 Description: There is a positive integer X, X's reversion count is Y. For example, X=123, Y=321; X=1234, Y=4321. Z=(X-Y)/9, Judge if Z is made up of only one number(0,1,2...9), like Z=11,Z=111,Z=222,don't cons…
原题链接:http://codeforces.com/gym/100431/attachments/download/2421/20092010-winter-petrozavodsk-camp-andrew-stankevich-contest-37-asc-37-en.pdf 题意 神奇的电路可以通过比较器来实现冒泡. 题解 倒着往回考虑,搞搞就好. 代码 #include<iostream> #include<cstdio> #include<cstring> #…
题目链接:https://nanti.jisuanke.com/t/28412 题意: 给出n个数的序列.问序列中有多少个区间满足,排序完之后任意两个相邻的数之差不大于1. 题解: 用max表示区间最大值,min表示区间最小值,cnt表示区间数字的种数.那么问题转化成求max-min=cnt+1的区间数. 用线段树维护每个区间的max-min-cnt最小值及最小值的个数,不用单独维护max,min和cnt.注意max-min >= cnt+1. 从1~n枚举R.对于每个枚举的R,更新以R为后缀的…
题目链接:https://nanti.jisuanke.com/t/28411 题意: 给出n(n<=36)个点的一个图.求点覆盖集数. 题解: 将n个点折半为L和R两部分.对于R内部的边,枚举状态判断是否可行.对可行的状态维护高维前缀和. 之后判断L内部的可行状态.对于每一个L内部的可行状态,在高维前缀和中找出与他成立的状态相乘就是答案. #include <bits/stdc++.h> using namespace std; ; typedef long long ll; int…
//代码跑的很慢四秒会超时,结尾附两秒代码(标程) #include<bits/stdc++.h>using namespace std;typedef long long ll;const ll inf=0x3f3f3f3f;vector<pair<int,int>>tree[100010];ll dp[100010][110];/*dp[u][i]表示u节点为根的子树上选择了i个叶子节点,会经过u这个子树的边的权值和的最优值.转移方程如下:dp[u][i]=min(…