关闭

字符串游戏

题目大意题解瞎猜想和画图得到一个不好说的结论。 用诡异的单调栈做。#include #include #define fo(i,a,b) for(i=a;i=b;i--) using namespace std; const int maxn=1000000+10; char a[max...
阅读(57) 评论(0)

[51nod1786]数据流中的算法 - 众数

题目描述数据流统计功能上线后,为51nod提升用户体验做出了很大的贡献。但是新问题随之而来,夹克老爷还想知道在一个窗口内,访问次数最多用户(即窗口内的众数)。如果有多个众数,取用户ID最小的一个。(窗口的意思是一个固定长度的区间!)(因为数据流是实时的、在线的,所以不允许使用离线算法^_^)做法一个map+一个set#include #include #incl...
阅读(240) 评论(0)

[CodeM初赛A轮]A

题解看懂题意题。#include #include #include #define fo(i,a,b) for(i=a;i=b;i--) using namespace std; typedef double db; const int maxn=1000+10; db c...
阅读(170) 评论(0)

[CF480B]Long Jumps

题目描述懒得写模拟答案肯定小于等于2。 用个map,然后xjb讨论。#include #include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; const int maxn=100000+10; map ha,yl; int a[maxn];...
阅读(58) 评论(0)

[CF480A]Exams

题目描述懒得写贪心排序,a第一关键字b第二关键字。 然后优先选b,不行选a。#include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; const int maxn=5000+10; struct dong{ int a,b; } a[maxn]; int i,j...
阅读(51) 评论(0)

最长不下降子序列

题目大意a1=t0 an=(A*an-1^2+B*an+C)%D(n>1) 求该序列最长不下降子序列长度暴力n不是很大显然可以暴力。 n很大呢? 那就不断减循环节长度直至减到一个阈值内,再暴力。 正确性显然,只要阈值不要设太小。#include #include #include #define fo(i,a,b) for(i=a;i<=...
阅读(108) 评论(0)

幻想

题目描述做容易归纳出Si就是i在k进制数下各数位上的数的和再模k。 证明很简单。 我们只需要维护k进制分解即可。 用一个数组维护,每次把最低位+1,然后考虑进位。 均摊分析这是线性的: 设势函数为k-1的数量。 每次若进位了s个,那么势函数减少了s,并可能增加1,实际消耗时间为s+1,因此Ai<=s+1-s+1=2 均摊复杂度为O(1) 优化常数使用模优化即可#include<cst...
阅读(83) 评论(0)

[51nod月赛19D]石头剪刀布威力加强版

题目大意小A和小B在玩石头剪刀布,他们每个人写出一个序列。 小A写出了n个数。 小B写出了m个数。 其中0代表石头,1代表剪刀,2代表布 0>1,1>2,2>0。 他们总共进行k轮,第一轮选择第一个数字,后面每一轮两个人都选择序列的下一个数进行比赛(序列结尾的下一个位置在序列开头)。 问小A和小B每人赢了几局。瞎做例如我们现在统计A赢了几局。 假如Ai和Bj打,那么下一次轮到Ai时,B...
阅读(282) 评论(0)

图书列表

题目描述模拟这种题瞎模拟 我是建了个trie,对于图书和目录分开来存储。一个字符串用它在哈希表的位置作为数值。 然后输出的时候,把一个节点的儿子按字典序排序#include #include #include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace...
阅读(96) 评论(0)

小W学物理

题目描述为了测试小W的物理水平,Mr.X在二维坐标系中放了N面镜子(镜子坐标绝对值不超过M),镜子均与坐标轴成45°角,所以一共有两种类型“/”和“\”。原点不会有镜子,任意一点最多只有一面镜子。 镜子两个面都能反光,而中间不透光,例如,对于一个“/”型镜子,下方向射入的光线会被反射到右方向,左方向射入的光线会被反射到上方向。 现在有一条光线从原点沿X轴正方向射出,求走过T路程后所在位置模拟就模...
阅读(120) 评论(0)

string

题目描述给出一个长度为n, 由小写英文字母组成的字符串S, 求在所有由小写英文字母组成且长度为n 且恰好有k 位与S 不同的字符串中,给定字符串T 按照字典序排在第几位。由于答案可能很大,模10^9 + 7 输出。瞎做你尝试枚举比T串小的合法字符串最早在第几位和T不同,然后组合数+幂数算一波以这个为前缀的合法字符串数量。#include #include #de...
阅读(128) 评论(0)

排队

题目描述做法我们先处理出fix表示在全空情况下不断进人,i这个房间被第几个人最终停留。 用一个堆保留空房间当前fix的最小值,每次进一个人就是选择堆中最小值的房间。 拿走人的话观察一下就是从这个房间往上有人房间的数量-1,这个可以倍增来求,因为这个房间到根路径上有人和没人一定是分离开的。 分析一下势能这样做是n log n的。#include #include<algorith...
阅读(150) 评论(0)

跟踪

题目描述模拟我们可以枚举在那个点被抓到,然后让石神马不停蹄的跑到那个点,接着乖乖等死。#include #include #include #define fo(i,a,b) for(i=a;i<=b;i++) using namespace std; const int maxn=200000+10; int f[maxn][25],d[maxn...
阅读(115) 评论(0)

成绩调研

题目大意求有多少个区间满足权值为i的数量在[li,ri]内。扫一扫我们枚举区间右端点,左端点的可取范围是一段区间。 尝试用两个堆维护左端点的最大值和最小值。 对于第i种权值,我们可以通过指针跳跳跳获得在位置i时左端点的左界和右界,所以一个堆保存所有权值的左界另一个保存右界。 注意l=0以及r=0的情况。#include #include #include<...
阅读(97) 评论(0)

归途与征程

题目描述简单的思路把B串倍长,那么新的串任意一个长度为M的子串都是B的循环同构串。 按照*号把A串分成了若干段,然后每一段都与B串做一次KMP匹配。 具体的,设一个bz[i,j]表示B串第i个位置为开头是否能与第j段匹配。 那么统计答案就是枚举循环同构串的头部,不断往后跑。 当然,如果A串的头部或尾部不是∗*,那么要把它弄成∗*号。 跑的速度很慢达到m^2,所以预处理suc数组表示每个位置...
阅读(223) 评论(0)
17条 共2页1 2 下一页 尾页
    个人资料
    • 访问:211287次
    • 积分:9145
    • 等级:
    • 排名:第2014名
    • 原创:689篇
    • 转载:4篇
    • 译文:0篇
    • 评论:181条
    最新评论
    文章分类