[题目链接]:http://hihocoder.com/problemset/problem/1516 [题意] [题解] 状态压缩DP+bfs 这个过河问题能用bfs来搞.涨知识了; 首先; 16个人 容易想到用0..216−1来表示3处地方的状态; 即这一边的岸,船上,以及对岸; 对于岸上; 只需要这状态里面,能攻击人的人存在,且它攻击的对象也存在,且能管住这个攻击的人的人不在,则这个状态就是不符合要求的; 而对于船上; 则需要一个掌舵人,否则不行; 然后对于岸上的情况船上的情况也要满足;…
#1515 : 分数调查 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi的学校总共有N名学生,编号1-N.学校刚刚进行了一场全校的古诗文水平测验. 学校没有公布测验的成绩,所以小Hi只能得到一些小道消息,例如X号同学的分数比Y号同学的分数高S分. 小Hi想知道利用这些消息,能不能判断出某两位同学之间的分数高低? 输入 第一行包含三个整数N, M和Q.N表示学生总数,M表示小Hi知道消息的总数,Q表示小Hi想询问的数量. 以下M行每行三个整数,X, Y和S.表…
#1514 : 偶像的条件 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi的学校正面临着废校的大危机.面对学校的危机,小Hi同学们决定从ABC三个班中各挑出一名同学成为偶像. 成为偶像团体的条件之一,就是3名团员之间的身高差越小越好. 已知ABC三个班同学的身高分别是A1..AN, B1..BM 和 C1..CL.请你从中选出3名同学Ai, Bj, Ck使得D=|Ai-Bj|+|Bj-Ck|+|Ck-Ai|最小. 输入 第一行包含3个整数,N, M和L. 第…
[题目链接]:http://hihocoder.com/problemset/problem/1515 [题意] [题解] 带权并查集 relation[x]表示父亲节点比当前节点大多少; 对于输入的x,y,z; 如果z小于0; 则交换x,y同时z取相反数; 然后按照带权并查集的更新方式,对y的根节点的r2的relation[r2]进行更新即可; [Number Of WA] 0 [完整代码] #include <bits/stdc++.h> using namespace std; #def…
[题目链接]:http://hihocoder.com/contest/offers15/problem/1 [题意] [题解] 把3个数组的元素全都合并在一个数组里面; (当然你要记录每个数字原本是在哪一个数组里面的) 然后排个序; 找到原本a,b,c数组中的元素第一次出现的位置 pos[1],pos[2],pos[3]; 然后按照公式直接计算 D=? 然后把,pos[1],pos[2],pos[3]中最小的那个pos[i] 令pos[i]=nex(pos[i]); 然后再重新计算D=? 重复…
描述 最近天气炎热,小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收割]编程练习赛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…
[Offer收割]编程练习赛46赛后题解 A.AEIOU 分析…
A. H国的身份证号码I dfs裸题. 时间复杂度\(O(n^k)\). #include <bits/stdc++.h> #define FOR(i,a,b) for (int i=a; i<=b; ++i) int ans[15], n, k; void dfs(int pos, int pre){ if (pos>n) { FOR(i,1,n) printf("%d",ans[i]); putchar('\n'); return ; } FOR(i,0,k…
题目1 : 九宫 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描写叙述 小Hi近期在教邻居家的小朋友小学奥数.而近期正好讲述到了三阶幻方这个部分,三阶幻方指的是将1~9不反复的填入一个3*3的矩阵其中,使得每一行.每一列和每一条对角线的和都是同样的. 三阶幻方又被称作九宫格,在小学奥数里有一句很有名的口诀:"二四为肩,六八为足.左三右七.戴九履一.五居当中".通过这种一句口诀就行很完美的构造出一个九宫格来. 有意思的是,全部的三阶幻方,都可以通过这样一个九宫…