专业打假赛

VP情况略,不会的题单独补了

D.Deja vu of … Go Players

题目分析

签到题,直接判断n,mn,mn,m大小关系即可。

Code

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;const int N = 2e5 + 10;
int a[N];inline void solve(){int n, m; cin >> n >> m;for(int i = 1, x = 0; i <= n; i++) cin >> x;for(int j = 1, x = 0; j <= m; j++) cin >> x;if(n > m) cout << "No\n";else cout << "Yes\n";
}signed main(){ios_base::sync_with_stdio(false), cin.tie(0);int t = 1; cin >> t;while(t--) solve();return 0;
}

F.Interstellar … Fantasy

题目分析

计算几何,不难发现三点一定共面,因此讨论能否走直线到达即可。不能走直线就走切线+圆弧。

Code

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;const int N = 2e5 + 10;
int a[N];struct point{double x, y, z;point() {}point(int x, int y, int z): x(x), y(y), z(z) {}double square() {return x * x + y * y + z * z;}
};point dec(point a, point b){return point{a.x - b.x, a.y - b.y, a.z - b.z};
}inline void solve(){point o; cin >> o.x >> o.y >> o.z;double r = 0; cin >> r;point st, ed;cin >> st.x >> st.y >> st.z >> ed.x >> ed.y >> ed.z;point dec1 = dec(o, st), dec2 = dec(ed, st), dec3 = dec(o, ed), dec4 = dec(st, ed);double res0 = (st.x - ed.x) * (st.x - ed.x) + (st.y - ed.y) * (st.y - ed.y) + (st.z - ed.z) * (st.z - ed.z);double res1 = dec1.x * dec2.x + dec1.y * dec2.y + dec1.z * dec2.z;double res2 = dec3.x * dec4.x + dec3.y * dec4.y + dec3.z * dec4.z;double dis = sqrt(dec4.square());if (res0 <= 1e-8 || res1 <= 1e-8 || res2 <= 1e-8) cout << dis << endl;else {double h = sqrt(dec1.square() - res1 * res1 / dec4.square());if (r - h <= 1e-8) cout << dis << endl;else {  double linea = sqrt(dec1.square() - r * r), lineb = sqrt(dec3.square() - r * r);double jue = atan2(sqrt(dec1.square() - h * h), h) + atan2(sqrt((dec3.square() - h * h)), h) - atan2(linea, r) - atan2(lineb, r);cout << jue * r + linea + lineb << endl;}   }
}signed main(){ios_base::sync_with_stdio(false), cin.tie(0);cout << fixed << setprecision(12);int t = 1; cin >> t;while(t--) solve();return 0;
}

I. Misunderstood … Missing

题目分析

假定拥有基础攻击力AAA和增幅DDD(初始均为000)进行nnn轮游戏,每轮游戏开始A→A+DA \rightarrow A + DA→A+D,每轮游戏可以选择三个操作中的一种:

  • 造成A+aiA + a_iA+ai​的伤害
  • 将DDD变为D+biD + b_iD+bi​
  • 将AAA变为A+ciA + c_iA+ci​

问nnn轮游戏结束后能够造成的总最大伤害。

每一次的选择都会对后面的操作构成影响,因此考虑倒着DPDPDP处理。首先一定可以确定第nnn轮一定会选择操作111,因为其它操作不会再对总伤害造成增益。

同时,因为我们需要记录那些回合进行了攻击,那么我们可以加一维表示攻击回合的下标和:设第iii轮选择操作222,D→D+biD \rightarrow D + b_iD→D+bi​,那么对第jjj轮的贡献就是(j−i)∗bi(j - i) * b_i(j−i)∗bi​,由此可以计算对[i,n][i, n][i,n]的总贡献为(sum−j×i)×bi(sum - j \times i) \times b_i(sum−j×i)×bi​。

