2018-2019 ACM-ICPC, Asia East Continent Finals Solution
D. Deja vu of … Go Players
签。
#include <bits/stdc++.h>
using namespace std;
int t, n, m; int main()
{
scanf("%d", &t);
while (t--)
{
scanf("%d%d", &n, &m);
for (int i = ; i <= n + m; ++i) scanf("%*d");
puts(n <= m ? "Yes" : "No");
}
return ;
}
I. Misunderstood … Missing
题意:
$有n轮游戏,每一轮有三个参数a_i, b_i, c_i$
初始攻击力为$A = 0, 成长值为D = 0$
每一轮的开头 $A = A + D$
接着三种操作选一个
- 造成$A + a_i点伤害$
- $D = D + b_i$
- $A = A + c_i$
求造成的最大伤害和是多少
思路:
倒着$dp, dp[i][j][k] 表示当前处于第i轮,在后面的轮数中要进行j次攻击,时间点之和为k$
那么到当前点,我们就可以
通过$k\;来算出如果当前点选择第二种操作的贡献$
$dp[i][j][k] = max(dp[i][j][k], dp[i + 1][j][k] + c[i] * j)$
$通过j\;来算出如果当前点选择第三种操作的贡献$
$dp[i][j][k] = max(dp[i][j][k], dp[i + 1][j][k] + (k - i * j) * b[i])$
#include <bits/stdc++.h>
using namespace std; #define ll long long
#define N 110
#define M 6010
int t, n;
ll dp[][N][M], a[N], b[N], c[N]; int main()
{
scanf("%d", &t);
while (t--)
{
scanf("%d", &n);
for (int i = ; i <= n; ++i) scanf("%lld%lld%lld", a + i, b + i, c + i);
for (int i = ; i < ; ++i) for (int j = ; j <= n; ++j) for (int k = ; k <= ; ++k) dp[i][j][k] = -;
dp[n & ^ ][][] = ;
for (int i = n; i >= ; --i)
{
for (int j = ; j <= n; ++j) for (int k = ; k <= ; ++k) if (dp[i & ^ ][j][k] != -)
{
dp[i & ][j + ][k + i] = max(dp[i & ][j + ][k + i], dp[i & ^ ][j][k] + a[i]);
dp[i & ][j][k] = max(dp[i & ][j][k], dp[i & ^ ][j][k] + 1ll * j * c[i]);
dp[i & ][j][k] = max(dp[i & ][j][k], dp[i & ^ ][j][k] + 1ll * (k - j * i) * b[i]);
}
}
ll res = ;
for (int i = ; i <= n; ++i) for (int j = ; j <= ; ++j) res = max(res, dp[][i][j]);
printf("%lld\n", res);
}
return ;
}
L. Eventual … Journey
题意:
有两个阵营,阵营之间的人可以两两之间通过花费1来相互到达
不同阵营之间如果有直接边也可以直接相互到达,如果没有直接边,可以通过间接到达
即先到达一个有边连到对方阵营的同阵营的人,再过去
思路:
考虑花费一共有三种情况
1:同阵营之间的相互到达,不同阵营之间有边可以直接到达
2:不同阵营之间没有直接边,但是有一方有直接边连向对方阵营
3:两个属于不同阵营,且都没有直接边连向对方阵营
要注意m = 0的时候,不同阵营之间不可达
还有 它给出的公共边可能有相同阵营的
#include <bits/stdc++.h>
using namespace std; #define N 100010
int n, m;
int cnt[], zero[], degree[N], vis[N]; int main()
{
while (scanf("%d%d", &n, &m) != EOF)
{
memset(degree, , sizeof degree);
cnt[] = cnt[] = ;
zero[] = zero[] = ;
for (int i = ; i <= n; ++i)
{
scanf("%d", vis + i);
++cnt[vis[i]];
}
if (m == )
{
for (int i = ; i <= n; ++i) printf("%d%c", cnt[vis[i]] - , " \n"[i == n]);
continue;
}
for (int i = , u, v; i <= m; ++i)
{
scanf("%d%d", &u, &v);
if (vis[u] == vis[v]) continue;
++degree[u];
++degree[v];
}
for (int i = ; i <= n; ++i) if (!degree[i])
++zero[vis[i]];
for (int i = ; i <= n; ++i)
{
int res = ;
if (degree[i]) res = cnt[vis[i]] - + degree[i] + (cnt[vis[i] ^ ] - degree[i]) * ;
else res = cnt[vis[i]] - + cnt[vis[i] ^ ] * + zero[vis[i] ^ ];
printf("%d%c", res, " \n"[i == n]);
}
}
return ;
}
2018-2019 ACM-ICPC, Asia East Continent Finals Solution的更多相关文章
- 训练20191009 2018-2019 ACM-ICPC, Asia East Continent Finals
2018-2019 ACM-ICPC, Asia East Continent Finals 总体情况 本次训练共3小时20分钟,通过题数4. 解题报告 D. Deja vu of - Go Play ...
- 2018-2019 ACM-ICPC, Asia East Continent Finals I. Misunderstood … Missing(dp)
题目链接: http://codeforces.com/gym/102056/problem/I 题意: 人物有l两个属性分别是$A,D$ 每个回合人物$A\pm D$ 每个回合有三个选择分别是: 1 ...
- 2018-2019 ACM-ICPC, Asia East Continent Finals部分题解
C:显然每p2个数会有一个0循环,其中22 32 52 72的循环会在200个数中出现,找到p2循环的位置就可以知道首位在模p2意义下是多少,并且循环位置几乎是唯一的(对72不满足但可能的位置也很少) ...
- 2019 ACM/ICPC Asia Regional shanxia D Miku and Generals (二分图黑白染色+01背包)
Miku is matchless in the world!” As everyone knows, Nakano Miku is interested in Japanese generals, ...
- 2017 ACM/ICPC Asia Regional Qingdao Online Solution
A : Apple 题意:给出三个点,以及另一个点,求最后一个点是否在三个点的外接圆里面,如果在或者在边界上,输出“Rejected”,否则输出"Accepted" 思路:先求一个 ...
- 2016 ACM/ICPC Asia Regional Shenyang Online 1009/HDU 5900 区间dp
QSC and Master Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) ...
- hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online
Problem Description Elves are very peculiar creatures. As we all know, they can live for a very long ...
- (二叉树)Elven Postman -- HDU -- 54444(2015 ACM/ICPC Asia Regional Changchun Online)
http://acm.hdu.edu.cn/showproblem.php?pid=5444 Elven Postman Time Limit: 1500/1000 MS (Java/Others) ...
- 2015 ACM/ICPC Asia Regional Changchun Online HDU 5444 Elven Postman【二叉排序树的建树和遍历查找】
Elven Postman Time Limit: 1500/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)T ...
随机推荐
- python2.0_s12_day12_css样式详解
CSScss是英文Cascading Style Sheets的缩写,称为层叠样式表,用于对页面进行美化. CSS 存放方式有三种: 一种写法:在<body></body>内部 ...
- python2.0 s12 day7
开发的第二阶段 网络编程阶段 之所以叫网络编程,是因为,这里面就不是你在一台机器中玩了.多台机器,CS架构.即客户端和服务器端通过网络进行通信的编程了. 首先想实现网络的通信,你得先学网络通信的一个基 ...
- linux安装oracle11g步骤
1. 修改用户限制 root用户:修改 /etc/security/limits.conf 文件,加上下面的参数 oracle soft nproc 2047 oracle hard nproc 16 ...
- 为什么使用eval()将json字符串转换为对象要多加一个小括号
使用eval()将json字符串转换为对象要多加一个小括号: 关于eval()函数的具体用法这里就不多介绍了,具体可以参阅javascript的eval()方法一章节,下面就介绍一下为什么使用eval ...
- CSS-用伪元素制作小箭头(轮播图的左右切换btn)
先上学习地址:http://www.htmleaf.com/Demo/201610234136.html 作者对轮播图左右按钮的处理方法一改往常,不是简单地用btn.prev+btn.next的图片代 ...
- 配置项目使用weblogic的JNDI数据源
项目结构构:Spring Framework + SpirngMVC + SpringData JPA + Maven 1.在weblogic的控制台界面中配置数据源(假定我们配置的数据源的名称为da ...
- JQuery 用法总结
1.隐藏与显示,用于div等等 //隐藏id=myTab下的所有li标签 $("#myTab li").hide(); //动画隐藏,1秒内隐藏该对象 $(); //显示class ...
- 神兽保佑-代码无BUG
┏┓ ┏┓┏┛┻━━━┛┻┓┃ ┃ ┃ ━ ┃┃ ┳┛ ┗┳ ┃┃ ┃┃ ┻ ┃┃ ┃┗━┓ ┏━┛ ┃ ┃ 神兽保佑 ┃ ┃ 代码无BUG! ┃ ┗━━━┓ ┃ ┣┓ ...
- Requested bean is currently in creation: Is there an unresolvable circular reference?
spring容器初始化报错:循环依赖,错误信息如下: Requested bean is currently in creation: Is there an unresolvable circula ...
- 170713、springboot编程之多数据源切换
我们在开发过程中可能需要用到多个数据源,我们有一个项目(MySQL)就是和别的项目(SQL Server)混合使用了.其中SQL Server是别的公司开发的,有些基本数据需要从他们平台进行调取,那么 ...