目录

  • A Thickest Burger
  • B Relative atomic mass
  • C Recursive sequence · 矩阵快速幂
  • E Counting Cliques · 暴力
  • H Guessing the Dice Roll · AC自动机+矩阵/马尔科夫链

题目链接

2016ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)


A Thickest Burger

#include <bits/stdc++.h>
using namespace std;
int A, B;void solve() {cin >> A >> B;cout << max(A * 2 + B, A + B * 2) << endl;
}void Run() {int T;cin >> T;for (int cs = 1; cs <= T; cs++) {solve();}
}int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);Run();return 0;
}

B Relative atomic mass

#include <bits/stdc++.h>
using namespace std;
int n;
string s;void solve() {cin >> s;n = s.length();int res = 0;for (int i = 0; i < n; i++) {if (s[i] == 'C') {res += 12;} else if (s[i] == 'H') {res += 1;} else if (s[i] == 'O') {res += 16;}}cout << res << endl;
}void Run() {int T;cin >> T;for (int cs = 1; cs <= T; cs++) {solve();}
}int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);Run();return 0;
}

C Recursive sequence · 矩阵快速幂

https://blog.csdn.net/red_red_red/article/details/90208713

(fnfn−1(n+1)4(n+1)3(n+1)2n+11)=(1211146411331121111)(fn−1fn−2n4n3n2n1)\begin{pmatrix}f_n\\f_{n-1}\\(n+1)^4\\(n+1)^3\\(n+1)^2\\n+1\\1\end{pmatrix}= \begin{pmatrix}1&2& 1& & & & \\ 1&& & & && \\ && 1& 4& 6& 4& 1\\ && & 1& 3&3& 1\\&& & & 1& 2& 1\\ &&& & & 1& 1\\ && & & & & 1\end{pmatrix} \begin{pmatrix}f_{n-1}\\f_{n-2}\\n^4\\n^3\\n^2\\n\\1\end{pmatrix} ⎝⎜⎜⎜⎜⎜⎜⎜⎜⎛​fn​fn−1​(n+1)4(n+1)3(n+1)2n+11​⎠⎟⎟⎟⎟⎟⎟⎟⎟⎞​=⎝⎜⎜⎜⎜⎜⎜⎜⎜⎛​11​2​11​41​631​4321​11111​⎠⎟⎟⎟⎟⎟⎟⎟⎟⎞​⎝⎜⎜⎜⎜⎜⎜⎜⎜⎛​fn−1​fn−2​n4n3n2n1​⎠⎟⎟⎟⎟⎟⎟⎟⎟⎞​

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int n;
ll a, b;
namespace Matrix {//矩阵快速幂板子const int maxn = 7;__int128 mod = 2147493647;struct Mat {__int128 mat[maxn][maxn];void clear() {memset(mat, 0, sizeof(mat));}//初始化成单位矩阵void initE() {clear();for (int i = 0; i < maxn; ++i) {//单位矩阵mat[i][i] = 1;}}Mat operator*(const Mat a) const {Mat b;b.clear();for (int i = 0; i < maxn; ++i) {for (int j = 0; j < maxn; ++j) {for (int k = 0; k < maxn; ++k) {b.mat[i][j] = (b.mat[i][j] + (mat[i][k] * a.mat[k][j]) % mod + mod) % mod;}}}return b;}};Mat pow(Mat m, ll k) {Mat res;res.initE();while (k) {if (k & 1) res = res * m;k >>= 1;m = m * m;}return res;}Mat E;//转移矩阵Mat f;//最开始的 S1 f1 f0void init() {E.clear();E = {1, 2, 1, 0, 0, 0, 0,1, 0, 0, 0, 0, 0, 0,0, 0, 1, 4, 6, 4, 1,0, 0, 0, 1, 3, 3, 1,0, 0, 0, 0, 1, 2, 1,0, 0, 0, 0, 0, 1, 1,0, 0, 0, 0, 0, 0, 1};f = {b, 0, 0, 0, 0, 0, 0,a, 0, 0, 0, 0, 0, 0,81, 0, 0, 0, 0, 0, 0,27, 0, 0, 0, 0, 0, 0,9, 0, 0, 0, 0, 0, 0,3, 0, 0, 0, 0, 0, 0,1, 0, 0, 0, 0, 0, 0,};}}
using namespace Matrix;void solve() {cin >> n >> a >> b;if (n == 1) {cout << a << endl;} else if (n == 2) {cout << b << endl;} else {init();cout << (ll)((pow(E, n - 2) * f).mat[0][0]) << endl;}
}void Run() {int T;cin >> T;for (int cs = 1; cs <= T; cs++) {solve();}
}int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);Run();return 0;
}

