公平分队 #pragma comment(linker, "/STACK:102400000,102400000") #include<stdio.h> #include<string.h> #include<stdlib.h> #include<vector> #include<algorithm> #include<iostream> #include<map> #include<queue&…
描述 给定一个包含N个单词的字典:{W1, W2, W3, ... WN},其中第i个单词Wi有具有一个权值Vi. 现在小Hi要进行M次查询,每次查询包含一个前缀字符串Pi和一个后缀字符串Si.他希望知道同时以Pi为前缀并且以Si为后缀的单词中,权值最大的单词的权值是多少? 假设字典包含"hihocoder"."hijacker"和"hiker",权值依次是30.20和10. 那么对于查询前缀="hi",后缀="er…
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Ho在玩一款类似俄罗斯方块的游戏.与原版俄罗斯方块不同的是,落下方块都是长度不一的横向长条,并且不能移动也不能变成竖直方向. XXXXXX <- 长度为6的横向长条. 第i个长条的最左端的格子坐标是Li,最右端的格子坐标是Ri:长条从很高的位置下落,中途遇到地面或者受到之前长条支撑,就会停在当前高度. 你能计算出每个长条最后停留的高度是多少吗? 直接停在地面上的长条高度视为1. 例如5个长条依次下落的位置是[10,…
描述 给一个整数N,请你求出以N为分母的最简(既约)真分数中第K小的是多少? 输入 两个整数N个K. 对于30%的数据,1 <= N <= 1000000 对于100%的数据,1 <= N <= 10000000000 且 1 <= K <= φ(N).其中φ(N)是欧拉函数,也即1~N中与N互质的数的个数. 输出 一个整数表示答案的分子 样例输入 100 10 样例输出 23 思路: 显然和欧拉函数关系不大...开始思路已经很接近了.分解质因子,然后二分1到Mid中与…
描述 如下图所示,在4x4的棋盘上有X和Y两种棋子各若干枚:O表示空格. OXXY YOOX XOOY XOXX 小Hi每次可以选择任意一枚棋子,将它移动到上下左右相邻的空格中. 小Hi想知道最少移动多少次可以达到胜利局面:有4个X或者4个Y连成一行.一列或者对角线(两条对角线都算胜利). 输入 4x4的棋盘 输出 达成胜利最少需要的步数.如果小Hi无论如何也达不到胜利局面,输出-1. 样例输入 OXXY YOOX XOOY XOXX 样例输出 2  思路: 数据小,达到目标的最小步骤问题,多半…
描述 小Hi和小Ho在玩一个战争游戏.游戏中2N个战斗单位,其中第i个单位的战斗力是Ai. 现在小Hi和小Ho要各选N个单位组成队伍,当然他们都希望自己队伍的总战斗力越大越好. 为了使分队更加公平,经过亲切友好的磋商,小Hi和小Ho达成共识按照以下步骤确定分队: 1. 小Ho将2N个单位分成两队,每队N个战斗单位:然后自己选择其中一队,把另一队给小Hi. 2. 小Hi有权利要求交换一对战斗单位:如果他行使这项权利,他可以任选自己队中的一个战斗单位,与小Ho队中任意一个战斗单位交换. 假设小Hi和…
[题目链接]:http://hihocoder.com/problemset/problem/1505 [题意] [题解] 考虑Meet in the middle. 因为两个数的和不是很大; 直接用数组搞hash就好; 先 for (int i = 1;i <= n) for (int j = i+1;j<= n;j++) cnt[a[i]+a[j]]++; 弄出散列表 然后再两重for 循环枚举另外两个元组 k,l 但是 不能仅仅靠 cnt[a[k]+a[l]来递增答案; 因为可能有其他的…
[Offer收割]编程练习赛61 A:最小排列 给定一个长度为m的序列b[1..m],再给定一个n,求一个字典序最小的1~n的排列A,使得b是A的子序列. 贪心即可,b是A的子序列,把不在b中的元素,从小到大放在队列中,再把b按顺序放入另一个队列中,每次取出两队列中较小值即可. #include<bits/stdc++.h> using namespace std; typedef long long ll; ]; queue<int>q1, q2; vector<int&g…
描述 最近天气炎热,小Ho天天宅在家里叫外卖.他常吃的一家餐馆一共有N道菜品,价格分别是A1, A2, ... AN元.并且如果消费总计满X元,还能享受优惠.小Ho是一个不薅羊毛不舒服斯基的人,他希望选择若干道不同的菜品,使得总价在不低于X元的同时尽量低. 你能算出这一餐小Ho最少消费多少元吗? 输入 第一行包含两个整数N和X,(1 <= N <= 20, 1 <= X <= 100) 第二行包含N个整数A1, A2, ..., AN.(1 <= Ai <= 100)…
[Offer收割]编程练习赛46赛后题解 A.AEIOU 分析…