设dp[i][j][k]dp[i][j][k]dp[i][j][k]表示[i,n][i, n][i,n]轮游戏中有jjj次攻击操作,这些攻击操作所在回合下标和为kkk时造成的最大伤害,那么可以得到转移方程:
dp[i][j+1][k+i]=max⁡(dp[i][j+1][k+i],dp[i+1][j][k]+a[i])dp[i][j][k]=max⁡(dp[i][j][k],dp[i+1][j][k]+(k−j∗i)∗bi)dp[i][j][k]=max⁡(dp[i][j][k],dp[i+1][j][k]+j∗ci)dp[i][j + 1][k + i] = \max(dp[i][j + 1][k + i], dp[i + 1][j][k] + a[i]) \\ dp[i][j][k] = \max(dp[i][j][k], dp[i + 1][j][k] + (k - j * i) * b_i) \\ dp[i][j][k] = \max(dp[i][j][k], dp[i + 1][j][k] + j * c_i) dp[i][j+1][k+i]=max(dp[i][j+1][k+i],dp[i+1][j][k]+a[i])dp[i][j][k]=max(dp[i][j][k],dp[i+1][j][k]+(k−j∗i)∗bi​)dp[i][j][k]=max(dp[i][j][k],dp[i+1][j][k]+j∗ci​)
显然空间不太够。于是需要滚动数组压掉第一维。