D Winning an Auction

E Counting Cliques · 暴力

#include <bits/stdc++.h>
using namespace std;
vector<int> e[105];
int n, m, s;
int mp[105][105], vis[105];
int Stack[105], top = 0;bool check(int u) {for (int i = 1; i <= top; i++) {if (i == u) continue;if (!mp[Stack[i]][u]) return false;}return true;
}int res = 0;void calc(int u) {Stack[++top] = u;if (top == s) {res++;}if (top < s) {for (int v:e[u]) {if (check(v)) {calc(v);}}}top--;
}void solve() {cin >> n >> m >> s;for (int i = 1, u, v; i <= m; i++) {cin >> u >> v;if (u > v)swap(u, v);if (!mp[u][v]) {mp[u][v] = 1;e[u].push_back(v);}}for (int i = 1; i <= n; i++) {sort(e[i].begin(), e[i].end());}for (int i = 1; i <= n; i++) {calc(i);}cout << res << endl;// initres = 0;for (int i = 1; i <= n; i++) {e[i].clear();vis[i] = 0;for (int j = i + 1; j <= n; j++) {mp[i][j] = 0;}}
}void Run() {int T;cin >> T;for (int cs = 1; cs <= T; cs++) {solve();}
}int main() {ios::sync_with_stdio(false);cin.tie(0), cout.tie(0);Run();return 0;
}

F Similar Rotations
G Do not pour out

H Guessing the Dice Roll · AC自动机+矩阵/马尔科夫链

https://www.cnblogs.com/dirge/p/6017703.html
初学马尔科夫链 - https://zhuanlan.zhihu.com/p/52376035

假设存在两个猜想 ...123...123...123 234...234...234...
若要让第二个猜想成立,第一个猜想就必须不成立,
如果当前局势使得第一个猜想成立,那么当333出现的那一刻,游戏结束,

这种概率题永远优先猜马尔科夫链,可惜转移矩阵不会写,万万没想到居然是借助ac自动机…

通过AC自动机得到马尔科夫链的有向图,每个节点都视为一个状态,

大致写写想想可以知道:肯定存在一个初始状态0,作为游戏的开始状态,其状态概率必定为1

如果当前状态为某一个猜想的结尾,则当前状态对于其他状态的转移概率均为0

如果当前状态非结尾,则其概率为∑\sum∑ 前一个状态的概率×\times× 概率转移矩阵里 AAA(前一个状态->当前状态)

设 xnx_nxn​为每个状态的概率, VkV^kVk 为第k步的状态向量
Vk=(x0x1...xn)V^k=\begin{pmatrix}x_0\\x_1\\...\\x_n\end{pmatrix}Vk=⎝⎜⎜⎛​x0​x1​...xn​​⎠⎟⎟⎞​
则初始状态V0V^0V0
V0=(10...0)V^0=\begin{pmatrix}1\\0\\...\\0\end{pmatrix}V0=⎝⎜⎜⎛​10...0​⎠⎟⎟⎞​
马尔科夫链的转移只和前一个状态有关,与之前的之前状态无关,每次一步转移均有
Vn+1=A×VnV^{n+1}=A\times V^nVn+1=A×Vn
就是这个东西

