为什么c跟d一直显示0啊,按照代码逻辑不是200 500吗
/////差分模板//////
//void insert(int x1,int y1,int x2,int y2,int c)
// {
// b+=c;
// b-=c;
// b-=c;
// b+=c;
// }
//for(int i=1;i<=n;i++)
// {
// for(int j=1;j<=m;j++)
// {
// insert(i,j,i,j,a);
// }
// }
// while(q--)
// {
// int x1,y1,x2,y2,c;
// cin>>x1>>y1>>x2>>y2>>c;
// insert(x1,y1,x2,y2,c);
// }
// for(int i=1;i<=n;i++)
// {
// for(int j=1;j<=m;j++)
// {
// b+=b+b-b;
// }
// }
//////////////////
///二维前缀和模板///
//int x1,y1,x2,y2;
// cin>>x1>>y1>>x2>>y2; //表示行号和列号
// cout<<s-s-s+s<<endl;
//////////并查集模板///////
// int f;
// int find(int x)
// {
// if(f==x)return f;
// f=find(f);
// return f;
// }
// int main()
// {
// int n,m; // m表示多少次询问(操作)
// cin>>n>>m;
// for(int i=1;i<=n;i++) f=i;
// while(m--)
// {
// char op;
// int a,b;
// cin>>op>>a>>b;
// if(op=='M') //将两个集合进行合并
// {
// int fa=find(a),fb=find(b);
// if(fa!=fb)f=fb;
// }
// else
// {
// if(find(a)==find(b))cout<<"yes"<<endl;
// else cout<<"no"<<endl;
// }
// }
// }
#include <bits/stdc++.h>
using namespace std;
const int N=2e5+10;
typedef long long ll;
#define x first
#define y second
typedef pair<int,int>p;
int dx[]={-1,0,1,0},dy[]={0,-1,0,1}; //上左下右
void solve()
{
int n,a,b; // a为需要满足的水,b为马克杯的容量
int c=0,d=0;
cin>>n>>a>>b;
while(n--)
{
if(c==a)
{
c-=a;
}
else if(d==0)
{
d==b;
}
else
{
int ans=min(a-c,d);//表示要减到多少
c+=ans;
d-=ans;
}
}
cout<<c<<" "<<d<<endl;
}
int main()
{
int t;
t=1;
while(t--)
{
solve();
}
}
//开始值 0 0
// 0 200 c=0 , b=200
// 100 100 a+=100, b-a=100
// 0 100 倒掉
// 1000
// 0 0(这个要么为0要么就是满)//此时又是一个循环
// cd
// 0 500 //第三中情况
// 500-300 300
//ans=300
// 300 200 c+a d-a
//ans=200
// 2
// 0 200 c+ans d-=ans
// 2000 //此时不满足,所以不用
// 200300 //第五次
// 300200 // 第六次
// 0 200 // 根据你提供的代码,似乎出现了一些错误和逻辑问题。首先,`insert`函数中的操作似乎存在冗余,可以简化为`b += c;`。其次,在第一个for循环中,没有给`i`赋初值,导致可能无法进入循环。此外,对于第二个for循环,无法确定变量`op`的值是什么,所以无法确定输出的内容。最后,在判断`op`的值时,需要使用单引号`' '`而不是双引号`" "`。
下面是修正后的代码:
void insert(int x1, int y1, int x2, int y2, int c)
{
b += c;
}
int main()
{
int x1, y1, x2, y2, c;
for (int i = 1; i <= n; i++)
{
cin >> x1 >> y1 >> x2 >> y2 >> c;
insert(x1, y1, x2, y2, c);
}
for (int i = 1; i <= m; i++)
{
cin >> x1 >> y1 >> x2 >> y2; //表示行号和列号
cout << m;
}
char op;
int a, b;
while (cin >> op >> a >> b)
{
if (op == 'M') //将两个集合进行合并
{
int fa = find(a), fb = find(b);
if (fa != fb)
f = fb;
}
else
{
if (find(a) == find(b))
cout << "0";
}
}
return 0;
}
请注意,以上代码只是根据您提供的部分代码进行了修正,并无法确定是否完全符合您的需求。如果您能够提供更多的代码和问题细节,我将能够更具体地帮助您解决问题。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]