
simpleOJ
文章平均质量分 51
wamach
WA自动机,自动WA
展开
-
#207. merge
就我这智商除了退役还有其他路可走吗原创 2017-04-18 22:42:38 · 152 阅读 · 0 评论 -
#206. round
爆零大师——我的rating已经掉不下去了。原创 2017-04-18 22:56:12 · 197 阅读 · 0 评论 -
#211. 数列
首先假设m是质数,则由于每个数都有自己的逆元,每种前缀积都可以两两互相转化(b=a*(inv[a]*b%m)%m)。然后考虑m不为质数的情况,发现数列中相邻的两个前缀积a,b满足gcd(a.m)|gcd(b,m)。因此我们把gcd(a,m)==gcd(b,m)的数都堆成一坨,当m为质数处理,gcd(a,m)接下来要让数列最长,我们把每坨数都看成一个权值为数的个数的点,建一个DAG跑一跑,就原创 2017-04-23 21:04:21 · 355 阅读 · 0 评论 -
ZJOI2017 Training Contest 12题解
昨天太浪了,导致今天没法写作业,只能先把题解写好。T1:三个三个for。第一次Floyd。第二次for出g[i][j],即从i到j的最短路,经过的以j为端点的线段有几个。第三次for出f[i][j],及答案,f[i][j]=Σg[i][k],k在最短路上。T2:考虑按a[i]的大小分块。块中每个元素都看成一条直线ax+b,a是该用户的a值,b是a*该块内a≥原创 2017-02-19 20:43:08 · 807 阅读 · 0 评论 -
#212. 矩阵
输出时忘记%lld+打错模数=自爆原创 2017-05-30 17:50:21 · 233 阅读 · 0 评论 -
#218. 前缀和
搞笑题嘿嘿嘿#include#include#include#include#includeusing namespace std;#define rep(i,j,k) for(i=j;i<=k;++i)#define per(i,j,k) for(i=j;i>=k;--i)#define ll long long#define db double#define mkp(x原创 2017-06-18 19:16:08 · 277 阅读 · 0 评论 -
#219. 无聊的游戏
他娘的事事不顺,老子要爆粗口了。简单个毛线啊,再简单也要好好讲啊,麻痹老子一个晚上都不知道在干什么。先考虑BFS。每次取出队首元素,将起点在其终点管辖范围内的点全部进队。直接搜显然要T。因此把每个元素的起点放到主席树里。对于每个y建一棵关于x的主席树。每次把找过的点删掉就可以了。因为删除很麻烦,所以给每个点一个权,若找过就把权修改为0,找到时候每次找权最大的,找到0就退出循环。原创 2017-06-18 22:21:09 · 353 阅读 · 0 评论 -
#213. 旅行
猫大告诉我们,对于每坨c一样的点,有贡献的只有距离最远的两个。证明略。原创 2017-05-30 20:43:11 · 268 阅读 · 0 评论 -
#217. 上升序列
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>#include<cstdlib>using namespace std;#define rep(i,j,k) for(i=j;i<=k;++i)#define per(i,j,k) for(i=j;i>=k;--i)#define ull unsigned long long#define db double#define mkp(x,y) mak原创 2017-06-11 18:11:46 · 233 阅读 · 0 评论 -
#216. REQ
讲道理刚看完题目就听到题解了233原创 2017-06-11 19:22:35 · 264 阅读 · 0 评论 -
#228. 噼里啪啦
先考虑这个问题的弱化版(貌似与解题无关),我们把这个问题放到数组上。考虑贪心。将区间排序以后,去掉有包含关系的,会得到一坨横纵坐标均单调递增的区间。这时只要每次取最右边那个就可以了。然后再考虑这题。一次性把lca搞出来,然后按深度从大到小枚举。把链会伸到它的子树里的询问全部删掉。易知这是对的。代码:#include#include#include#include#inclu原创 2017-09-24 20:58:25 · 241 阅读 · 0 评论 -
#204. Koishi Loves Number Theory
蒟蒻爆零辣原创 2017-03-12 19:56:58 · 210 阅读 · 0 评论 -
#190. 第k小
其实我觉得这题应该叫第k大。一道堆优化dp。显然应该要先把每题的分数排序。然后我就得到了一个错误的贪心,马上爆零了QAQ。dp的每个状态都记录三个值:当前题目i、该题得分j、总分S。(本来应该在每个状态中记录所有题目的j,但是这显然不能AC,而且堆貌似不兹磁对含数组或vector的结构体进行操作,否则我TM也不会爆零了QAQ)为了帮(fang)助(zhi)理(bao)解原创 2017-02-11 14:14:09 · 209 阅读 · 0 评论 -
#189. 转啊转
蒟蒻爆零记原创 2017-02-10 16:00:00 · 217 阅读 · 0 评论 -
#184. Products
没办法,这题长得就是个数据结构好题,想了两三个小时的线段树也不能怪我。过分的是,中午我还跑去跟lbc说这题是个数据结构好题,就有点搞笑了,不知道他现在怎么看我。。。施大orz告诉我们,这题应该用倍增来做。首先写一个nlogn的check(l,r)函数,来判断区间[l,r]是否符合题意。考虑一个TLE的倍增,就是从一个点l开始,从大到小枚举t,当check(l,l+(1前面全是废原创 2017-02-04 16:36:41 · 245 阅读 · 0 评论 -
#21. DFA
首先,观察题目可知,该题不存在无解的情况,可以建一颗深度为n的满二叉树,以根为起点,收到0时向左走,收到1时向右走,再观察题目发现(1YYMHL(%A题大爷)说了,只要n^2枚举,两两合并,就可以A掉这题。时间复杂度O(kn^2),k为未知常数,听说很小。然后施大说正解就是这样的。顿时无语到不想鏼这题。然后考试后的汪大就默默地想出了一个n(logn)^2的算法,怒艹标算!然后我就烧四五个小原创 2017-02-05 19:21:59 · 274 阅读 · 0 评论 -
#182. 数集合
为什么会这么水,。。。没有解释,只有代码。#include#include#include#includeusing namespace std;#define rep(i,j,k) for(i=j;i<=k;++i)#define per(i,j,k) for(i=j;i>=k;--i)#define ll long long#define ldb long double原创 2017-02-06 15:35:07 · 212 阅读 · 0 评论 -
#185. 布丁怪兽
老子今天火了,一定要把这题搞出来。先将布丁坐标(a[])排序。将星星坐标(b[])以前缀和的形式存在c[]中。d[]表示坐标左边距离最近(可为0)的布丁序号。l[]表示当前布丁所在大布丁里最左边的一个布丁。f[i]、g[i]表示当i不动、左移时前i个布丁能占领的星星总数。用j枚举星星,进行状态转移:①f[i]=max(f[x-1],g[x-1])+c[a[i]]-c[]原创 2017-02-06 20:26:06 · 421 阅读 · 0 评论 -
#192. 道路维护
今天考试简直吃屎,这个普及组好题考场上真的应该想出来,题解就不写了,但注意题目有坑,数据并不满足0≤c,Li≤10^9。所以inf要定义的大些。#include#include#include#include#include#includeusing namespace std;#define rep(i,j,k) for(i=j;i<=k;++i)#define per(i,原创 2017-02-09 14:30:42 · 262 阅读 · 0 评论 -
#193. 字符串查询
我好菜啊ToT原创 2017-02-09 19:54:55 · 419 阅读 · 0 评论 -
#173. 蚯蚓健身操
题意:给定一颗树(n先三次DFS找出离每个点最远的叶子结点的距离。方法:先DFS出直径,再分别从直径的两端开始DFS,将两次得到的D取max即可。(证明:假设结论不成立,即存在一个点x,到另一个非直径端点y的距离大于到两个直径端点的距离,画图发现这与直径定义相悖。然后就假装我证好了。)按D的大小对点进行sort,发现它的逆序就是一个和拓扑序很像的东西。按照这个顺序,不停地计算以该点原创 2016-12-25 21:44:48 · 222 阅读 · 0 评论 -
#174. 分割数串
大师们貌似很快吧这题秒掉了。反正我是烧了六七个小时。非常感谢连击哥的谆谆教诲。虽然我最后并没有膜他的程序,而是自己写了一个巨繁琐的代码。一个比较明显的dp。尽管我考试的时候并没有往这个方向想。首先考虑去掉绝对值。那么原式=s[1]-2*s[2]+2*s[3]...+s[k](假装k为奇数)或原式=-s[1]+2*s[2]-2*s[3]...-s[k]这里假设中间有很多s都已经被消掉原创 2016-12-27 20:25:06 · 302 阅读 · 0 评论 -
#172. 完美距离
听说这题只用普通的线段树就可以了,但我却用了线段树合并。也许蒟蒻对概念并不够了解。注意N要定义为200000,因为环的处理要占两倍内存。考试的时候没想清楚,一开始只得了三十分,后来悄悄看了成绩后直接把N开到1000000把它A掉。事后直到现在才明白当时为毛RE。。。代码如下:#include#include#include#includeusing namespace std;原创 2016-12-29 13:51:40 · 296 阅读 · 0 评论 -
#170. 气球
把气球建成一颗线段树,线段树上第i个节点表示当前状态下个数为i的气球有几种。先把小朋友从小到大sort。然后每次从线段树上取出最大的a[i]种气球给第i个小朋友,然后这a[i]个气球在线段树上的位置都向左移一位。把节点下标建成链表,设这些气球中个数最小值为x,x节点权值为y,取出了k种,则只需在链表和线段树中把x这个节点删去,然后在zuo[x]上加k,在you[x]上加y-k。注意当z原创 2017-01-04 20:41:42 · 295 阅读 · 0 评论 -
#199. 守护糖果
不想压代码了,我要吐了,就随便讲一下思路吧。首先要说明,封锁条件4是没有用的。可以用反证法证明。证毕。接下来先不考虑x,题目变为求树上随机n条链组成的网的边权和最大值。考虑只有一条链的情况,很显然要选直径。接下来选的每一条链都要求经过原连通块,所以干脆取直径上一点为根重新建树,然后每次加两条链,要求链的两端分别为叶节点和原连通块内的一点。然后发现应该用长链剖分来解决。(原创 2017-02-28 19:23:19 · 301 阅读 · 0 评论 -
#241. Lefkaritika
把点按横坐标排序,然后枚举正方形的底边所在行,可以对于横坐标相同的点,纵坐标大的没有卵用。对于每个正方形,假设在它上方的、纵坐标最小的前提下横坐标最小的点可以管辖它。那么很显然有些正方形是不会被管辖的。这些正方形夹在两个相邻的点中间,可以被O(1)算出来。然后剩下的正方形都有且只有一个点可以管辖。那么可以通过直接枚举管辖它的点来搞事情。枚举右边纵坐标小于它的点,左边横坐标小于等于它原创 2017-10-29 19:31:30 · 412 阅读 · 0 评论