鱼C论坛

 找回密码
 立即注册
查看: 1729|回复: 5

[已解决]一个报错

[复制链接]
发表于 2021-8-3 18:07:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. Windows PowerShell
  2. 版权所有 (C) Microsoft Corporation。保留所有权利。

  3. 尝试新的跨平台 PowerShell https://aka.ms/pscore6

  4. PS D:\editor\code> cd "d:\editor\code" ; if ($?) { g++ test.cpp -o test } ; if ($?) { .\test }
  5. C:\Users\Lenovo\AppData\Local\Temp\ccHnlDAy.s: Assembler messages:
  6. C:\Users\Lenovo\AppData\Local\Temp\ccHnlDAy.s:147: Error: value of 000000013e657db6 too large for field of 4 bytes at 0000000000000066
  7. C:\Users\Lenovo\AppData\Local\Temp\ccHnlDAy.s:148: Error: value of 000000012173896d too large for field of 4 bytes at 000000000000006d
  8. C:\Users\Lenovo\AppData\Local\Temp\ccHnlDAy.s:149: Error: value of 000000013e657dd4 too large for field of 4 bytes at 0000000000000074
  9. C:\Users\Lenovo\AppData\Local\Temp\ccHnlDAy.s:169: Error: value of 000000013e657e16 too large for field of 4 bytes at 00000000000000c6
  10. C:\Users\Lenovo\AppData\Local\Temp\ccHnlDAy.s:171: Error: value of 000000013e657e3f too large for field of 4 bytes at 00000000000000cc
  11. C:\Users\Lenovo\AppData\Local\Temp\ccHnlDAy.s:188: Error: value of 000000013e657e7d too large for field of 4 bytes at 0000000000000115
  12. C:\Users\Lenovo\AppData\Local\Temp\ccHnlDAy.s:189: Error: value of 000000013e657e3c too large for field of 4 bytes at 000000000000011c
  13. C:\Users\Lenovo\AppData\Local\Temp\ccHnlDAy.s:190: Error: value of 000000013e657e4b too large for field of 4 bytes at 0000000000000123
  14. C:\Users\Lenovo\AppData\Local\Temp\ccHnlDAy.s:202: Error: value of 000000013e657ea2 too large for field of 4 bytes at 0000000000000152
复制代码

大佬们,这个报错问题是出在哪,也不提示是哪行代码有问题,能解决吗
最佳答案
2021-8-4 18:01:17
一世轻尘 发表于 2021-8-4 17:42
这是数学建模国赛一等奖的代码,太复杂了,看懂估计要花费很长时间,代码的思路没有问题,而且作者在比赛的 ...

不发代码,怎么可能知道发生了什么?
g++ -g -Wall -mcmodel=medium -o main main.cpp

https://blog.csdn.net/www_helloworld_com/article/details/88964968
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-8-3 21:17:34 | 显示全部楼层
所以你代码呢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-3 22:50:14 | 显示全部楼层

代码过于长了,而且这个报错并没有指明是在代码的哪个位置,应该与语法没啥关系
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-3 23:31:14 | 显示全部楼层
一世轻尘 发表于 2021-8-3 22:50
代码过于长了,而且这个报错并没有指明是在代码的哪个位置,应该与语法没啥关系

与语法没关系,那与什么有关系?编译器?也就是说换一个编译器这个代码就可以用了?
因为编译器读取源代码,然后生成可执行程序,既然没有生成可执行程序,而且代码又没有问题,那么就是编译器的问题了?对吧?

发代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-8-4 17:42:22 | 显示全部楼层
本帖最后由 一世轻尘 于 2021-8-4 17:44 编辑
人造人 发表于 2021-8-3 23:31
与语法没关系,那与什么有关系?编译器?也就是说换一个编译器这个代码就可以用了?
因为编译器读取源代 ...


