首页 > 其他分享 >P8794 [蓝桥杯 2022 国 A] 环境治理

P8794 [蓝桥杯 2022 国 A] 环境治理

时间:2024-04-09 11:59:42浏览次数:16  
标签:return int P8794 long 蓝桥 2022 const

P8794 [蓝桥杯 2022 国 A] 环境治理 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

#include <iostream>
using namespace std;
#define ll long long
const int N=150;
const int inf=0x7fffffff;
int n,q;
int d[N][N],l[N][N];
int t[N][N];
void floyd()
{
    for(int k=0;k<n;k++)
    {
        for(int i=0;i<n;i++)
        {
            for(int j=0;j<n;j++)
            {
                t[i][j]=min(t[i][j],t[i][k]+t[k][j]);
            }
        }
    }
}
bool check(int mid)
{
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            t[i][j]=d[i][j];//临时数组
    for(int i=0;i<n;i++)
    {
        int x=mid/n;//x为mid天灰尘度下降的数值
        if(mid%n>=i+1)//如果治理的天数到第i号城市
            x++;
        for(int j=0;j<n;j++)
        {
            t[i][j]=max(t[i][j]-x*2,l[i][j]);
            //治理的城市,与他相连的路都要减少,所以要减去x*2.
        }
    }
    floyd();//求灰尘度最小的路
    int res=0;
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            res+=t[i][j];
        }
    }
    if(res>q)
        return false;
    else
        return true;
}
int main()
{
    cin>>n>>q;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            cin>>d[i][j];
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            cin>>l[i][j];
    int i=0,j=1e9,ans=-1;
    while(i<j)//二分所需的天数
    {
        int mid=(i+j)/2;
        if(check(mid))
            j=mid,ans=j;//如果永远不满足,则check()永远不会为true
        else
            i=mid+1;
    }
    cout<<ans;
    return 0;
}

标签:return,int,P8794,long,蓝桥,2022,const
From: https://blog.csdn.net/2302_77047789/article/details/137473727

相关文章

  • Origin2022中文版如何绘制反向双轴柱状图?
    柱形图是科研中经常用到的,今天给大家分享创建反向双轴柱状图,可直观的在同一图表中展示两组正负数据,且即使两组数值差异较大也可正常显示,比文字描述更清晰操作步骤:1、打开Origin2022软件,在Book1中输入如下示例数据 2、选中所有数据 3、点击菜单栏中【绘图】→【柱形图,饼......
  • 蓝桥杯学习日记
    目录方法二分+区间合并搜索与图论全排列n皇后问题走迷宫树的重心图中点的层次有向图的拓扑排序数学知识数论质数:在大于1的整数中,如果只包含1和本身这两个约数,就被称为质数,或者素数质数判定-试除法null质因数:将正整数表示为一连串的质因子相乘分解质因数-试除法筛质数约数约数......
  • 蓝桥杯2014国A-排列序数(待续)
    [蓝桥杯2014国A]排列序数题目描述如果用abcd这\(4\)个字母组成一个串,有\(4!=24\)种,如果把它们排个序,每个串都对应一个序号:abcd0abdc1acbd2acdb3adbc4adcb5bacd6badc7bcad8bcda9bdac10bdca11cabd......
  • 【蓝桥·算法双周赛 第 9 场 小白入门赛】字符迁移【算法赛】题解(字符串+模运算+差分)
    思路差分数组是一种特殊的数组,它的第iii个数定义为原数组的第ii......
  • 【蓝桥·算法双周赛 第 4 场 小白入门赛】自助餐【算法赛】题解(分支+字符串)
    思路首先定义一个整型变量n和一个长整型变量ans,其中n用于存放输入的字符串个数,ans则用于累计所有字符串对应的价格。在接收到n之后,进入一个循环,在循环中,每次接收一个字符串s,并根据s的首字母判断该字符串对应的餐盘种类,并将其价格累加到ans中。具体来说,如果......
  • 蓝桥杯2018年A组-付账问题
    0.题目题目描述几个人一起出去吃饭是常有的事。但在结帐的时候,常常会出现一些争执。现在有\(n\)个人出去吃饭,他们总共消费了\(S\)元。其中第\(i\)个人带了\(a_i\)元。幸运的是,所有人带的钱的总数是足够付账的,但现在问题来了:每个人分别要出多少钱呢?为了公平起见,我们希......
  • 第十五届蓝桥杯第三期模拟赛 《台阶问题》
    问题描述小蓝要上一个楼梯,楼梯共有n级台阶(即小蓝总共要走n级)。小蓝每一步可以走a级、b级或c级台阶。请问小蓝总共有多少种方案能正好走到楼梯顶端?输入格式输入的第一行包含一个整数n。第二行包含三个整数a,b,c。输出格式输出一行包含一个整数,表示答案。答......
  • 第十四届蓝桥杯省赛研究生组python
    目录试题A:工作时长excel处理代码试题B:分糖果试题C:填充试题D:互质数的个数题解:暴力试题E:阶乘的和题解:暴力+备忘录试题F:公因数匹配题解:暴力试题G:小蓝的旅行计划题解试题A:工作时长excel处理把数据复制到excel,并选中列右键选择设置单元格格式注意:因为求和之后总小时数可能会超过2......
  • 蓝桥杯赛前突击
    蓝桥杯赛前突击1.大纲精读官方只支持Dev-cpp5.11(和平时用的差不多)。C++11的使用,在Dev-cpp工具里面选择编译选项输入-std=c++11并选择编译时加入以下命令。是支持使用unordered_map和auto的,还有__int128。一定要记得return0;去年听说是没return0;......
  • 蓝桥杯,推导部分和
    题意:给定若干个区间端点与区间和,还有若干个查询,求该查询的区间和。思路:带权并查集。总结:区间左端点-1是为了左开右闭(也可以右端点+1)。比如[1,2]=(0,2]=5,[3,4]=(2,4]=6。这样就得到了[1,4]=11(查询1可以直接得到代表元素4),处理边界情况更方便。可以思考一下,如果不......