我的牛牛吃不明白了 求好心人帮帮
查看原帖
我的牛牛吃不明白了 求好心人帮帮
877860
Just_Love_You楼主2023/8/15 17:21

思路是tmpl tmpr 检查该位置是否可以分着吃

改变numl numr的位置二维前缀和求解

帮助帮助牛牛吧

#include<bits/stdc++.h>
#define endl '\n'
#define int long long
using namespace std;
constexpr int N=1e3+10;
constexpr int mod=1e9+7;
int f[N][N];
int v[N][N];
void solve()
{
    int n,m,a,b;
    int o=0;
    cin >> n >> m >> a >> b;
    
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cin >> v[i][j];
        }
    }
    for(int i=1;i<=n;i++)
    {
    	for(int j=1;j<=m;j++)
    	{
    		f[i][j]=v[i][j]+f[i-1][j]+f[i][j-1]-f[i-1][j-1];
		}
	}
    int l=0;
    int r=1e9;
    int num=a*b;
    int mid;
    while(l<=r)
    {
        int ans=0;
        int numl=0;
        int numr=0;
        int tmpl=0;
        int tmpr=0;
        mid=l+((r-l)>>1);
        for(int i=1;i<=n;i++)
        {
        	if(numl!=tmpl)
        	{
        		numr=0;
        		tmpr=0;
				numl=tmpl;
			}
            for(int j=1;j<=m;j++)
            {
            	numr=tmpr;
                if(f[i][j]-f[numl][j]-f[i][numr]+f[numl][numr]>=mid)
                {
                    ans++;
                    tmpl=i;
                    tmpr=j;
                }
            }  
        }
        if(ans>=num)
        {
            l=mid+1;
        }else r=mid-1;
    }
//    cout << mid << endl;
//     for(int i=1;i<=n;i++)
//     {
//         for(int j=1;j<=m;j++)
//         {
//             cout << f[i][j] << ' ';
//         }
//         cout << endl;
//     }
    // cout << num/(a*b) << endl;
    cout << r << endl;
}
signed main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    // int o;
    // cin >> o;
    // while(o--)
    solve();
    return 0;
}
//
//⠀⠀⠀             ⠀⢸⣿⣿⣿⠀⣼⣿⣿⣦⡀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⠀⠀⠀ ⠀⢸⣿⣿⡟⢰⣿⣿⣿⠟⠁
//⠀⠀⠀⠀⠀⠀⠀⢰⣿⠿⢿⣦⣀⠀⠘⠛⠛⠃⠸⠿⠟⣫⣴⣶⣾⡆
//⠀⠀⠀⠀⠀⠀⠀⠸⣿⡀⠀⠉⢿⣦⡀⠀⠀⠀⠀⠀⠀ ⠛⠿⠿⣿⠃
//⠀⠀⠀⠀⠀⠀⠀⠀⠙⢿⣦⠀⠀⠹⣿⣶⡾⠛⠛⢷⣦⣄⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣿⣧⠀⠀⠈⠉⣀⡀⠀ ⠀⠙⢿⡇
//⠀⠀⠀⠀⠀⠀⢀⣠⣴⡿⠟⠋⠀⠀⢠⣾⠟⠃⠀⠀⠀⢸⣿⡆
//⠀⠀⠀⢀⣠⣶⡿⠛⠉⠀⠀⠀⠀⠀⣾⡇⠀⠀⠀⠀⠀⢸⣿⠇
//⢀⣠⣾⠿⠛⠁⠀⠀⠀⠀⠀⠀⠀⢀⣼⣧⣀⠀⠀⠀⢀⣼⠇ 
//⠈⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⢀⣴⡿⠋⠙⠛⠛⠛⠛⠛⠁
//⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣾⡿⠋⠀
//⠀⠀⠀⠀⠀⠀⠀⠀⢾⠿⠋⠀
//
2023/8/15 17:21
加载中...