博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Manthan, Codefest 17
阅读量:5967 次
发布时间:2019-06-19

本文共 7747 字,大约阅读时间需要 25 分钟。

A. Tom Riddle's Diary
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Harry Potter is on a mission to destroy You-Know-Who's Horcruxes. The first Horcrux that he encountered in the Chamber of Secrets is Tom Riddle's diary. The diary was with Ginny and it forced her to open the Chamber of Secrets. Harry wants to know the different people who had ever possessed the diary to make sure they are not under its influence.

He has names of n people who possessed the diary in order. You need to tell, for each person, if he/she possessed the diary at some point before or not.

Formally, for a name si in the i-th line, output "YES" (without quotes) if there exists an index j such that si = sj and j < i, otherwise, output "NO" (without quotes).

Input

First line of input contains an integer n (1 ≤ n ≤ 100) — the number of names in the list.

Next n lines each contain a string si, consisting of lowercase English letters. The length of each string is between 1 and 100.

Output

Output n lines each containing either "YES" or "NO" (without quotes), depending on whether this string was already present in the stream or not.

You can print each letter in any case (upper or lower).

Examples
input
6 tom lucius ginny harry ginny harry
output
NO NO NO NO YES YES
input
3 a a a
output
NO YES YES
Note

In test case 1, for i = 5 there exists j = 3 such that si = sj and j < i, which means that answer for i = 5 is "YES".

直接枚举啦,就是判断出现过没

#include 
using namespace std;int main(){ int n; cin >> n; set
s; for (int i = 0; i < n; i++) { string c; cin >> c; if (s.count(c)) puts("YES"); else puts("NO"); s.insert(c); } return 0;}
B. Marvolo Gaunt's Ring
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Professor Dumbledore is helping Harry destroy the Horcruxes. He went to Gaunt Shack as he suspected a Horcrux to be present there. He saw Marvolo Gaunt's Ring and identified it as a Horcrux. Although he destroyed it, he is still affected by its curse. Professor Snape is helping Dumbledore remove the curse. For this, he wants to give Dumbledore exactly x drops of the potion he made.

Value of x is calculated as maximum of p·ai + q·aj + r·ak for given p, q, r and array a1, a2, ... an such that 1 ≤ i ≤ j ≤ k ≤ n. Help Snape find the value of x. Do note that the value of x may be negative.

Input

First line of input contains 4 integers n, p, q, r ( - 109 ≤ p, q, r ≤ 109, 1 ≤ n ≤ 105).

Next line of input contains n space separated integers a1, a2, ... an ( - 109 ≤ ai ≤ 109).

Output

Output a single integer the maximum value of p·ai + q·aj + r·ak that can be obtained provided 1 ≤ i ≤ j ≤ k ≤ n.

Examples
input
5 1 2 3 1 2 3 4 5
output
30
input
5 1 2 -3 -1 -2 -3 -4 -5
output
12
Note

In the first sample case, we can take i = j = k = 5, thus making the answer as 1·5 + 2·5 + 3·5 = 30.

In second sample case, selecting i = j = 1 and k = 5 gives the answer 12.

Create a dynamic programming table of size n·3. In this, dp[i][0] stores maximum of value p·ax for x between 1 and i. Similarly dp[i][1] stores the maximum value of p·ax + q·ay such that x ≤ y ≤ i and dp[i][2] stores maximum value of p·ax + q·ay + r·az for x ≤ y ≤ z ≤ i.

To calculate the dp:

dp[i][0] = max(dp[i - 1][0], p·ai)

dp[i][1] = max(dp[i - 1][1], dp[i][0] + q·ai)

dp[i][2] = max(dp[i - 1][2], dp[i][1] + r·ai)

The answer will be stored in dp[n][2]

