鱼C论坛

 找回密码
 立即注册
查看: 227|回复: 1

为什么c跟d一直显示0啊,按照代码逻辑不是200 500吗

[复制链接]
发表于 2024-1-9 22:14:11 | 显示全部楼层 |阅读模式

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

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

x

  1. /////差分模板//////
  2. //  void insert(int x1,int y1,int x2,int y2,int c)
  3. // {
  4. //     b[x1][y1]+=c;
  5. //     b[x2+1][y1]-=c;
  6. //     b[x1][y2+1]-=c;
  7. //     b[x2+1][y2+1]+=c;


  8. // }
  9. //  for(int i=1;i<=n;i++)
  10. //     {
  11. //         for(int j=1;j<=m;j++)
  12. //         {
  13. //             insert(i,j,i,j,a[i][j]);
  14.             

  15. //         }

  16. //     }
  17. //     while(q--)
  18. //     {
  19. //         int x1,y1,x2,y2,c;
  20. //         cin>>x1>>y1>>x2>>y2>>c;
  21. //         insert(x1,y1,x2,y2,c);

  22. //     }
  23. //     for(int i=1;i<=n;i++)
  24. //         {
  25. //             for(int j=1;j<=m;j++)
  26. //             {
  27. //                 b[i][j]+=b[i-1][j]+b[i][j-1]-b[i-1][j-1];
  28.                
  29. //             }
  30. //         }
  31. //////////////////
  32. ///二维前缀和模板///
  33. //  int x1,y1,x2,y2;
  34. //         cin>>x1>>y1>>x2>>y2; //表示行号和列号
  35. //         cout<<s[x2][y2]-s[x1-1][y2]-s[x2][y1-1]+s[x1-1][y1-1]<<endl;

  36. //////////并查集模板///////
  37. // int f[N];
  38. // int find(int x)
  39. // {
  40. //     if(f[x]==x)return f[x];
  41. //     f[x]=find(f[x]);
  42. //     return f[x];

  43. // }
  44. // int main()
  45. // {
  46. //     int n,m; // m表示多少次询问(操作)
  47. //     cin>>n>>m;
  48. //     for(int i=1;i<=n;i++) f[i]=i;
  49. //     while(m--)
  50. //     {
  51. //         char op;
  52. //         int a,b;
  53. //         cin>>op>>a>>b;
  54. //         if(op=='M') //将两个集合进行合并
  55. //         {
  56. //             int fa=find(a),fb=find(b);
  57. //             if(fa!=fb)f[fa]=fb;

  58. //         }
  59. //         else
  60. //         {
  61. //             if(find(a)==find(b))cout<<"yes"<<endl;
  62. //             else cout<<"no"<<endl;
  63. //         }

  64. //     }


  65. // }

  66. #include <bits/stdc++.h>
  67. using namespace std;
  68. const int N=2e5+10;
  69. typedef long long ll;
  70. #define x first
  71. #define y second
  72. typedef pair<int,int>p;
  73. int dx[]={-1,0,1,0},dy[]={0,-1,0,1}; //上左下右
  74. void solve()
  75. {
  76.     int n,a,b;   // a为需要满足的水,b为马克杯的容量   
  77.     int c=0,d=0;
  78.     cin>>n>>a>>b;
  79.     while(n--)
  80.     {
  81.         if(c==a)
  82.         {
  83.             c-=a;

  84.         }
  85.         else if(d==0)
  86.         {
  87.             d==b;
  88.         }
  89.         else
  90.         {
  91.             int ans=min(a-c,d);  //表示要减到多少
  92.             c+=ans;
  93.             d-=ans;
  94.         }
  95.     }
  96.     cout<<c<<" "<<d<<endl;

  97.      
  98. }
  99. int main()
  100. {
  101.     int t;
  102.     t=1;
  103.     while(t--)
  104.     {
  105.         solve();
  106.     }
  107. }
  108. //开始值 0 0
  109. // 0 200     c=0 , b=200     
  110. // 100 100   a+=100, b-a=100
  111. // 0   100   倒掉   
  112. // 100  0
  113. // 0   0  (这个要么为0要么就是满)  //此时又是一个循环



  114. // c  d
  115. // 0 500    //第三中情况
  116. // 500-300 300  
  117. //  ans=300   
  118. // 300 200     c+a     d-a
  119. //ans=200
  120. // 2
  121. // 0   200     c+ans     d-=ans
  122. // 200  0   //此时不满足,所以不用
  123. // 200  300      //第五次
  124. // 300  200      // 第六次
  125. // 0    200      //
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-1-9 22:14:25 | 显示全部楼层
根据你提供的代码,似乎出现了一些错误和逻辑问题。首先,`insert`函数中的操作似乎存在冗余,可以简化为`b += c;`。其次,在第一个for循环中,没有给`i`赋初值,导致可能无法进入循环。此外,对于第二个for循环,无法确定变量`op`的值是什么,所以无法确定输出的内容。最后,在判断`op`的值时,需要使用单引号`' '`而不是双引号`" "`。

下面是修正后的代码:

  1. void insert(int x1, int y1, int x2, int y2, int c)
  2. {
  3.     b += c;
  4. }

  5. int main()
  6. {
  7.     int x1, y1, x2, y2, c;
  8.     for (int i = 1; i <= n; i++)
  9.     {
  10.         cin >> x1 >> y1 >> x2 >> y2 >> c;
  11.         insert(x1, y1, x2, y2, c);
  12.     }

  13.     for (int i = 1; i <= m; i++)
  14.     {
  15.         cin >> x1 >> y1 >> x2 >> y2; //表示行号和列号
  16.         cout << m;
  17.     }

  18.     char op;
  19.     int a, b;
  20.     while (cin >> op >> a >> b)
  21.     {
  22.         if (op == 'M') //将两个集合进行合并
  23.         {
  24.             int fa = find(a), fb = find(b);
  25.             if (fa != fb)
  26.                 f = fb;
  27.         }
  28.         else
  29.         {
  30.             if (find(a) == find(b))
  31.                 cout << "0";
  32.         }
  33.     }

  34.     return 0;
  35. }
复制代码


请注意,以上代码只是根据您提供的部分代码进行了修正,并无法确定是否完全符合您的需求。如果您能够提供更多的代码和问题细节,我将能够更具体地帮助您解决问题。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 11:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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