Codeforces 1037 H. Security】的更多相关文章

\(>Codeforces \space 1037\ H. Security<\) 题目大意 : 有一个串 \(S\) ,\(q\) 组询问,每一次给出一个询问串 \(T\) 和一个区间 \([l,r]\) ,要求找出 \(S\) 在 \([l,r]\) 之间的子串中字典序大于 \(T\) 且最小的 \(1 \leq |S|\leq 10^5, 1\leq q \leq 2 \times 10^5\) 解题思路 : 其实这个题一点意思都没有,就是一个 \(sam\) + 线段树合并裸题.. 但…
题目链接:Perfect Security 题意:给出N个数代表密码,再给出N个数代表key.现在要将key组排序,使key组和密码组的亦或所形成的组字典序最小. 题解:要使密码组里面每个数都找到能使其亦或和最小的数可以将key建成一棵字典树(这里建树方式很关键,可以每个数都从2^31开始建树,这样可以使我们在遍历树查询更加方便).之后再遍历密码组每次在字典树里面找到一个能使它亦或和最小的数,再将这个数从字典树中删掉...  字典树太久不写,很多东西都忘记了! #include<bits/std…
就像title说的,是昨天(2017/9/17)周赛的两道水题…… 题目链接:http://codeforces.com/problemset/problem/14/A time limit per test: 1 second memory limit per test: 64 megabytes A boy Bob likes to draw. Not long ago he bought a rectangular graph (checked) sheet with n rows and…
C. Perfect Security time limit per test3.5 seconds memory limit per test512 megabytes inputstandard input outputstandard output Alice has a very important message M consisting of some non-negative integers that she wants to keep secret from Eve. Alic…
Perfect Security 题意:给你一个A[i]数组, 再给你一个B[i]数组, 现在用选取 B[i] 数组中的一个 去和 A[i] 数组里的一个元素去进行异或操作, B[i]数组的元素只能用一次,现在求A[i]数组异或后的最小字典序. 题解:将B[I]数组按照2进制分解之后开一个字典树, 然后匹配每个A[i]中的元素就好了. 代码: #include<bits/stdc++.h> using namespace std; #define LL long long #define UL…
Description 给出一个字符串 \(S\). 给出 \(Q\) 个操作,给出 \(L, R, T\),求字典序最小的 \(S_1\),使得 \(S^\prime\) 为\(S[L..R]\) 的子串,且 \(S^\prime\) 的字典序严格大于 \(T\).输出这个 \(S^\prime\) ,如果无解输出 -1. Hint \(1\le |S|\le 10^5\) \(1\le Q\le 2\times 10^5\) \(1\le L\le R\le |S|\) \(1\le \su…
Problem H. Hell on the MarketsTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=86821#problem/H Description Most financial institutions had become insolvent during financial crisis and went bankrupt or…
题解: E-trips 哎哎哎好傻逼啊 没有想到算不能的一直在想怎么算能的 太傻逼了 其实很简单 我们只需要对好友<=k的首先dfs一下给他连接着的朋友-1 然后如果小于了就递归下去 这个正确性是比较好想的 最后剩下的每个都是好友>=k个的并且都是这之间的 我们把他们都选了就可以了 这样不支持连边但是可以删边,所以倒着做就可以了 F - Maximum Reduction 大水题 会发现要求的长度为k,2k-1,3k-2,4k-3的最大值 单调栈维护前驱后继 然后前缀和优化一下求答案就完了 #…
<题目链接> 题目大意: 给定两个长度为n的序列,可以改变第二个序列中数的顺序,使得两个序列相同位置的数异或之后得到的新序列的字典序最小. 解题分析: 用01字典树来解决异或最值问题.因为是改变第二个序列的顺序,即按照第一个序列的顺序输出异或结果,所以我们将第二个序列建树.然后用第一个序列在树上进行查询.然后就是01字典树基本操作,因为每个数能够被使用一次,所以每个节点加上$num[N]$数组标记,并且加上del操作. #include <bits/stdc++.h> using…
传送门 01trie板子题. 给出两个数列,允许把第二个数列重新排列. 求使得两个数列每个位置对应的数的异或值和成为最小值的每个位置的异或和. 把第二个数列插入到01trie里面然后对于第一个数列中的数挨个询问最小异或和即可. 代码: #include<bits/stdc++.h> #define ri register int using namespace std; const int N=3e5+5,P=30; int n,son[N*30][2],siz[N*30],a[N],tot=…