#include
using namespace std;typedef long long ll;const int N=1e5+5;ll a[N];ll ans[3];int main(){ ll n,p,q,r; cin>>n>>p>>q>>r; for(int i=1; i<=n; i++) cin>>a[i]; for(int i=0; i<3; i++) ans[i]=-9e18; for(int i=1; i<=n; i++) { ans[0]=max(ans[0],a[i]*p); ans[1]=max(ans[1],ans[0]+q*a[i]); ans[2]=max(ans[2],ans[1]+r*a[i]); } cout<
<
C. Helga Hufflepuff's Cup
time limit per test
2 seconds
memory limit per test
256 megabytes
input
standard input
output
standard output

Harry, Ron and Hermione have figured out that Helga Hufflepuff's cup is a horcrux. Through her encounter with Bellatrix Lestrange, Hermione came to know that the cup is present in Bellatrix's family vault in Gringott's Wizarding Bank.

The Wizarding bank is in the form of a tree with total n vaults where each vault has some type, denoted by a number between 1 to m. A tree is an undirected connected graph with no cycles.

The vaults with the highest security are of type k, and all vaults of type k have the highest security.

There can be at most x vaults of highest security.

Also, if a vault is of the highest security, its adjacent vaults are guaranteed to not be of the highest security and their type is guaranteed to be less than k.

Harry wants to consider every possibility so that he can easily find the best path to reach Bellatrix's vault. So, you have to tell him, given the tree structure of Gringotts, the number of possible ways of giving each vault a type such that the above conditions hold.

Input

The first line of input contains two space separated integers, n and m — the number of vaults and the number of different vault types possible. (1 ≤ n ≤ 105, 1 ≤ m ≤ 109).

Each of the next n - 1 lines contain two space separated integers ui and vi (1 ≤ ui, vi ≤ n) representing the i-th edge, which shows there is a path between the two vaults ui and vi. It is guaranteed that the given graph is a tree.

The last line of input contains two integers k and x (1 ≤ k ≤ m, 1 ≤ x ≤ 10), the type of the highest security vault and the maximum possible number of vaults of highest security.

Output

Output a single integer, the number of ways of giving each vault a type following the conditions modulo 109 + 7.

Examples
input
4 2 1 2 2 3 1 4 1 2
output
1
input
3 3 1 2 1 3 2 1
output
13
input
3 1 1 2 1 3 1 1
output
0
Note

In test case 1, we cannot have any vault of the highest security as its type is 1 implying that its adjacent vaults would have to have a vault type less than 1, which is not allowed. Thus, there is only one possible combination, in which all the vaults have type 2.

 

 这个题我有点懵

树形dp,类似于染色吧

#include 
using namespace std;const int N=1e5+5;const int MD=1e9+7;typedef long long LL;int n, m, k, x;int f[N][11][3], g[11][3];vector < int > V[N];void DFS(int u, int fa){ f[u][0][0] = k - 1; f[u][1][1] = 1; f[u][0][2] = m - k; for(auto &v: V[u]) { if(v == fa) continue; DFS(v, u); memset(g, 0, sizeof(g)); for(int i = x; i>=0; --i) for(int j=x-i; j>=0; --j) { g[i + j][0] = (g[i + j][0] + 1LL * f[u][i][0] * f[v][j][0]) % MD; g[i + j][0] = (g[i + j][0] + 1LL * f[u][i][0] * f[v][j][1]) % MD; g[i + j][0] = (g[i + j][0] + 1LL * f[u][i][0] * f[v][j][2]) % MD; g[i + j][1] = (g[i + j][1] + 1LL * f[u][i][1] * f[v][j][0]) % MD; g[i + j][2] = (g[i + j][2] + 1LL * f[u][i][2] * f[v][j][0]) % MD; g[i + j][2] = (g[i + j][2] + 1LL * f[u][i][2] * f[v][j][2]) % MD; } for(int i = 0; i <= x; ++i) for(int j = 0; j < 3; ++j) f[u][i][j] = g[i][j]; }}int main(){ scanf("%d %d", &n, &m); for(int i = 1; i < n; ++i) { int u,v; scanf("%d %d", &u, &v); V[u].push_back(v); V[v].push_back(u); } scanf("%d %d", &k, &x); DFS(1, 0); int ans = 0; for(int i = 0; i <= x; ++i) for(int j = 0; j < 3; ++j) ans = (ans + f[1][i][j]) % MD; printf("%d\n", ans); return 0;}

 

 

转载于:https://www.cnblogs.com/BobHuang/p/7591545.html

你可能感兴趣的文章
Python算法题----在列表中找到和为s的两个数字
查看>>
Gson解析Json
查看>>
Spring Cloud with Turbine
查看>>
关于Java浮点数运算精度丢失问题
查看>>
各种主流 SQLServer 迁移到 MySQL 工具对比
查看>>
路由访问控制列表的设计
查看>>
使用firefox44版本,弃用chrome
查看>>
《深入理解Java虚拟机》(二)java虚拟机运行时数据区
查看>>
MySQL for Java的SQL注入测试
查看>>
MySQL服务器意外关机-无法启动多实例
查看>>
golang实现人民币小写转大写
查看>>
分布式日志平台--ELKStack实践
查看>>
互联网思维
查看>>
ecshop备份数据 ecshop转移数据 ecshop更换主机
查看>>
手机将与瘦客户机争夺办公桌面
查看>>
ubuntu下针对php的thrift 安装折腾记录
查看>>
使用C#客户端访问FTP服务的一个解决方案
查看>>
对软件测试团队“核心价值”的思考
查看>>
pthread
查看>>
深入理解html5系列-文本标签
查看>>