----模拟
扩展的灰
扩展的灰(Extended Ash)
展开
-
Jzoj4834 图书列表
这个题废话真多题面好长首先看懂题意大概就做完了,完全就是模拟嘛#include#include#includeusing namespace std;int l[100]={0},w[100]={0},r[100]={0};char s[100][100][200]={0};char c[200]={0}; int n,m=0;bool nc(char cc){ ret原创 2017-10-29 10:23:03 · 299 阅读 · 0 评论 -
Jzoj1973 信号塔
lanwuni接到一个任务,在C市建立N个信号塔来完成城市中的通讯任务。 假设C市是一个坐标范围[-2000000,2000000]的网格,一些整点上有用户,你也可以在整点上建立信号塔。一个点上可以建立多座。 在C市,两点之间的距离是曼哈顿距离,也就是横纵坐标差值之和。每个信号塔都有一个半径Di,表示与i曼哈顿距离不超过Di的地方都能被这个信号塔的信号覆盖到。 建立信号塔要满原创 2018-01-20 20:00:28 · 295 阅读 · 0 评论 -
Jzoj2197 三核苷酸
三核苷酸是组成DNA序列的基本片段。具体来说,核苷酸一共有4种,分别用’A’,’G’,’C’,’T’来表示。而三核苷酸就是由3个核苷酸排列而成的DNA片段。三核苷酸一共有64种,分别是’AAA’,’AAG’,…,’GGG’。给定一个长度为L的DNA序列,一共可以分辨出(L-2)个三核苷酸。现在我们想用一些统计学的方法来进行一些分析,步骤如下:1.对于这(L-2)个三核苷酸,我们从左到右给予编号原创 2018-01-20 16:53:31 · 423 阅读 · 0 评论 -
Jzoj3590 珠链
Alex喜欢玩网络游戏,认为这是智力和体力的综合锻炼。在一次游戏活动中,他意外获得了一个传说中威力极其强大的法宝:珠链。 珠链,顾名思义,就是由许多小珠子串起来的一条链。珠子有很多种颜色。Alex听说过,只有将珠链打磨纯净,珠链才能发挥最大的威力。 纯净珠链是指这样的珠链:它可以分成若干个长度相等的段,使任何两段的任何相同位置的珠子的颜色均不同,相同位置指珠子在段内的相对位置相同;而且每段原创 2018-01-22 18:54:25 · 270 阅读 · 0 评论 -
Jzoj3162 旋转
Alice和Bob发明了一个新的旋转游戏。首先,Bob给定N个数组成的序列,并把该序列平均分配成若干个块,每块正好包含K个数(K能整除N)。第一块由第1到第K个数构成,第二块由第K+1个数到第2K个数构成,以此类推。接着,Bob要求Alice对这个序列进行一系列操作,操作有以下两种:1.把每块里面的数向左或右旋转X个位置;2.把整个序列向左或向右旋转X个位置。 注意操作2原创 2018-01-02 20:41:17 · 291 阅读 · 0 评论 -
Jzoj3542 冒泡排序
下面是一段实现冒泡排序算法的C++代码:for (int i=1;i for (int j=1;jif (a[j]>a[j+1]) swap(a[j],a[j+1]);其中待排序的a数组是一个1~n的排列,swap函数将交换数组中对应位置的值。对于给定的数组a以及给定的非负整数k,使用这段代码执行了正好k次swap操作之后数组a中元素的值会是什么样的呢?是一个模原创 2017-12-02 22:54:10 · 361 阅读 · 0 评论 -
Jzoj5234 外星人的路径
有一个外星人控制了你的大脑。一开始你处于原点(0,0)。外星人有一个由(R,U,D,L)组成的长度为M 的操作序列,分别代表(右,上,下,左)。平面上有N 个关键点,每当外星人给出一个操作,你需要在这个方向上找到最近的一个关键点,并走到那个点上。保证输入数据合法。100%的数据,N,M≤100000,xi,yi≤200000。这样,我们搞2个权值线段树,一个存横坐标一个存纵坐标原创 2017-11-16 16:45:19 · 327 阅读 · 0 评论 -
Jzoj4838 I like Matrix!
(I DO NOT like matrix!!!)首先我们可以暴力 O(nmq)考虑压位(bitset)可以得到60pts正解:我们发现,这些操作如果用边连接起来会形成一颗树(每个节点必然入度为1)那我们考虑用离线方法,将所有的操作连接起来,dfs遍历整颗操作树,每个操作都暴力修改&还原这样最多就是O(nq)的(然而我并不认为O(nq)能过,因为n)#include原创 2017-10-30 21:46:27 · 364 阅读 · 0 评论 -
Jzoj4840 小W砍大树
模拟就好,dfs模拟,记录深度计算#include#includechar s[32010],*S; int dijk(char*& s,int d){ int ret=(~d&1),v; for(;*s!=')';++s){ if(*s=='('){ v=dijk(++s,d+1); ret=(d&1?ret|v:ret&v); } if(*s=='T'){ v=1;r原创 2017-10-30 16:53:22 · 454 阅读 · 0 评论 -
Jzoj3769【NOI2015模拟8.14】A+B
完成斐波那契进制下的加法运算第一位为1,第二位为2,依次类推。。这里其实很简单,只是要考虑一下进位即可首先连续两位不为零直接向前进位即可但是不能解决问题,因为可能出现一个位上面的值大于1那么我们可以这样做,设连续的四位分别为:0,0,2,0那么我们可以将其变成1,0,0,1这样就相当于一次进位了,多次重复以上的进位过程即可这里可以加上第0位方便运算#includ原创 2017-09-27 21:32:40 · 484 阅读 · 0 评论 -
Jzoj4764 Brothers
在遥远的西方有一个古老的王国,国王将他的王国分成了网格状,每一块称之为一个城市。在国王临死前,他将这些城市分给了自己的N个儿子(编号为0到N-1)。然而这N个王子的关系不是很好,0讨厌1,1讨厌2,2讨厌3……N-1讨厌0。在国王死后,这种不好的关系使得王子之间爆发了战争。战斗只会在相邻的两个城市之间爆发(共有一条边称之为相邻),并且只有当A讨厌B时,A才会对B发起战斗,结果必定是A获得这次战原创 2017-10-24 08:02:37 · 353 阅读 · 0 评论 -
Jzoj4778 数列编辑器
我们发现前四个操作可以用双向链表维护,而最后一个操作有一个限制就是1#include#include#include#define N 1000010using namespace std;int l[N],r[N],s[N]; char c[5];int w[N],f[N]={-129},n=0,m,t,cnt=0;int main(){ freopen("editor.原创 2017-10-24 20:33:52 · 295 阅读 · 0 评论 -
51Nod1502 苹果曼和纸
题目点这里漏写博客好多天了,赶快来补这道题是一个裸的模拟题,注意到纸片总长度不会增加,所以用一个带翻转的splay来维护一下每次将前半段翻转和后一段做加法合并就好了,均摊logn#pragma GCC opitmize("O3")#pragma G++ opitmize("O3")#include#include#include#define N 100010#defi原创 2018-03-22 21:33:48 · 250 阅读 · 0 评论