2 条题解

  • 0
    @ 2025-10-29 20:17:29

    #include <stdio.h> int main(){ int k,n,m,x; scanf("%d",&x); while(x--){ scanf("%d %d %d",&k,&n,&m); int sum=0; if(k%20){ sum=(n+2*m)/k; printf("%d\n",sum); } else if(k1){ sum=m+n; printf("%d\n",sum); } else { sum=m/(k/2)<n?m/(k/2):n;//将2和1配组 ,完整的几个2和1成一组,取完整组数,即要最小值,无论2多或少或1 或多或少,都不是完整的一个1加几个2 n-=sum;//一次用一个1 m-=(k/2sum);//sum次用了几个大水水晶球 if(m0&&n0){ printf("%d\n",sum); } else if(m0){ sum+=n/k; }else if(n0){ sum+=m/((k+1)/2);//k+1是因为k为奇数,加1变为偶数,除以二得到需要大水晶球的个数,然后m/(k+1)/2,为剩余的大水晶球能充能几次 }else { sum+=((n+2m)/k); } printf("%d\n",sum); } } return 0; }

    • 0
      @ 2025-10-27 15:14:59
      #include <bits/stdc++.h>
      using namespace std;
      #define int long long
      int n,m,k;
      signed main() 
      {
      	ios::sync_with_stdio(false);
      	cin.tie(0),cout.tie(0);
      	int t;
      	cin >> t;
      	while(t--)
      	{
      		int res=0;
      		cin >> k >> n >> m;
      		if(k%2==0)
      		{
      			cout << (n+2*m)/k << endl;
      		}
      		else if(k==1)
      		{
      			cout << n+m << endl;
      		}
      		else
      		{
      			res=min(m/(k/2),n);
      			n-=res;
      			m-=(k/2*res);
      			if(m==0&&n==0)
      			{
      				cout << res << endl;
      				continue;
      			}
      			else if(m==0)
      			{
      				res+=(n/k);
      			}
      			else if(n==0)
      			{
      				res+=(m/((k+1)/2));
      			}
      			else
      			{
      				res+=((n+2*m)/k);
      			}
      			cout << res << endl;
      		}
      	}
      }
      

      k为偶数:不会浪费能量,直接算即可;

      特判k==1;

      k为奇数时:

      ex1 : 对于k=5,n=2,m=10的,每次充能先将小水晶填充一个,剩下全都用大水晶填充,res = 2;

      ex2 : 对于k=5,n=10,m=7,重复上面的过程,res = 3;

      m/(k/2)是按这种方式大水晶可以填充的块数,n就是这种方式小水晶可以填充的块数;

      再判断:

      (1)n=0,m=0,正好全部填充完;

      (2)n>0,m=0,直接算;

      (3)n=0,m>0,也可以直接算,注意(k+1),否则每次需要的块数少算一个;

      (4)n>0,m>0,此时必定为n>0,m<(k/2)(可以想一下为什么),直接算即可,大水晶的能量不可能被浪费.

      • 1

      信息

      ID
      1156
      时间
      1000ms
      内存
      256MiB
      难度
      8
      标签
      (无)
      递交数
      305
      已通过
      36
      上传者