Atcoder Beginner Contest 118 C-Monsters Battle Royale(貪心)
阿新 • • 發佈:2019-02-17
play sca poi spl 一次 data- none tex code
題目鏈接
題意就是要讓給出的數字去互相取余,看看能得到最小的數事多少。
那麽就可以從小到大排序,每一次都貪心地把最小的數作為攻擊者,去攻擊其他的數字(也就是大的取余小的),然後再一次排序,循環這個過程,直到出現1或者數字只剩一個非0數。
代碼如下
1 #include <cstdio> 2 #include <algorithm> 3 using namespace std; 4 5 int a[(int)1e5 + 10]; 6 7 int main() { 8 int n; 9 scanf("%d", &n); 10 forView Code(int i = 0; i < n; i++) { 11 scanf("%d", &a[i]); 12 } 13 int begin = 0; 14 while (true) { 15 sort(a + begin, a + n); 16 while (a[begin] == 0) begin++; 17 if (begin == n - 1) break; 18 for (int i = begin + 1; i < n; i++) { 19 a[i] %= a[begin];20 if (a[i] == 1) { 21 puts("1"); 22 return 0; 23 } 24 } 25 } 26 printf("%d\n", a[n-1]); 27 return 0; 28 }
Atcoder Beginner Contest 118 C-Monsters Battle Royale(貪心)