Code

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;const int N = 1e5 + 10;
int a[N], b[N], c[N];
int dp[105][6005];inline void solve(){int n = 0, ans = 0; cin >> n;for(int i = 1; i <= n; i++) cin >> a[i] >> b[i] >> c[i];memset(dp, -1, sizeof(dp));dp[0][0] = 0;for(int i = n; i; i--){for(int j = n; j >= 0; j--){for(int k = (n + 1) * n / 2; k >= 0; k--){if(dp[j][k] == -1) continue;dp[j + 1][k + i] = max(dp[j + 1][k + i], dp[j][k] + a[i]);// dp[j][k] = max(dp[j][k], dp[j][k] + (k - j * i) * b[i]);// dp[j][k] = max(dp[j][k], dp[j][k] + j * c[i]);dp[j][k] = max({dp[j][k], dp[j][k] + c[i] * j, dp[j][k] + (k - j * i) * b[i]});}}}for(int i = 0; i <= n; i++){for(int j = 0; j <= (n + 1) * n / 2; j++){ans = max(ans, dp[i][j]);}}cout << ans << endl;
}signed main(){ios_base::sync_with_stdio(false), cin.tie(0);int t = 0; cin >> t;while(t--) solve();return 0;
}

L.Eventual … Journey

题目分析

给定一堆点,点属于两个集合中的一个。从某点出发可以通过道路到达另外一点,或者通过护照直接传送到同个集合的点。问对所有的点而言到达其他点的步数和。

分类讨论即可,记录点的度。注意要特判度为0的情况,即点自身为单点。尤其注意单点到单点的计算.

Code

#include <bits/stdc++.h>
#define int long long
#define endl '\n'
using namespace std;const int N = 2e5 + 10;
int a[N];
vector <int> g[N];
int cnt[3], cnt2[3];
inline void solve(){int n,m; cin>>n>>m;for(int i=1;i<=n;i++) {cin>>a[i];cnt[a[i]]++;}for(int i=1;i<=m;i++){int u,v;cin>>u>>v;if(a[u] != a[v]){g[u].push_back(v); g[v].push_back(u);}}for(int i = 1; i <= n; i++){if(g[i].size()) cnt2[a[i]]++;}if(m==0){for(int i=1;i<=n;i++){cout<<cnt[a[i]]-1<<' ';}return;}for(int i=1;i<=n;i++){int ans = 0;if(g[i].size()){ans = (cnt[a[i]] - 1) + g[i].size() + 2 * (cnt[1 - a[i]] - g[i].size());} else {ans = cnt[a[i]] - 1 + 2 * cnt2[1 - a[i]] + 3 * (cnt[1 - a[i]] - cnt2[1 - a[i]]);}cout << ans << " \n"[i == n];}
}signed main(){ios_base::sync_with_stdio(false), cin.tie(0);int t = 1; //cin >> t;while(t--) solve();return 0;
}

2018-2019 ACM-ICPC, Asia East Continent Finals D.F.I.L(VP)相关推荐

  1. 2018-2019 ACM-ICPC, Asia East Continent Finals

    2018-2019 ACM-ICPC, Asia East Continent Finals 在此附上吉老师的视频题解 Problem C:Heretical - Möbius 思路:根据莫比乌斯系数 ...

  2. 【2020 ICPC Asia East Continent Final】赛前训练

    这里写自定义目录标题 [2020 ICPC Asia East Continent Final]赛前训练 A - Namomo Subsequence 输入: 输出: 样例: 解析: 代码: F - ...

  3. 2018-2019 ACM-ICPC, Asia East Continent Finals题解

    以下所有AC题解程序来自"仙客传奇"团队. A. Exotic - Ancient City 题解链接: 2018 EC-Final 部分题解 (A,J) ABCDEFGIJKL ...

  4. 2020 ICPC Asia East Continent Final_K.Allin

    题面: 题意: 打牌题,意思是说给你五张牌h1,h2,c1,c2,c3:除此之外本题还要考虑未给出的四张牌c4,c5,以及p1,p2. p1,p2是对面已知有的牌,h1,h2是我手上已知有的牌. c1 ...

  5. 2020 ICPC Asia East Continent Final D. City Brain(最短路+三分)

    传送门 题意: 给出nnn​​ 个点,mmm条边的无向带权图,初始边权都为111,一共有kkk 次操作机会,每次操作可以选择一条边使其边权+1+1+1, 通过一条边的时间为 1/1/1/边权 ,求mi ...

  6. 2014 ACM/ICPC Asia Regional Guangzhou Online C题Wang Xifeng's Little Plot(dfs)

    Wang Xifeng's Little Plot Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Jav ...

  7. 2019 ACM - ICPC 上海网络赛 E. Counting Sequences II (指数型生成函数)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  8. 2019 ACM - ICPC 西安邀请赛 B. Product (杜教筛) 简单数论(bushi)

    G.(2019 ACM/ICPC 全国邀请赛(西安)B) Product Weblink https://nanti.jisuanke.com/t/39269 Problem && S ...

  9. 2017-2018 ACM-ICPC Asia East Continent League Final (ECL-Final) 题解(10 / 13)

    2017-2018 ACM-ICPC Asia East Continent League Final (ECL-Final) 9题金 6题银 5题铜 题目比较简单,但是读题太难了- 比赛链接:htt ...

最新文章

  1. 我的WINCE4.2历程(10)
  2. Acwing第 33 场周赛【完结】
  3. 安装Hue后的一些功能的问题解决干货总结(博主推荐)
  4. Nginx的功能特性及常用功能
  5. 儿童学python下哪个软件好用_【开源软件】超好用的Python学习软件!没有之一!...
  6. Redis的Java客户端Jedis的八种调用方式(事务、管道、分布式)介绍
  7. 设计模式2:工程模式(1)
  8. 关于 asp.net 服务器控件几个 ID 的说明
  9. 配置六 ip default-network
  10. JavaScript中的字面量
  11. java得到某时间前2小时的时间
  12. domino处理ajax传中文或特殊字符问题
  13. 地震勘探原理(六)之地震组合方法原理
  14. ZeroMQ 中文指南 第一章 ZeroMQ基础【转载】
  15. 【转】初入NLP领域的一些小建议
  16. Prolog学习:用八卦的精神走进Prolog
  17. (TPAMI 2020) Part-A^2 Net
  18. 风投最爱看的商业计划书是这样的
  19. 利用JAVA多线程模拟售票系统,对统一资源进行处理
  20. java爬虫---问卷星自动提交问卷请求参数(jqsign,jqnonce等)解密

热门文章

  1. java 堆内存使用情况_java语言:JVM堆内存使用率持续上升如何排查
  2. 有关GLSL中的gl_FragCoord
  3. 5.2 Hooked-Web3-Provider和EthereumJS-tx库
  4. 【ArcGIS微课1000例】0065:ArcGISEarth移动端Android下载安装与使用(附安装包)
  5. 如何应用人工智能技术优化改进软件工厂流水线,这方面有什么示例
  6. 关于element tab组件使用自定义标签加入el-badge时无法更新数值问题
  7. Vue 第五讲(v-for 属性)
  8. Java程序设计教程与实训_Java程序设计教程与项目实训
  9. 福禄克FLUKE BT508|BT510|BT520|BT521蓄电池分析仪技术参数 与配件详情 报价分析
  10. 当Python碰上斗地主残局,该如何破解?AI对AI谁能更胜一筹?