标签:最简 list span pac algorithm include 图片 using class
https://www.luogu.com.cn/problem/P4715
这道题我是使用了动态规划思想的数塔的做法,从数塔底层开始比较,一层一层网上找,找到第二层在比较找出亚军(数组的最低维来表示index与国家的能力值)
但是最简单的思路:么的把 n 支队伍分成两个区间,一个上半区,一个下半区。那么上半区最强者与下半区最强者,必是一冠一亚。
#include<iostream> #include<cstdio> #include<cmath> #include<algorithm> using namespace std; int list[200][200][2]; int temp[200][2]; int main() { int n; scanf("%d", &n); int amount = pow(2, n); n++; for (int i = 1; i <= amount; i++) { int t; scanf("%d", &t); temp[i][1] = i; temp[i][0]=t; } for (int j = 1; j <= amount; j++) { list[n][j][0] = temp[j][0]; list[n][j][1] = temp[j][1]; } for (int i = n; i > 2; i--) for (int j = 1; j <= pow(2, i-1); j += 2) { if (list[i][j][0] > list[i][j+1][0]) { list[i - 1][(j+1)/2][0] = list[i][j][0]; list[i - 1][(j+1)/2][1] = list[i][j][1]; } else { list[i - 1][(j+1)/2][0] = list[i][j+1][0]; list[i - 1][(j+1)/2][1] = list[i][j+1][1]; } } if (list[2][1][0] > list[2][2][0])printf("%d", list[2][2][1]); else printf("%d", list[2][1][1]); }
标签:最简 list span pac algorithm include 图片 using class
原文地址:https://www.cnblogs.com/Jason66661010/p/13197939.html