这是数学建模国赛一等奖的代码,太复杂了,看懂估计要花费很长时间,代码的思路没有问题,而且作者在比赛的时候确实跑出了正确的结果,正常报错的话,会提示是在代码哪一行出的问题,这个报错确实应该跟源代码没啥关系,处理过类似问题的人应该能很快知道是在哪里有问题
  1. #pragma GCC optimize(3, "Ofast", "inline")
  2. #include <bits/stdc++.h>
  3. using namespace std;
  4. struct sta
  5. {
  6.     short d, i, w, f;
  7.     sta(short _d = 0, short _i = 0, short _w = 0, short _f = 0)
  8.     {
  9.         d = _d, i = _i, w = _w, f = _f;
  10.     }
  11.     bool check()
  12.     {
  13.         return !d && !i && !w && !f;
  14.     }
  15.     void Print()
  16.     {
  17.         printf("%d %d %d %d\n", d, i, w, f);
  18.     }
  19. };
  20. const int D = 30;              
  21. const int N = 64;              
  22. const int W = 400;            
  23. const int F = 600;            
  24. const int Heavy = 1200;        
  25. const int start_money = 10000;
  26. int n, m, dis[N + 1][N + 1];
  27. short dp[D + 1][N + 1][W + 1][F + 1];
  28. sta last[D + 1][N + 1][W + 1][F + 1];
  29. bool vis[D + 1][N + 1][W + 1][F + 1];
  30. vector<int> q[N + 1];
  31. int weather[D + 1];
  32. queue<sta> que;
  33. int l, r;
  34. void bfs()
  35. {
  36.     for (int w = 0; w <= W; w++)
  37.         for (int f = 0; 3 * w + 2 * f <= Heavy && 5 * w + 10 * f <= start_money && f <= F; f++)
  38.         {
  39.             dp[0][1][w][f] = start_money - 5 * w - 10 * f;
  40.             que.push(sta(0, 1, w, f));
  41.             //sta(0,1,w,f).Print();
  42.             vis[0][1][w][f] = 1;
  43.             r++;
  44.         }
  45.     while (!que.empty())
  46.     {
  47.         //printf("%.8f\n",1.0*l/(1ll*D*W*F*W*F));
  48.         sta now = que.front();
  49.         que.pop();
  50.         //now.Print();
  51.         int cw = 0, cf = 0, d = now.d, i = now.i, w = now.w, f = now.f, k;
  52.         vis[d][i][w][f] = 0;
  53.         if (d + 1 > D)
  54.             continue;
  55.         if (i == 64)
  56.             continue;
  57.         switch (weather[d + 1])
  58.         {
  59.         case 1:
  60.         {
  61.             cw = 5, cf = 7;
  62.             break;
  63.         }
  64.         case 2:
  65.         {
  66.             cw = 8, cf = 6;
  67.             break;
  68.         }
  69.         case 3:
  70.         {
  71.             cw = 10, cf = 10;
  72.             break;
  73.         }
  74.         }
  75.         if ((i == 30 || i == 55) && w >= 3 * cw && f >= 3 * cf && dp[d + 1][i][w - 3 * cw][f - 3 * cf] < dp[d][i][w][f] + 1000)
  76.         {
  77.             dp[d + 1][i][w - 3 * cw][f - 3 * cf] = dp[d][i][w][f] + 1000;
  78.             last[d + 1][i][w - 3 * cw][f - 3 * cf] = sta(d, i, w, f);
  79.             if (!vis[d + 1][i][w - 3 * cw][f - 3 * cf])
  80.             {
  81.                 vis[d + 1][i][w - 3 * cw][f - 3 * cf] = 1;
  82.                 que.push(sta(d + 1, i, w - 3 * cw, f - 3 * cf));
  83.                 //sta(d+1,i,w-3*cw,f-3*cf).Print();
  84.                 r++;
  85.             }
  86.         }
  87.         if (weather[d + 1] != 3 && w >= 2 * cw && f >= 2 * cf)
  88.         {
  89.             for (auto u : q[i])
  90.                 if (dp[d + 1][u][w - 2 * cw][f - 2 * cf] < dp[d][i][w][f])
  91.                 {
  92.                     dp[d + 1][u][w - 2 * cw][f - 2 * cf] = dp[d][i][w][f];
  93.                     last[d + 1][u][w - 2 * cw][f - 2 * cf] = sta(d, i, w, f);
  94.                     if (!vis[d + 1][u][w - 2 * cw][f - 2 * cf])
  95.                     {
  96.                         vis[d + 1][u][w - 2 * cw][f - 2 * cf] = 1;
  97.                         que.push(sta(d + 1, u, w - 2 * cw, f - 2 * cf));
  98.                         //sta(d+1,u,w-2*cw,f-2*cf).Print();
  99.                         r++;
  100.                     }
  101.                 }
  102.         }
  103.         if (i == 39 || i == 62)
  104.         {
  105.             for (int w1 = 0; w1 * 3 <= Heavy - w * 3 - f * 2 && w1 * 10 <= dp[d][i][w][f] && w1 + w <= W; w1++)
  106.                 for (int
  107.                          f1 = 0;
  108.                      (w1 + w) * 3 + (f1 + f) * 2 <= Heavy && w1 * 10 + f1 * 20 <= dp[d][i][w][f] && f1 + f <= F; f1++)
  109.                     if (dp[d][i][w + w1][f + f1] < dp[d][i][w][f] - (w1 * 10 + f1 * 20))
  110.                     {
  111.                         dp[d][i][w + w1][f + f1] = dp[d][i][w][f] - (w1 * 10 + f1 * 20);
  112.                         last[d][i][w + w1][f + f1] = sta(d, i, w, f);
  113.                         if (!vis[d][i][w + w1][f + f1])
  114.                         {

  115.                             vis[d][i][w + w1][f + f1] = 1;
  116.                             que.push(sta(d, i, w + w1, f + f1));
  117.                             //sta(d,i,w+w1,f+f1).Print();
  118.                             r++;
  119.                         }
  120.                     }
  121.         }
  122.         if (w >= cw && f >= cf && dp[d + 1][i][w - cw][f - cf] < dp[d][i][w][f])
  123.         {
  124.             dp[d + 1][i][w - cw][f - cf] = dp[d][i][w][f];
  125.             last[d + 1][i][w - cw][f - cf] = sta(d, i, w, f);
  126.             if (!vis[d + 1][i][w - cw][f - cf])
  127.             {
  128.                 vis[d + 1][i][w - cw][f - cf] = 1;
  129.                 que.push(sta(d + 1, i, w - cw, f - cf));
  130.                 //sta(d+1,i,w-cw,f-cf).Print();
  131.                 r++;
  132.             }
  133.         }
  134.     }
  135. }
  136. void getans(int d, int i, int w, int f)
  137. {
  138.     sta u = last[d][i][w][f];
  139.     if (!u.check())
  140.         getans(u.d, u.i, u.w, u.f);
  141.     printf("%d %d %d %d\n", d, i, w, f);
  142. }
  143. int main()
  144. {
  145.     cin >> n >> m;
  146.     memset(dp, -1, sizeof(dp));
  147.     for (int a, b, i = 1; i <= m; i++)
  148.     {
  149.         cin >> a >> b;
  150.         dis[a][b] = 1, q[a].push_back(b);
  151.     }
  152.     for (int i = 1; i <= 30; i++)
  153.         cin >> weather[i];
  154.     bfs();
  155.     int T = 64;
  156.     sta ans(0, T, 0, 0);
  157.     double aaans = 0;
  158.     for (int d = 0; d <= 30; d++)
  159.         for (int w = 0; w <= W; w++)
  160.             for (int f = 0; f <= F; f++)
  161.                 if (dp[d][T][w][f] != -1 && 1.0 * dp[d][T][w][f] + w * 2.5 + f * 5 > 1.0 * dp[ans.d][ans.i][ans.w][ans.f] + ans.w * 2.5 + ans.f * 5)
  162.                     ans = sta(d, T, w, f), aaans = 1.0 * dp[d][T][w][f] + w * 2.5 + f * 5;
  163.     cout << aaans << "\n";
  164.     for (int d = 0; d <= 30; d++)
  165.         for (int w = 0; w <= W; w++)
  166.             for (int f = 0; f <= F; f++)
  167.                 if ((int)(1.0 * dp[d][T][w][f] + ans.w * 2.5 + ans.f * 5) == aaans)
  168.                 {
  169.                     getans(d, T, w, f);
  170.                     puts("==================");
  171.                 }
  172.     return 0;
  173. }
复制代码
Snipaste_2021-08-04_17-34-51.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-8-4 18:01:17 | 显示全部楼层    本楼为最佳答案   
一世轻尘 发表于 2021-8-4 17:42
这是数学建模国赛一等奖的代码,太复杂了,看懂估计要花费很长时间,代码的思路没有问题,而且作者在比赛的 ...

不发代码,怎么可能知道发生了什么?
g++ -g -Wall -mcmodel=medium -o main main.cpp

https://blog.csdn.net/www_helloworld_com/article/details/88964968
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-27 03:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表