2016ACM/ICPC亚洲区沈阳站-重现赛(感谢东北大学)相关推荐

  1. HDU 5952 Counting Cliques(2016ACM/ICPC亚洲区沈阳站-重现赛)

    题目分析 这道题看样子没有什么办法,主要就是有策略的暴力,因为每个点连接的点不超过20个,那么就可以直接进行暴力,但是这样会有很多重复,因此需要剪枝,具体情况就是每次搜过一个点之后就把这个点连接的所有 ...

  2. 暑期ACM模拟赛--2017ACM/ICPC亚洲区沈阳站-重现赛 【待补】

    A - BBP Formula HDU - 6217 (数学问题+公式推导+快速幂) F - Heron and His Triangle HDU - 6222  (数学问题+海伦公式+大数) I - ...

  3. 2016ACM/ICPC亚洲区大连站现场赛题解报告(转)

    http://blog.csdn.net/queuelovestack/article/details/53055418 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原 ...

  4. 2016ACM/ICPC亚洲区大连站现场赛题解报告

    此文章可以使用目录功能哟↑(点击上方[+]) 下午重现了一下大连赛区的比赛,感觉有点神奇,重现时居然改了现场赛的数据范围,原本过的人数比较多的题结果重现过的变少了,而原本现场赛全场过的人最少的题重现做 ...

  5. HDU6218 2017ACM/ICPC亚洲区沈阳站 Bridge(Set,线段树)

    HDU6218 2017ACM/ICPC亚洲区沈阳站 Bridge Solution 我们考虑维护在环上的边的个数,答案就是总边数减去环上边数. 环的形态是这样的:(0,l),(0,l+1)...(0 ...

  6. 2016ACM/ICPC亚洲区大连站-补题

    2016ACM/ICPC亚洲区大连站-补题 5971-Wrestling Match 题目隐藏条件:除去已经知道的好人和坏人,如果剩余的人恰好被分成两组,即便不知道这两组哪组是好人,也是输出YES 做 ...

  7. 2016 ACM/ICPC亚洲区青岛站现场赛(部分题解)

    摘要 本文主要列举并求解了2016 ACM/ICPC亚洲区青岛站现场赛的部分真题,着重介绍了各个题目的解题思路,结合详细的AC代码,意在熟悉青岛赛区的出题策略,以备战2018青岛站现场赛. HDU 5 ...

  8. 2013ACM/ICPC亚洲区南京站现场赛——题目重现

    D - Wall Painting 题意:给你n个数,第i天(i属于[1,n])从n个数中选择i个数,进行异或.对于所有情况得到的数进行求和,即为第i天所得到的答案.输出从第1-n天的答案 思路:对于 ...

  9. HDU 4812 D Tree (点分治) (2013ACM/ICPC亚洲区南京站现场赛)

    HDU 4812 D Tree 思路 点对距离相等并且要求输出字典序最小的点对,距离相等不就是点分治裸题了嘛, 照着这个思路出发我们只要记录下所有点对是满足要求的,然后再去找字典序最小的点对就行了, ...

最新文章

  1. 一、JAVA通过JDBC连接mysql数据库(连接)
  2. 计算机专业毕业文案,我们毕业啦!|今天,没有文案
  3. 华为研发出了哪些芯片?
  4. SQL Server分页存储过程实践(图解)
  5. CSS3实现多页签图片缩放切换效果
  6. vagrant网站中box下载方法
  7. centos安装--两张光盘
  8. 查看oracle空间使用率,Oracle 查看表空间使用率
  9. 【C语言】找出1000以内可以被3整除的数
  10. 深度学习(六十二)SqueezeNet网络设计思想笔记
  11. Servlet 客户端 HTTP 请求
  12. matplotlib画折线图中文乱码解决
  13. conflicting declaration ‘typedef struct LZ4_stream_t LZ4_stream_t’解决
  14. Cknife(中国菜刀) and AntSword(中国蚁剑)使用
  15. 小米平板2刷remix_【游戏体验】老旧电脑装安卓系统当平板玩街球
  16. flask url_for()和redirect的区别
  17. java如何做网页_java怎么做一个简单网页?网页包括什么?
  18. excel表格生成图片的方式
  19. SpringBoot和MybatisPlus控制台清爽的一些配置
  20. 2020年综合评价备考全知道(附31所综合评价院校名单)

热门文章

  1. qt 字符串16进制转ascii 字符串ascii转16进制字符串
  2. PCB模块化设计09——RJ45-以太网口PCB布局布线设计规范
  3. `node-pre-gyp install --fallback-to-build`的解决办法
  4. 国科大空间分析课程的资料断更说明
  5. ubuntu虚拟机VmWare与主机共享文件夹设置
  6. iOS----------检测域名是否支持ipv6
  7. 有或没有Apple Watch情况下远程控制iPhone相机
  8. Parallel Scavenge和Parallel Old垃圾回收器组合
  9. 浅谈数据库连接池原理及优势
  10. POJ 2062 完全背包