【hihoCoder挑战赛28 A】异或排序】的更多相关文章

题目1 : 异或排序 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个长度为 n 的非负整数序列 a[1..n] 你需要求有多少个非负整数 S 满足以下两个条件: (1).0 ≤ S < 260 (2).对于所有 1 ≤ i < n ,有 (a[i] xor S) ≤ (a[i+1] xor S) 输入 第一行一个正整数 n 第二行 n 个非负整数表示序列 a[1..n] 1 ≤ n ≤ 50 0 ≤ a[i] < 260 输出 一个非负正数,表示答…
[题目链接]:http://hihocoder.com/problemset/problem/1509 [题意] [题解] 每次找到相邻两个数的二进制形式中; 不同的最高位; 显然S在这一位必然是确定的; 必须在这一位确定数字让a[i]< a[i+1]; 至于更高位的,它们的数字是相同的,以及更低位的; 它们都任意; 因为要对于所有的i∈[1..n-1]都满足要求 所以看看哪些位置最后是确定的; (或者发生了抵触->直接输出0) 然后剩下的位置的个数为x; 则答案就为2^x; [Number…
题目3 : 树的方差 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 对于一棵 n 个点的带标号无根树,设 d[i] 为点 i 的度数. 定义一棵树的方差为数组 d[1..n] 的方差 给定 n ,求所有带标号的 n 个点的无根树的方差之和. 你需要将答案对 998244353 取模. 方差的定义:https://en.wikipedia.org/wiki/Variance 输入 仅一行:一个正整数 n 2 ≤ n ≤ 106 输出 仅一行:一个非负整数表示答案 样…
题目2 : 二进制翻转 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 定义函数 Rev(x) 表示把 x 在二进制表示下翻转后的值 例如: Rev(4)=1,因为 4 等于(100)B,翻转后是 (001)B,也就是 1 Rev(6)=3,因为 6 等于(110)B,翻转后是 (011)B,也就是 3 定义 Cnt(x) 表示 x 在二进制表示下 1 的个数,求: 输入 仅一行,一个非负整数 n 0 ≤ n ≤ 1015 输出 仅一行:一个非负整数表示答案 样例输…
hihoCoder挑战赛23 A.Emulator 题意 给一张图,有\(N(N \le 300)\)个点, 给出任意两点之间的最短路. 求最多可以去掉多少条边,使得任意两点的最短路长度不变. 思路 若一条边\((i,j)\)可以去掉,那么必然存在路径\(d(i, k) + d(k, j) = d(i, j)\). 代码 hihoCoder_1379 B.Certificate 题意 已知有\(N(N \le 14)\)个变量,变量取值\(0\)或\(1\). 已知\(f(0,0,\cdots,…
题目链接 \(Description\) 给定长为\(n\)的序列\(A\).求有多少\(S\),满足\(0\leq S<2^{60}\),且对于所有\(i\in[1,n-1]\),\(a[i]^{\wedge}S\leq a[i+1]^{\wedge}S\). \(n\leq20\). \(Solution\) 考虑对于\(a,b\),有哪些\(S\)满足\(a^{\wedge}S\leq b^{\wedge}S\). 找出\(a^{\wedge}b\)的最高位\(1\)(也就是\(a,b\)…
题面在这里! 考虑前后两个数 x,y,可以发现S只有在(x xor y)的最高有1位上的取值是要被确定的 (如果x==y那么没有限制),可以推一下什么情况下是1/0. 于是我们模拟一下这个操作,判一判限制有没有矛盾,如果没有矛盾答案就是 2^自由位 #include<bits/stdc++.h> #define ll long long using namespace std; int n,ban[67]; ll now,pre,Xor,c[67],ans=1; int main(){ sca…
描述 给定一个长度为 n 的非负整数序列 a[1..n] 你需要求有多少个非负整数 S 满足以下两个条件: (1).0 ≤ S < 2^60 (2).对于所有 1 ≤ i < n ,有 (a[i] xor S) ≤ (a[i+1] xor S) 输入 第一行一个正整数 n 第二行 n 个非负整数表示序列 a[1..n] 1 ≤ n ≤ 50 0 ≤ a[i] < 2^60 输出 一个非负正数,表示答案 样例输入 3 1 2 3 样例输出 288230376151711744分析:二进制,…
题意 题目链接 Sol 挺简单的吧.考虑两个元素什么时候不满足条件 设\(a_i\)与\(a_i + 1\)最高的不同位分别为0 1,显然\(S\)的这一位必须为\(0\),否则这一位必须为\(1\) 剩下的就没有限制条件了 时间复杂度:\(nlogn\)??????!!!!!! #include<bits/stdc++.h> #define LL long long #define int long long using namespace std; const int MAXN = 62,…
  时间限制:6000ms 单点时限:1000ms 内存限制:256MB   描述 你在赌场里玩梭哈,已经被发了4张牌,现在你想要知道发下一张牌后你得到顺子的概率是多少? 假定赌场使用的是一副牌,四种花色的A.2.3.....J.Q.K共52张,这副牌只发给你了4张,你的剩下一张牌从剩下48张中任意取出一张. 顺子指的是点数连续的五张牌,包括10.J.Q.K.A这种牌型(不包含同花顺,即构成顺子的五张牌花色不能相同).参见:https://zh.wikipedia.org/wiki/%E6%92…
描述 给定一个长度为 n 的非负整数序列 a[1..n] 你需要求有多少个非负整数 S 满足以下两个条件: (1).0 ≤ S < 260 (2).对于所有 1 ≤ i < n ,有 (a[i] xor S) ≤ (a[i+1] xor S) 输入 第一行一个正整数 n 第二行 n 个非负整数表示序列 a[1..n] 1 ≤ n ≤ 50 0 ≤ a[i] < 260 输出 一个非负正数,表示答案 样例输入 3 1 2 3 样例输出 288230376151711744 题解 对于两个相…
hihocoder #1343:题目 解释:一个学习小组,一共有N个学员,一个主管.每个学员都有自己的导师(一个或者多个),导师可以是其他学员也可以是主管.每周学员都要把自己的学习报告和收到的报告提交给自己的导师,这个团队设计很合理,没有回环(投递出去的报告不会回到自己手中),并且所有的报告最终都会投递到主管那里.但这个团队中有的学员会因为其他某个学员不工作而导致报告无法提交到主管手中,我们称这种学员为不可靠的.而不受某个学员不工作而影响到报告提交的就是可靠学员.问题就是找出可靠学员的数量. 输…
题目地址:http://hihocoder.com/problemset/problem/1264 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 我们说两个字符串是非常相似的,当且仅当它们的编辑距离小于等于1. 现在我们有两个字符串A和B, 每个单位时间你可以交换字符串A的相邻的两个字符. 问最少需要多少时间,你可以让A和B变得非常相似?保证存在一种这样的方案. 输入 第一行一个字符串,表示A. 第二行一个字符串,表示B. 所有字符串都仅有英文小写字母组成. A和…
某蒟蒻成功的·写出了T1并rank16...小岛的题目真难... 传送门:http://hihocoder.com/contest/challenge26 T1 如果你想要暴力枚举的话显然是不行的 如果你想要打表找规律的话显然也是不行的 可以(很容易地)想到逆推法 因为每一个n都是由某两个数结合而成 所以只要随机两个数并检验就可以了 细节就不明说了. Code: #include <ctime> #include <cstdio> #include <cstring>…
萌新第一次打hihoCoder的比赛有点慌 T1 T1并不是特别难想到dp就好做了 显而易见的是一个01背包问题 Code: #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; ; ],son[],x; int main() { cin>>n;memset(son,,sizeof son); ;i<…
clj在某场hihoCoder比赛中的一道题,表示clj的数学题实在6,这道图论貌似还算可以... 题目链接:http://hihocoder.com/problemset/problem/1167 由于是中文题目,题意不再赘述. 对于任意两条小精灵的活动路径a和b,二者相交的判断条件为b的两个端点的LCA在a的路径上:那么我们可以首先将每个活动路径端点的LCA离线预处理出来,对每个节点LCA值+1. 然后以某个节点(我选择的是节点1)为根进行深搜,算出一条从节点1到节点x的LCA值和,那么任意…
题目链接 比赛链接 \(Description\) \(Solution\) 参考:https://www.cnblogs.com/SovietPower/p/9781573.html 暴力:\(f[i][j][k]\)表示前\(i\)个数,与起来为\(j\),异或和为\(k\)的方案数.复杂度\(O(n*4^{13})\). 考虑位运算的性质,最后怎么得到某一位的1:&要求所有数这一位为1,^只需判这一位为1的数的奇偶性. 所以我们用13位三进制s表示13位01的状态(2表示全1,0/1表示奇…
题意 给定若干组由数字构成的字符串,求所有不重复子串的和(把他们看成十进制),答案mod(1e9+7) 题解: 类似后缀数组的做法,把字符串之间用':'连接,这里用':'是因为':'的ascii码恰好是9的下一个 然后建立后缀自动机. 之后把其实只要把其中的所有':'边删去,就可以进行转移了 如果x连向了y,边权是c,那么有转移 dp[y] += dp[x]*10 + c*sz[x] 所以只要拓扑排序一下就好 (写这题wa了好几次,主要是在删边建立新图的过程出了问题) #include <ios…
官方题解:https://media.hihocoder.com/contests/challenge34/tutorials-previewed.pdf 题目链接:http://hihocoder.com/problemset/problem/1781 题意问对于给定序列A,是否存在一个整数k, 使得A冒泡k轮后变成序列B. 这题一种做法是像官方题解一样写个计算区间最值的数据结构. 而我是另一种做法,通过的逆序数 来判断A怎样能变化到B. 例子 首先我举一个例子: 对于序列  A 8 7 5…
#1595 : Numbers 时间限制:8000ms 单点时限:1000ms 内存限制:256MB 描述 给定n个整数常数c[1], c[2], ..., c[n]和一个整数k.现在需要给2k个整数变量x[1], x[2], ..., x[k], y[1], y[2], ..., y[k]赋值,满足 (1)对于所有1 ≤ i ≤ k,都有x[i] ≤ y[i]. (2)对于所有1 ≤ i ≤ n,都存在至少一个j (1 ≤ j ≤ k),使得x[j] ≤ c[i] ≤ y[j]. 求出S=(y…
题目链接:http://hihocoder.com/problemset/problem/1034 数据结构题,由于每个魔法单位有着不同的回复速度和上限,所以不能根据吸收时间点进行查询和更新.但是如果知道每个人在哪些时间点被吸收了,那么可以按照每个单位的情况更新,具体操作是:时间间隔超过Mi/Ri的则被吸收的值为Mi(设这样的间隔有x个),否则为Ri*时间间隔(设这样的间隔总时间长度为y),此魔法单位被吸收的总量为x*Mi+y*Ri. 如何快速求每个单位在哪些时间被吸收:维护一个有序序列记录时间…
#1191 : 小W与网格 描述 给定一个n*m的网格,左上角(1, 1),右下角(n, m). 小w在(i, j),他会从"上左下右"四个方向中选定两个不同但正交的方向,然后他只能沿着这两个方向走,直到他走出网格. 小w想知道有多少种不同的走法. 两个走法不同当且仅当所经过的格子的集合不同. 输入 输入包含多组数据. 每组数据一行四个整数n, m, i, j.(1 <= i <= n <= 100, 1 <= j <= m <= 100) 输出 对…
描述 给定n个关于X的不等式,问最多有多少个成立. 每个不等式为如下的形式之一: X < C X <= C X = C X > C X >= C 输入 第一行一个整数n. 以下n行,每行一个不等式. 数据范围: 1<=N<=50,0<=C<=1000 输出 一行一个整数,表示最多可以同时成立的不等式个数. 样例输入 4 X = 1 X = 2 X = 3 X > 0 样例输出 2 题目并没有要求X一定是整数.所以如果算法是枚举X然后统计成立的不等式数目…
转载请注明出处: http://www.cnblogs.com/fraud/          ——by fraud 题目1 : 不等式 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定n个关于X的不等式,问最多有多少个成立. 每个不等式为如下的形式之一: X < C X <= C X = C X > C X >= C 输入 第一行一个整数n. 以下n行,每行一个不等式. 数据范围: 1<=N<=50,0<=C<=1000…
算了前三项.....发现是个大水题...   #include<stdio.h> int main() { int n; while (~scanf("%d", &n)) { double k = 1.0*n; printf(); } ; } 时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 大家对斐波那契数列想必都很熟悉: a0 = 1, a1 = 1, ai = ai-1 + ai-2,(i > 1). 现在考虑如下生成的斐波那契…
总结- A-开始觉得是找规律,最开始模拟当时我觉得如果L达到1e9的范围的话,岂不是要加1e9次,模拟也就没有认真写,现在想来,后面由于加的不再是1,而是我前面的值,这样相当了一个斐波那契的类型,而斐波那契的增子速度是非常快的,因此时间复杂度并不是太高. #include<iostream> #include<stdio.h> #include<algorithm> #include<string.h> #define ll long long using…
hihocoder1509 思路 对于每两个数,从二进制的高位到低位考虑,发现,若前面一个的当前位是1,后面一个的当前位置是0,那么s的当前位置必须是1.反之,若前面是0,后面是1,那么s的当前位置必须是0.如果出现矛盾的情况则直接输出0.如果两个数高位已经可以判断出大小了,那么后面的位置随便选就可以了. 代码 #include<cstdio> #include<iostream> #include<cstring> using namespace std; typed…
链接:https://ac.nowcoder.com/acm/contest/217/B来源:牛客网 msc和mcc 题目描述 msc和mcc是一对好朋友,有一天他们得到了一个长度为n的字符串s. 这个字符串s十分妙,其中只有’m’,’s’和’c’三种字符. 定义s[i,j]表示s中从第i个到第j个字符按顺序拼接起来得到的字符串. 定义一个字符串t的子序列为从t中选出一些位置并且将这些位置上面的字符按顺序拼接起来得到的字符串. 两个子序列重合当且仅当存在一个位置x使得两个子序列同时选择了位置x.…
A:msc和mas Solved. 考虑斐波那契数列,即最多加45次即会超过1e9,直接暴力即可 #include <bits/stdc++.h> using namespace std; int a, b, l; int solve(int st) { int A = a, B = b; ) { ) { if (A > l) return printf("Yes"); else { int B0 = B; * B0) B += A; } } else { if (B…
思路:我刚开始是想旋转四次坐标,每次用bit计算每个点左上角的点到这个点的距离,TLE了.... 这种算曼哈顿距离的可以将x 轴和 y 轴独立开来,分别计算. #include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk make_pair #define pii pair<int, int> using namespace std; + ; ; const in…