2018-ACetic_ACid/AugTrain-04/D

从 Trac 迁移的文章

这是从旧校内 Wiki 迁移的文章,可能存在一些样式问题,您可以向 memset0 反馈。

原文章内容如下:

{{{
//#include <bits/stdc++.h>
//
//typedef long long ll;
//using namespace std;
//
//int h;
//struct monstor
//{
//  int h;
//  int d;
//  int pos;
//  int dead;
//};
//
//monstor m[10];
//
//int c[10][10]; // c[i][j] : monstor j in cell i
//int tower[10] = { 3, 3, 1, 1, 1, 1, 1, 1, 1, 0 };
//int delay[10];
//int play()
//{
//  int cnt = 0;
//  int t = 1;
//  for (int i = 0; i < 10; i++)
//  {
//      delay[i] = 1;
//  }
//  for (int i = 0; i < 10; i++)
//  {
//      if (tower[i] == 3) // slow
//      {
//          for (int j = i; j < min(10, i + 5); j++)
//          {
//              delay[j]++;
//          }
//      }
//  }
//  int kill = 0;
//  int tot_m = 0;
//  do
//  {
//      //printf("t = %d\n", t);
//      if (t <= 10)
//      {
//          cnt++;
//          m[tot_m].h = h;
//          m[tot_m].d = delay[0];
//          m[tot_m].pos = 0;
//          m[tot_m].dead = false;
//          c[0][tot_m] = 1;
//
//          tot_m++;
//      }
//
//      for (int i = 0; i < 10; i++)
//      {
//          if (tower[i] == 1) // gun
//          {
//              for (int j = 0; j < 10; j++) if (c[i][j])
//              {
//                  m[j].h -= 1;
//                  break;
//              }
//          }
//
//          if (tower[i] == 2) if (t % 3 == 0) // rocket
//          {
//              for (int j = 0; j < 10; j++) if (c[i][j])
//              {
//                  m[j].h -= 4;
//              }
//          }
//      }
//      for (int j = 0; j < tot_m; j++) if (!m[j].dead)
//      {
//          if (m[j].h <= 0)
//          {
//              cnt--;
//              kill++;
//              c[m[j].pos][j] = 0;
//              m[j].dead = true;
//              continue;
//          }
//          m[j].d--;
//          if (m[j].d == 0)
//          {
//              c[m[j].pos][j] = 0;
//              m[j].pos++;
//              if (m[j].pos < 10)
//              {
//                  c[m[j].pos][j] = 1;
//                  m[j].d = delay[m[j].pos];
//              }
//              else
//              {
//                  cnt--;
//                  m[j].dead = true;
//              }
//          }
//      }
//      t++;
//  } while (t <= 10 || cnt > 0);
//  return kill;
//}
//
//char s[5] = ".GRS";
//int ans[101];
//string sol[101];
//
//int get_price()
//{
//  int ret = 0;
//  for (int i = 0; i < 10; i++)
//  {
//      if (tower[i] == 1) ret += 3;
//      if (tower[i] == 2) ret += 10;
//      if (tower[i] == 3) ret += 5;
//  }
//  return ret;
//}
//
//string get_str(int x)
//{
//  string s;
//  for (int i = 0; i < 10; i++)
//  {
//      s += ::s[x & 3];
//      x >>= 2;
//  }
//  return s;
//}
//int main()
//{
//  //freopen("defend.in", "r", stdin);
//  for (h = 0; h <= 30; h++)
//  {
//      memset(ans, 0, sizeof(ans));
//      memset(sol, 0, sizeof(sol));
//      for (int i = 0; i < 1048576; i++)
//      {
//          memset(c, 0, sizeof(c));
//          memset(tower, 0, sizeof(tower));
//          memset(delay, 0, sizeof(delay));
//          int t = i;
//          for (int j = 0; j < 10; j++)
//          {
//              tower[j] = t & 3;
//              t >>= 2;
//          }
//          int p = get_price();
//          int k = play();
//
//          //for (int i = 0; i < 10; i++) printf("%d", tower[i]);printf(" p = %d, k = %d\n", p, k); 
//          if (k > ans[p] || (k == ans[p] && sol[p] > get_str(i)))
//          {
//              ans[p] = k;
//              sol[p] = get_str(i);
//          }
//      }
//
//      printf("s[%d] = \"", h);
//      int best = 0;
//      for (int i = 0; i <= 100; i++)
//      {
//          if (ans[i] > best)
//          {
//              best = ans[i];
//              printf("$%d -> kill %d with %s\\n", i, ans[i], sol[i].c_str());
//          }
//      }
//      printf("\";\n");
//  }
//}
#include <bits/stdc++.h>
using namespace std;

string s[31];

int main()
{
    s[0] = "$0 -> kill 10 with ..........\n";
    s[1] = "$3 -> kill 10 with .........G\n";
    s[2] = "$6 -> kill 10 with ........GG\n";
    s[3] = "$9 -> kill 10 with .......GGG\n";
    s[4] = "$10 -> kill 4 with ........R.\n$12 -> kill 10 with ......GGGG\n";
    s[5] = "$13 -> kill 4 with ........RG\n$15 -> kill 10 with .....GGGGG\n";
    s[6] = "$14 -> kill 1 with ......SGGG\n$16 -> kill 4 with .......GRG\n$18 -> kill 10 with ....GGGGGG\n";
    s[7] = "$17 -> kill 1 with .....GSGGG\n$19 -> kill 4 with ......GGRG\n$21 -> kill 10 with ...GGGGGGG\n";
    s[8] = "$17 -> kill 1 with .....SGGGG\n$20 -> kill 4 with .....R..R.\n$24 -> kill 10 with ..GGGGGGGG\n";
    s[9] = "$19 -> kill 1 with .....SSGGG\n$23 -> kill 4 with .....R..RG\n$27 -> kill 10 with .GGGGGGGGG\n";
    s[10] = "$22 -> kill 1 with ....GSSGGG\n$26 -> kill 4 with .....R.GRG\n$30 -> kill 10 with GGGGGGGGGG\n";
    s[11] = "$22 -> kill 1 with ....SSGGGG\n$29 -> kill 4 with .....RGGRG\n$34 -> kill 7 with ....GSRGGR\n$38 -> kill 10 with ....SSSRRG\n";
    s[12] = "$25 -> kill 1 with ...GSSGGGG\n$30 -> kill 4 with ..R..R..R.\n$35 -> kill 7 with .....SSSRR\n$40 -> kill 10 with .....SSRRR\n";
    s[13] = "$27 -> kill 1 with ...SSSGGGG\n$33 -> kill 4 with ..R..R..RG\n$38 -> kill 7 with ....GSSSRR\n$41 -> kill 8 with ..SSSRRGG.\n$43 -> kill 10 with ....GSSRRR\n";
    s[14] = "$30 -> kill 1 with ..GSSSGGGG\n$36 -> kill 4 with ..R..R.GRG\n$41 -> kill 7 with ...GGSSSRR\n$44 -> kill 8 with .GSSSRRGG.\n$46 -> kill 10 with ...GGSSRRR\n";
    s[15] = "$31 -> kill 1 with ....SSSGRG\n$39 -> kill 4 with ..R..RGGRG\n$44 -> kill 7 with ..GGGSSSRR\n$47 -> kill 8 with GGSSSRRGG.\n$49 -> kill 10 with ..GGGSSRRR\n";
    s[16] = "$34 -> kill 1 with ...GSSSGRG\n$40 -> kill 4 with ..SSSRSR..\n$45 -> kill 7 with ....SSSRRR\n$50 -> kill 10 with ...SSSSRRR\n";
    s[17] = "$34 -> kill 1 with ..SSSRGGG.\n$43 -> kill 4 with ..SSSRSR.G\n$48 -> kill 7 with ...GSSSRRR\n$53 -> kill 10 with ..GSSSSRRR\n";
    s[18] = "$37 -> kill 1 with ..SSGSRGGG\n$46 -> kill 4 with ..SSSRSRGG\n$51 -> kill 7 with ..GGSSSRRR\n$56 -> kill 10 with .GGSSSSRRR\n";
    s[19] = "$40 -> kill 1 with .GSSGSRGGG\n$49 -> kill 4 with .GSSSRSRGG\n$54 -> kill 7 with .GGGSSSRRR\n$59 -> kill 10 with GGGSSSSRRR\n";
    s[20] = "$43 -> kill 1 with GGSSGSRGGG\n$50 -> kill 4 with ..SSSRSRR.\n$57 -> kill 7 with GGGGSSSRRR\n$70 -> kill 10 with .SRSSSRRRR\n";
    s[21] = "$44 -> kill 1 with .SSSGRGGR.\n$53 -> kill 4 with ..SSSRSRRG\n$63 -> kill 7 with .GSSSRRSRR\n$73 -> kill 10 with GSRSSSRRRR\n";
    s[22] = "$47 -> kill 1 with .SSSGRGGRG\n$56 -> kill 4 with .GSSSRSRRG\n$66 -> kill 7 with GGSSSRRSRR\n$80 -> kill 10 with SSRRRSSRRR\n";
    s[23] = "$50 -> kill 1 with GSSSGRGGRG\n$59 -> kill 4 with GGSSSRSRRG\n$75 -> kill 7 with SRSRSSRSRR\n$80 -> kill 10 with SSRRRSSRRR\n";
    s[24] = "$54 -> kill 1 with SRSSRGGGR.\n$60 -> kill 3 with .SSSRSRR.R\n$65 -> kill 4 with ..RSRSSRRR\n$75 -> kill 7 with SRSRSSRSRR\n$80 -> kill 10 with SSRRRSSRRR\n";
    s[25] = "$57 -> kill 1 with SRSSRGGGRG\n$63 -> kill 3 with .SSSRSRRGR\n$68 -> kill 4 with .GRSRSSRRR\n";
    s[26] = "$64 -> kill 1 with SRSSRGRGRG\n$66 -> kill 3 with GSSSRSRRGR\n$71 -> kill 4 with GGRSRSSRRR\n";
    s[27] = "$66 -> kill 1 with SRRSSSRGGR\n$70 -> kill 3 with SSSRSRSSRR\n$75 -> kill 4 with SRRSSSRSRR\n";
    s[28] = "$70 -> kill 3 with SSSRSRSSRR\n$75 -> kill 4 with SRRSSSRSRR\n";
    s[29] = "$78 -> kill 3 with RSRSSRRRGR\n";
    s[30] = "";
    freopen("defend.in", "r", stdin);
    freopen("defend.out", "w", stdout);
    int h;
    cin >> h;
    cout << s[h];
}

}}}
//#include <bits/stdc++.h>
//
//typedef long long ll;
//using namespace std;
//
//int h;
//struct monstor
//{
//  int h;
//  int d;
//  int pos;
//  int dead;
//};
//
//monstor m[10];
//
//int c[10][10]; // c[i][j] : monstor j in cell i
//int tower[10] = { 3, 3, 1, 1, 1, 1, 1, 1, 1, 0 };
//int delay[10];
//int play()
//{
//  int cnt = 0;
//  int t = 1;
//  for (int i = 0; i < 10; i++)
//  {
//      delay[i] = 1;
//  }
//  for (int i = 0; i < 10; i++)
//  {
//      if (tower[i] == 3) // slow
//      {
//          for (int j = i; j < min(10, i + 5); j++)
//          {
//              delay[j]++;
//          }
//      }
//  }
//  int kill = 0;
//  int tot_m = 0;
//  do
//  {
//      //printf("t = %d\n", t);
//      if (t <= 10)
//      {
//          cnt++;
//          m[tot_m].h = h;
//          m[tot_m].d = delay[0];
//          m[tot_m].pos = 0;
//          m[tot_m].dead = false;
//          c[0][tot_m] = 1;
//
//          tot_m++;
//      }
//
//      for (int i = 0; i < 10; i++)
//      {
//          if (tower[i] == 1) // gun
//          {
//              for (int j = 0; j < 10; j++) if (c[i][j])
//              {
//                  m[j].h -= 1;
//                  break;
//              }
//          }
//
//          if (tower[i] == 2) if (t % 3 == 0) // rocket
//          {
//              for (int j = 0; j < 10; j++) if (c[i][j])
//              {
//                  m[j].h -= 4;
//              }
//          }
//      }
//      for (int j = 0; j < tot_m; j++) if (!m[j].dead)
//      {
//          if (m[j].h <= 0)
//          {
//              cnt--;
//              kill++;
//              c[m[j].pos][j] = 0;
//              m[j].dead = true;
//              continue;
//          }
//          m[j].d--;
//          if (m[j].d == 0)
//          {
//              c[m[j].pos][j] = 0;
//              m[j].pos++;
//              if (m[j].pos < 10)
//              {
//                  c[m[j].pos][j] = 1;
//                  m[j].d = delay[m[j].pos];
//              }
//              else
//              {
//                  cnt--;
//                  m[j].dead = true;
//              }
//          }
//      }
//      t++;
//  } while (t <= 10 || cnt > 0);
//  return kill;
//}
//
//char s[5] = ".GRS";
//int ans[101];
//string sol[101];
//
//int get_price()
//{
//  int ret = 0;
//  for (int i = 0; i < 10; i++)
//  {
//      if (tower[i] == 1) ret += 3;
//      if (tower[i] == 2) ret += 10;
//      if (tower[i] == 3) ret += 5;
//  }
//  return ret;
//}
//
//string get_str(int x)
//{
//  string s;
//  for (int i = 0; i < 10; i++)
//  {
//      s += ::s[x & 3];
//      x >>= 2;
//  }
//  return s;
//}
//int main()
//{
//  //freopen("defend.in", "r", stdin);
//  for (h = 0; h <= 30; h++)
//  {
//      memset(ans, 0, sizeof(ans));
//      memset(sol, 0, sizeof(sol));
//      for (int i = 0; i < 1048576; i++)
//      {
//          memset(c, 0, sizeof(c));
//          memset(tower, 0, sizeof(tower));
//          memset(delay, 0, sizeof(delay));
//          int t = i;
//          for (int j = 0; j < 10; j++)
//          {
//              tower[j] = t & 3;
//              t >>= 2;
//          }
//          int p = get_price();
//          int k = play();
//
//          //for (int i = 0; i < 10; i++) printf("%d", tower[i]);printf(" p = %d, k = %d\n", p, k); 
//          if (k > ans[p] || (k == ans[p] && sol[p] > get_str(i)))
//          {
//              ans[p] = k;
//              sol[p] = get_str(i);
//          }
//      }
//
//      printf("s[%d] = \"", h);
//      int best = 0;
//      for (int i = 0; i <= 100; i++)
//      {
//          if (ans[i] > best)
//          {
//              best = ans[i];
//              printf("$%d -> kill %d with %s\\n", i, ans[i], sol[i].c_str());
//          }
//      }
//      printf("\";\n");
//  }
//}
#include <bits/stdc++.h>
using namespace std;
string s[31];
int main()
{
    s[0] = "$0 -> kill 10 with ..........\n";
    s[1] = "$3 -> kill 10 with .........G\n";
    s[2] = "$6 -> kill 10 with ........GG\n";
    s[3] = "$9 -> kill 10 with .......GGG\n";
    s[4] = "$10 -> kill 4 with ........R.\n$12 -> kill 10 with ......GGGG\n";
    s[5] = "$13 -> kill 4 with ........RG\n$15 -> kill 10 with .....GGGGG\n";
    s[6] = "$14 -> kill 1 with ......SGGG\n$16 -> kill 4 with .......GRG\n$18 -> kill 10 with ....GGGGGG\n";
    s[7] = "$17 -> kill 1 with .....GSGGG\n$19 -> kill 4 with ......GGRG\n$21 -> kill 10 with ...GGGGGGG\n";
    s[8] = "$17 -> kill 1 with .....SGGGG\n$20 -> kill 4 with .....R..R.\n$24 -> kill 10 with ..GGGGGGGG\n";
    s[9] = "$19 -> kill 1 with .....SSGGG\n$23 -> kill 4 with .....R..RG\n$27 -> kill 10 with .GGGGGGGGG\n";
    s[10] = "$22 -> kill 1 with ....GSSGGG\n$26 -> kill 4 with .....R.GRG\n$30 -> kill 10 with GGGGGGGGGG\n";
    s[11] = "$22 -> kill 1 with ....SSGGGG\n$29 -> kill 4 with .....RGGRG\n$34 -> kill 7 with ....GSRGGR\n$38 -> kill 10 with ....SSSRRG\n";
    s[12] = "$25 -> kill 1 with ...GSSGGGG\n$30 -> kill 4 with ..R..R..R.\n$35 -> kill 7 with .....SSSRR\n$40 -> kill 10 with .....SSRRR\n";
    s[13] = "$27 -> kill 1 with ...SSSGGGG\n$33 -> kill 4 with ..R..R..RG\n$38 -> kill 7 with ....GSSSRR\n$41 -> kill 8 with ..SSSRRGG.\n$43 -> kill 10 with ....GSSRRR\n";
    s[14] = "$30 -> kill 1 with ..GSSSGGGG\n$36 -> kill 4 with ..R..R.GRG\n$41 -> kill 7 with ...GGSSSRR\n$44 -> kill 8 with .GSSSRRGG.\n$46 -> kill 10 with ...GGSSRRR\n";
    s[15] = "$31 -> kill 1 with ....SSSGRG\n$39 -> kill 4 with ..R..RGGRG\n$44 -> kill 7 with ..GGGSSSRR\n$47 -> kill 8 with GGSSSRRGG.\n$49 -> kill 10 with ..GGGSSRRR\n";
    s[16] = "$34 -> kill 1 with ...GSSSGRG\n$40 -> kill 4 with ..SSSRSR..\n$45 -> kill 7 with ....SSSRRR\n$50 -> kill 10 with ...SSSSRRR\n";
    s[17] = "$34 -> kill 1 with ..SSSRGGG.\n$43 -> kill 4 with ..SSSRSR.G\n$48 -> kill 7 with ...GSSSRRR\n$53 -> kill 10 with ..GSSSSRRR\n";
    s[18] = "$37 -> kill 1 with ..SSGSRGGG\n$46 -> kill 4 with ..SSSRSRGG\n$51 -> kill 7 with ..GGSSSRRR\n$56 -> kill 10 with .GGSSSSRRR\n";
    s[19] = "$40 -> kill 1 with .GSSGSRGGG\n$49 -> kill 4 with .GSSSRSRGG\n$54 -> kill 7 with .GGGSSSRRR\n$59 -> kill 10 with GGGSSSSRRR\n";
    s[20] = "$43 -> kill 1 with GGSSGSRGGG\n$50 -> kill 4 with ..SSSRSRR.\n$57 -> kill 7 with GGGGSSSRRR\n$70 -> kill 10 with .SRSSSRRRR\n";
    s[21] = "$44 -> kill 1 with .SSSGRGGR.\n$53 -> kill 4 with ..SSSRSRRG\n$63 -> kill 7 with .GSSSRRSRR\n$73 -> kill 10 with GSRSSSRRRR\n";
    s[22] = "$47 -> kill 1 with .SSSGRGGRG\n$56 -> kill 4 with .GSSSRSRRG\n$66 -> kill 7 with GGSSSRRSRR\n$80 -> kill 10 with SSRRRSSRRR\n";
    s[23] = "$50 -> kill 1 with GSSSGRGGRG\n$59 -> kill 4 with GGSSSRSRRG\n$75 -> kill 7 with SRSRSSRSRR\n$80 -> kill 10 with SSRRRSSRRR\n";
    s[24] = "$54 -> kill 1 with SRSSRGGGR.\n$60 -> kill 3 with .SSSRSRR.R\n$65 -> kill 4 with ..RSRSSRRR\n$75 -> kill 7 with SRSRSSRSRR\n$80 -> kill 10 with SSRRRSSRRR\n";
    s[25] = "$57 -> kill 1 with SRSSRGGGRG\n$63 -> kill 3 with .SSSRSRRGR\n$68 -> kill 4 with .GRSRSSRRR\n";
    s[26] = "$64 -> kill 1 with SRSSRGRGRG\n$66 -> kill 3 with GSSSRSRRGR\n$71 -> kill 4 with GGRSRSSRRR\n";
    s[27] = "$66 -> kill 1 with SRRSSSRGGR\n$70 -> kill 3 with SSSRSRSSRR\n$75 -> kill 4 with SRRSSSRSRR\n";
    s[28] = "$70 -> kill 3 with SSSRSRSSRR\n$75 -> kill 4 with SRRSSSRSRR\n";
    s[29] = "$78 -> kill 3 with RSRSSRRRGR\n";
    s[30] = "";
    freopen("defend.in", "r", stdin);
    freopen("defend.out", "w", stdout);
    int h;
    cin >> h;
    cout << s[h];
}