Codeforces Round #325 (Div. 2) F. Lizard Era: Beginning meet in the mid
F. Lizard Era: Beginning
Time Limit: 1 Sec
Memory Limit: 256 MB
题目连接
http://codeforces.com/contest/586/problem/F
Description
In the game Lizard Era: Beginning the protagonist will travel with three companions: Lynn, Meliana and Worrigan. Overall the game has n mandatory quests. To perform each of them, you need to take exactly two companions.
The attitude of each of the companions to the hero is an integer. Initially, the attitude of each of them to the hero of neutral and equal to 0. As the hero completes quests, he makes actions that change the attitude of the companions, whom he took to perform this task, in positive or negative direction.
Tell us what companions the hero needs to choose to make their attitude equal after completing all the quests. If this can be done in several ways, choose the one in which the value of resulting attitude is greatest possible.
Input
The first line contains positive integer n (1 ≤ n ≤ 25) — the number of important tasks.
Next n lines contain the descriptions of the tasks — the i-th line contains three integers li, mi, wi — the values by which the attitude of Lynn, Meliana and Worrigan respectively will change towards the hero if the hero takes them on the i-th task. All the numbers in the input are integers and do not exceed 107 in absolute value.
,Ci,即此题的初始分值、每分钟减少的分值、dxy做这道题需要花费的时间。
Output
If there is no solution, print in the first line "Impossible".
Otherwise, print n lines, two characters is each line — in the i-th line print the first letters of the companions' names that hero should take to complete the i-th task ('L' for Lynn, 'M' for Meliana, 'W' for Worrigan). Print the letters in any order, if there are multiple solutions, print any of them.
Sample Input
7
0 8 9
5 9 -2
6 -8 -7
9 4 5
-4 -9 9
-4 5 2
-6 8 -7
Sample Output
LM
MW
LM
LW
MW
LM
LW
HINT
题意
有n个任务,有三个人
每次任务都必须派两个人出去,每个任务都会使得人涨能力值,不同人涨的不一样
然后问你有没有一种方案可以使得所有人最后的能力值都一样
如果有多种方案,请输出可以最后使得能力值最大的一种方案
题解:
meet in the mid,状态存三个量就好了A,A-B,B-C,然后就可以瞎搜了,注意最后要输出方案,所以就直接把中间的过程都状压一下就行了
代码:
#include<iostream>
#include<stdio.h>
#include<map>
#include<vector>
using namespace std; int mid,n;
int a[],b[],c[];
map<pair<int,int> ,pair<int,long long> >H;
pair<int,long long> ans;
void dfs1(int step,long long sta,int A,int B,int C)
{
if(step==mid+)
{
pair<int,long long> temp;
temp = H[pair<int,int>(A-B,B-C)];
if(temp.second == )
H[pair<int,int>(A-B,B-C)] = pair<int,long long>(A,sta);
else
H[pair<int,int>(A-B,B-C)] = max(temp,pair<int,long long>(A,sta));
return;
}
dfs1(step+,sta<<|,A,B+b[step],C+c[step]);
dfs1(step+,sta<<|,A+a[step],B,C+c[step]);
dfs1(step+,sta<<|,A+a[step],B+b[step],C);
}
void dfs2(int step,long long sta,int A,int B,int C)
{
if(step==n+)
{
pair<int,long long> temp = H[pair<int,int>(B-A,C-B)];
if(temp.second==)return;
ans = max(ans,pair<int,long long>(A+temp.first,temp.second<<(n-mid<<)|sta));
return;
}
dfs2(step+,sta<<|,A,B+b[step],C+c[step]);
dfs2(step+,sta<<|,A+a[step],B,C+c[step]);
dfs2(step+,sta<<|,A+a[step],B+b[step],C);
}
int main()
{
ans.first = -;
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d%d%d",&a[i],&b[i],&c[i]);
mid = (n+)/;
dfs1(,,,,);
dfs2(mid+,,,,);
if(ans.first == -)return puts("Impossible");
vector<int> Ans;
for(int i=;i<=n;i++)
{
Ans.push_back(ans.second&);
ans.second>>=;
}
for(int i=Ans.size()-;i>=;i--)
{
if(Ans[i]==)
cout<<"LM"<<endl;
else if(Ans[i]==)
cout<<"LW"<<endl;
else
cout<<"MW"<<endl;
} }
Codeforces Round #325 (Div. 2) F. Lizard Era: Beginning meet in the mid的更多相关文章
- Codeforces Round #325 (Div. 1) D. Lizard Era: Beginning
折半搜索,先搜索一半的数字,记录第一个人的值,第二个人.第三个人和第一个人的差值,开个map哈希存一下,然后另一半搜完直接根据差值查找前一半的答案. 代码 #include<cstdio> ...
- Codeforces Round #485 (Div. 2) F. AND Graph
Codeforces Round #485 (Div. 2) F. AND Graph 题目连接: http://codeforces.com/contest/987/problem/F Descri ...
- Codeforces Round #486 (Div. 3) F. Rain and Umbrellas
Codeforces Round #486 (Div. 3) F. Rain and Umbrellas 题目连接: http://codeforces.com/group/T0ITBvoeEx/co ...
- Codeforces Round #501 (Div. 3) F. Bracket Substring
题目链接 Codeforces Round #501 (Div. 3) F. Bracket Substring 题解 官方题解 http://codeforces.com/blog/entry/60 ...
- Codeforces Round #499 (Div. 1) F. Tree
Codeforces Round #499 (Div. 1) F. Tree 题目链接 \(\rm CodeForces\):https://codeforces.com/contest/1010/p ...
- Codeforces Round #376 (Div. 2)F. Video Cards(前缀和)
题目链接:http://codeforces.com/contest/731/problem/F 题意:有n个数,从里面选出来一个作为第一个,然后剩下的数要满足是这个数的倍数,如果不是,只能减小为他的 ...
- Codeforces Round #271 (Div. 2) F. Ant colony (RMQ or 线段树)
题目链接:http://codeforces.com/contest/474/problem/F 题意简而言之就是问你区间l到r之间有多少个数能整除区间内除了这个数的其他的数,然后区间长度减去数的个数 ...
- Codeforces Round #271 (Div. 2) F题 Ant colony(线段树)
题目地址:http://codeforces.com/contest/474/problem/F 由题意可知,最后能够留下来的一定是区间最小gcd. 那就转化成了该区间内与区间最小gcd数相等的个数. ...
- Codeforces Round #479 (Div. 3) F. Consecutive Subsequence (简单dp)
题目:https://codeforces.com/problemset/problem/977/F 题意:一个序列,求最长单调递增子序列,但是有一个要求是中间差值都是1 思路:dp,O(n)复杂度, ...
随机推荐
- Can't obtain the input stream from /docProps/app.xml
今天在做poi修改样式时,报了以下错误: Exception in thread "main" org.apache.poi.POIXMLException: java.io.IO ...
- innodb master thread 工作原理
参考 innodb参数汇总 InnoDB的Master Thread工作原理 innodb_max_dirty_pages_pct 默认值 show variables like 'innodb_m ...
- c语言变量名称与变量
0x00030 , 0x00031 ,0x00032 ,0x00033 是四个字节,用来存放0x00010(字母a的地址)
- 嵌入式Linux启动过程中的问题积累
嵌入式Linux启动过程中的问题积累 Dongas 07-12-19 1.Bad Magic Number ## Booting image at 33000000 ... Bad Magic Num ...
- innodb force recovery
innodb force recovery的6种设置: 1.innodb force recovery=1,即使发现了损坏页面也继续让服务器继续运行,这个选项对于备份或者转存当前数据尤为有用2.inn ...
- 缓存你的BITMAP对象
在app中通常最占内存.占流量的元素就是图片了,图片往往又无处不在,特别是伴随着list,GridView或者ViewPager出现,这些图片随着你的滑动操作,时而出现在你的屏幕中,时而消失在屏幕之外 ...
- Swift不可变数组
Objective-C编写了2个不同的类来区分不可变数组(NSArray)和可变数组(NSMutableArray): Swift通过使用常量和变量来区分不可变数组和可变数组. 只要将数组定义为常量, ...
- Clone PDB from same CDB
Clone PDB 用途: 1.用于测试,从生产系统clone数据来进行测试 2.诊断性能问题 Clone PDB Using OMF from same CDB 环境信息: DB Version ...
- 浏览器插件 - Chrome 对 UserScript 的声明头(metadata)兼容性一览
1.这里的UserScript指的是,油猴插件或者Tampermonkey插件等支持的格式如下例子: // ==UserScript== // @name // @namespace http://A ...
- delphi获取mdb密码
function GetPasswordFromAccess(AFileName: string): string;var myms: TMemoryStream; b: array of Byt ...