随笔分类 - ----模拟
1
摘要:题目点这里漏写博客好多天了,赶快来补这道题是一个裸的模拟题,注意到纸片总长度不会增加,所以用一个带翻转的splay来维护一下每次将前半段翻转和后一段做加法合并就好了,均摊logn#pragma GCC opitmize("O3")#pragma G++ opitmiz...
阅读全文
摘要:Alex喜欢玩网络游戏,认为这是智力和体力的综合锻炼。在一次游戏活动中,他意外获得了一个传说中威力极其强大的法宝:珠链。 珠链,顾名思义,就是由许多小珠子串起来的一条链。珠子有很多种颜色。Alex听说过,只有将珠链打磨纯净,珠链才能发挥最大的威力。 纯净珠链是指这样的...
阅读全文
摘要:lanwuni接到一个任务,在C市建立N个信号塔来完成城市中的通讯任务。 假设C市是一个坐标范围[-2000000,2000000]的网格,一些整点上有用户,你也可以在整点上建立信号塔。一个点上可以建立多座。 在C市,两点之间的距离是曼哈顿距离,也就是横纵坐标...
阅读全文
摘要:三核苷酸是组成DNA序列的基本片段。具体来说,核苷酸一共有4种,分别用’A’,’G’,’C’,’T’来表示。而三核苷酸就是由3个核苷酸排列而成的DNA片段。三核苷酸一共有64种,分别是’AAA’,’AAG’,…,’GGG’。给定一个长度为L的DNA序列,一共...
阅读全文
摘要:Alice和Bob发明了一个新的旋转游戏。首先,Bob给定N个数组成的序列,并把该序列平均分配成若干个块,每块正好包含K个数(K能整除N)。第一块由第1到第K个数构成,第二块由第K+1个数到第2K个数构成,以此类推。接着,Bob要求Alice对这个序列进行一系列操作,...
阅读全文
摘要:下面是一段实现冒泡排序算法的C++代码:for (int i=1;ia[j+1]) swap(a[j],a[j+1]);其中待排序的a数组是一个1~n的排列,swap函数将交换数组中对应位置的值。对于给定的数组a以及给定的非负整数k,使用这段代码执行了正好k次swap...
阅读全文
摘要:有一个外星人控制了你的大脑。一开始你处于原点(0,0)。外星人有一个由(R,U,D,L)组成的长度为M 的操作序列,分别代表(右,上,下,左)。平面上有N 个关键点,每当外星人给出一个操作,你需要在这个方向上找到最近的一个关键点,并走到那个点上。保证输入数据合法。100%的数据,N,M≤100000...
阅读全文
摘要:有一个外星人控制了你的大脑。一开始你处于原点(0,0)。外星人有一个由(R,U,D,L)组成的长度为M 的操作序列,分别代表(右,上,下,左)。平面上有N 个关键点,每当外星人给出一个操作,你需要在这个方向上找到最近的一个关键点,并走到那个点上。保证输入数据合法。10...
阅读全文
摘要:(I DO NOT like matrix!!!)首先我们可以暴力 O(nmq)考虑压位(bitset)可以得到60pts正解:我们发现,这些操作如果用边连接起来会形成一颗树(每个节点必然入度为1)那我们考虑用离线方法,将所有的操作连接起来,dfs遍历整颗操作树,每个...
阅读全文
摘要:(I DO NOT like matrix!!!)首先我们可以暴力 O(nmq)考虑压位(bitset)可以得到60pts正解:我们发现,这些操作如果用边连接起来会形成一颗树(每个节点必然入度为1)那我们考虑用离线方法,将所有的操作连接起来,dfs遍历整颗操作树,每个...
阅读全文
摘要:模拟就好,dfs模拟,记录深度计算#include#includechar s[32010],*S; int dijk(char*& s,int d){ int ret=(~d&1),v; for(;*s!=')';++s){ if(*s=='('){ v=dijk...
阅读全文
摘要:模拟就好,dfs模拟,记录深度计算#include#includechar s[32010],*S; int dijk(char*& s,int d){ int ret=(~d&1),v; for(;*s!=')';++s){ if(*s=='('){ v=dijk...
阅读全文
摘要:这个题废话真多题面好长首先看懂题意大概就做完了,完全就是模拟嘛#include#include#includeusing namespace std;int l[100]={0},w[100]={0},r[100]={0};char s[100...
阅读全文
摘要:这个题废话真多题面好长首先看懂题意大概就做完了,完全就是模拟嘛#include#include#includeusing namespace std;int l[100]={0},w[100]={0},r[100]={0};char s[100...
阅读全文
摘要:我们发现前四个操作可以用双向链表维护,而最后一个操作有一个限制就是1#include#include#define N 1000010using namespace std;int l[N],r[N],s[N]; char c[5];int w[N],f[N]={-1...
阅读全文
摘要:我们发现前四个操作可以用双向链表维护,而最后一个操作有一个限制就是1#include#include#define N 1000010using namespace std;int l[N],r[N],s[N]; char c[5];int w[N],f[N]={-1...
阅读全文
摘要:在遥远的西方有一个古老的王国,国王将他的王国分成了网格状,每一块称之为一个城市。在国王临死前,他将这些城市分给了自己的N个儿子(编号为0到N-1)。然而这N个王子的关系不是很好,0讨厌1,1讨厌2,2讨厌3……N-1讨厌0。在国王死后,这种不好的关系使得王子之间爆发了...
阅读全文
摘要:在遥远的西方有一个古老的王国,国王将他的王国分成了网格状,每一块称之为一个城市。在国王临死前,他将这些城市分给了自己的N个儿子(编号为0到N-1)。然而这N个王子的关系不是很好,0讨厌1,1讨厌2,2讨厌3……N-1讨厌0。在国王死后,这种不好的关系使得王子之间爆发了...
阅读全文
摘要:完成斐波那契进制下的加法运算第一位为1,第二位为2,依次类推。。这里其实很简单,只是要考虑一下进位即可首先连续两位不为零直接向前进位即可但是不能解决问题,因为可能出现一个位上面的值大于1那么我们可以这样做,设连续的四位分别为:0,0,2,0那么我们可以将其变成1,0,...
阅读全文
摘要:完成斐波那契进制下的加法运算第一位为1,第二位为2,依次类推。。这里其实很简单,只是要考虑一下进位即可首先连续两位不为零直接向前进位即可但是不能解决问题,因为可能出现一个位上面的值大于1那么我们可以这样做,设连续的四位分别为:0,0,2,0那么我们可以将其变成1,0,...
阅读全文
1