#1123 : 好配对 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个序列a和b,每个序列中可能含有重复的数字. 一个配对(i,j)是一个好配对当从第一个序列中选出一个数ai,再从第二个序列中选出一个数bj且满足ai>bj. 给出两个序列,问存在多少个好配对. 输入 输入包含多组数据,数据第一行一个整数T,表示数据组数.(T<=5) 每组数据第一行包含两个整数n和m.(0<n,m<=105) 接下来n行,每行两个整数x和y,表示在第一个序列中有…
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,…
clj在某场hihoCoder比赛中的一道题,表示clj的数学题实在6,这道图论貌似还算可以... 题目链接:http://hihocoder.com/problemset/problem/1167 由于是中文题目,题意不再赘述. 对于任意两条小精灵的活动路径a和b,二者相交的判断条件为b的两个端点的LCA在a的路径上:那么我们可以首先将每个活动路径端点的LCA离线预处理出来,对每个节点LCA值+1. 然后以某个节点(我选择的是节点1)为根进行深搜,算出一条从节点1到节点x的LCA值和,那么任意…
题目地址:http://hihocoder.com/problemset/problem/1264 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 我们说两个字符串是非常相似的,当且仅当它们的编辑距离小于等于1. 现在我们有两个字符串A和B, 每个单位时间你可以交换字符串A的相邻的两个字符. 问最少需要多少时间,你可以让A和B变得非常相似?保证存在一种这样的方案. 输入 第一行一个字符串,表示A. 第二行一个字符串,表示B. 所有字符串都仅有英文小写字母组成. A和…
题目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 输出 仅一行:一个非负整数表示答案 样例输…
题目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 输出 一个非负正数,表示答…
题目: 一个n × n的矩阵,其中每个位置都是一个非负整数. 一个福字被定义成是大小为 k 的正方形,满足其中的每个位置上的数都恰好比他的左边的那个和上边的那个大1(如果左边或上边的那个不存在的话就无此要求). 比如 1 2 3 2 3 4 3 4 5 就是一个福字.(注意左上角可以是任何非负整数). 你想找到这个矩阵中最大的福字的大小. 题解:判断正方形的dp,但是要注意有细节 首先开两个二维数组: hor[i][j]:i行j列对于左方是否成立 ver[i][j]:i行j列对于上方是否成立 接…
某蒟蒻成功的·写出了T1并rank16...小岛的题目真难... 传送门:http://hihocoder.com/contest/challenge26 T1 如果你想要暴力枚举的话显然是不行的 如果你想要打表找规律的话显然也是不行的 可以(很容易地)想到逆推法 因为每一个n都是由某两个数结合而成 所以只要随机两个数并检验就可以了 细节就不明说了. Code: #include <ctime> #include <cstdio> #include <cstring>…
官方题解: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…
[题目链接]:http://hihocoder.com/problemset/problem/1509 [题意] [题解] 每次找到相邻两个数的二进制形式中; 不同的最高位; 显然S在这一位必然是确定的; 必须在这一位确定数字让a[i]< a[i+1]; 至于更高位的,它们的数字是相同的,以及更低位的; 它们都任意; 因为要对于所有的i∈[1..n-1]都满足要求 所以看看哪些位置最后是确定的; (或者发生了抵触->直接输出0) 然后剩下的位置的个数为x; 则答案就为2^x; [Number…
题目链接: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) 输出 对…
萌新第一次打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<…
描述 给定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…
题目链接 比赛链接 \(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表示奇…
时间限制:10000ms 单点时限:1000ms 内存限制:256MB   描述 Rowdark是一个邪恶的魔法师.在他阅读大巫术师Lich的传记时,他发现一类黑魔法来召唤远古生物,鱼丸. 魔法n能召唤类型i鱼丸当且仅当i能够被表示为x xor n*x对于某个正整数x和固定的n. Rowdark想知道类型为[L,R]之间的鱼丸有多少种能被魔法n召唤. 输入 输入第一行包含个整数n(1 ≤ n ≤ 107). 第二行包含两个整数,L, R(0 ≤ L ≤ R ≤ 107). 输出 一行一个整数表示…
  时间限制: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…
多打打不同的比赛,找经验啊 题目4 : 不上升序列 时间限制:40000ms 单点时限:2000ms 内存限制:256MB 描述 给定一个长度为 n 的非负整数序列 a[1..n]. 你每次可以花费 1 的代价给某个 a[i] 加1或者减1. 求最少需要多少代价能将这个序列变成一个不上升序列. 输入 第一行一个正整数 n. 接下来 n 行每行一个非负整数,第 i 行表示 a[i]. 1 ≤ n ≤ 500000 0 < a[i] ≤ 109 输出 一个非负整数,表示答案. 样例解释 [5,3,4…
题目传送门 题意:中文题面 分析:放官方题解,就是从1为根节点深搜记录节点的深度,选出最大的深度的点,将该到达该点的节点都vis掉,然后再重新计算没有vis的点的深度,找最大的相加就是答案.放张图好理解: 收获:计算树的节点的深度 代码: /************************************************ * Author :Running_Time * Created Time :2015-8-31 14:03:09 * File Name :B.cpp ***…
http://hihocoder.com/problemset/problem/1496 题意:中文. 思路:一开始做有一种想法,把所有的数都变成二进制后,最优的情况肯定是挑选所有数中最高位的1能同时有一个以上的数. 例如样例2可以化成: 001 010 100 101 那么肯定挑选最高位的1(第三位)并且有一个以上的数更优,如果没有一个以上那么与之后会变成0. 那么对于这一位应该如何挑选. 一开始想着只挑选最大的两个,但是造出下面的样例: 1001000 1000110 1000110 这样的…
链接:https://www.nowcoder.com/acm/contest/186/A 来源:牛客网 石子游戏 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言524288K 64bit IO Format: %lld 题目描述 Alice和Bob在玩游戏,他们面前有n堆石子,对于这些石子他们可以轮流进行一些操作,不能进行下去的人则输掉这局游戏. 可以进行两种操作: . 把石子数为奇数的一堆石子分为两堆正整数个石子 . 把两堆石子数为偶数的石子合并为一…
算了前三项.....发现是个大水题...   #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). 现在考虑如下生成的斐波那契…
#include<bits/stdc++.h>using namespace std;int n;int nxt[3][100007];char buff[100007];const char *seq="msc",*pat[8]={"022012","020212","002212","012022","020122","002122","01…
思路:这只是逻辑测试题吧,考虑周全就行了.考虑n=m的情况,n>m的情况,m>n的情况. (1)n>m的情况,0比1多几个都是行的,一共有m个“01”,后面补足够多个零即可. (2)n=m的情况,一直输出“01”就行. (3)n<m的情况,只允许m-n=1,其他情况都不行,否则肯定会有两个1在一起. #include <iostream> #include <stdio.h> using namespace std; int main() { //freop…
时间限制:7000ms 单点时限:1000ms 内存限制:256MB 描述 给定两个整数n和m,求是否存在恰好包含n个0和m个1的01串S,使得S中不存在子串"001"和"11". 如果存在符合条件的01串则输出字典序最小的S,否则输出NO. 输入 一行两个整数,表示n和m.(0<=n,m<=100000,0<n+m) 输出 一行一个字符串,为字典序最小的S或者NO. 样例输入 2 3 样例输出 10101 由于不能存在001和11,故只能1010…
Rikka with Sequence V 构造 #pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #include<string.h> #include<stdlib.h> #include<vector> #include<algorithm> #include<iostream> #include<map>…
#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…
hihoCoder挑战赛12 时间限制:1000ms 单点时限:1000ms 内存限制:256MB   描述 There is a strange storehouse in PKU. In this storehouse there are n slots for boxes, forming a line. In each slot you can pile up any amount of boxes. The limitation is that you can only pile a…