“蔚来杯“2022牛客暑期多校训练营(加赛) K.Killer Sajin‘s Matrix

“蔚来杯“2022牛客暑期多校训练营(加赛) K题: Killer Sajin‘s Matrix Tag: 构造,贪心 阅读详情

原题链接

传送门

题目大意

给定 n , m , k n,m,k n,m,k,求大小为 n × m n \times m n×m的 01 01 01 矩阵 a a a ,满足

  • 每行每列总和为奇数;
  • 恰好有 k k k 个 1 1 1 , n m − k nm-k nm−k 个 0 0 0 ;

题解

这是一道构造题,考虑每行每列总和为奇数,所以每行每列所对应的 1 1 1 的个数必然大于等于 1 1 1 ,贪心的思想,我们先考虑在坐标 ( i , i ) (i,i) (i,i) 上放上 1 1 1 ,贪心的使得每一行列的初始值均为 1 1 1 ,然后再将剩下的均匀两个两个分配给每一行/列。
考虑,每一行的值 h i h_i hi​ 所对应的列值 w i w_i wi​ ,
显然的,对于当前的 w i w_i wi​ ,我们需要找到一个已填个数最大的值去对应,用优先队列维护即可,
同样的,对于列中数字的选择,我们也要从大到小来枚举。
特例:

  • 当 n , m n,m n,m 都为奇数且 k = n m − 2 k=nm-2 k=nm−2 时,我们发现,对于一个全是 1 1 1 的矩阵,无法满足删去一个数后使得行列同时减一来满足条件;
  • 当 k < m a x ( n , m ) k <max(n,m) k<max(n,m) 时,显然无法使得每行每列至少有一个数字;
  • 当 n , m , k n,m,k n,m,k 的奇偶性中有两个不同时,我们发现无法使得为奇数;

特判即可。
计算完我们可以发现,将剩余的值平均分配给每一行/列构造的序列是最优解,因为 2 x + 1 , 2 x − 1 2x+1,2x-1 2x+1,2x−1 的情况中包含着 2 x + 3 , 2 x − 3 2x+3,2x-3 2x+3,2x−3 , 若当前不满足,则其他构造方法必然不满足。

参考代码

#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int N=1e5+5;
int n,m,k,T;
int h[N],w[N];
int main()
{
    cin>>T;
    while(T--)
    {
        int b=0;
        scanf("%d%d%d",&n,&m,&k);
        if(n&1 && m&1 && n*m-2==k || ((n&1)+(m&1)+(k&1))%3!=0 || k<max(n,m))    //特判
        {
            puts("No");
            continue;
        }
        int t=k-n,tot=1;
        for(int i=1;i<=n;i++)
            h[i]=1;
        for(int i=1;i<=m;i++)
            w[i]=1;
        while(t)                    //构造一段序列使得其为2x+1,2x+1...2x-1,2x-1使得尽可能平均
        {
            h[tot]+=2;
            t-=2;
            tot%=n;
            tot++;
        }
        t=k-m,tot=1;
        while(t)
        {
            w[tot]+=2;
            t-=2;
            tot%=m;
            tot++;
        }
        priority_queue<pair<int,int> > q;               //用优先队列维护最大值
        queue<pair<int,int> > q1;
        vector<pair<int,int> > ans;
        for(int i=1;i<=n;i++)
            q.push(make_pair(h[i],i));
        for(int i=1;i<=m;i++)
        {
            while(w[i])              //从大到小枚举列值
            {
                w[i]--;
                if(q.empty())
                {
                    b=1;
                    break;
                }
                pair<int,int> now=q.top();            //行值
                q.pop();
                ans.push_back(make_pair(now.second,i));
                now.first--;
                if(now.first)
                    q1.push(now);
            }
            if(b)
                break;
            while(q1.size())
            {
                q.push(q1.front());
                q1.pop();
            }
        }
        if(b)
        {
            puts("No");
            continue;
        }
        puts("Yes");
        for(int i=0;i<ans.size();i++)
            cout<<ans[i].first<<" "<<ans[i].second<<endl;
    }
}
2021牛客多校#8 C-Fuzzy Graph(构造) 文章目录题目链接题目大意题解参考代码总结 题目链接 点击传送入队友家 题目大意 有一个 n(3≤n≤3 ⋅105)\ n(3\leq n\leq 3\ ·10^5) n(3≤n≤3 ⋅105)个点 m(3≤5 ⋅105)\ m(3\leq 5\ ·10^5) m(3≤5 ⋅105)条边的简单无向图,需要将每个顶点染为红绿蓝三种颜色之一。然后对于每条边,若其两个端点颜色一样,则边也变成对应颜色,否则保持黑色。 基础目标为: 仅有 阅读详情

相关推荐

如何用python开发“跳一跳”游戏【附源码】

jump_start_time = pygame.time.get_ticks() # 记录跳跃开始时间。jump_duration = current_time - jump_start_time # 计算跳跃持续时间。current_time = pygame.time.get_ticks() # 获取当前时间。jump_velocity = -15 # 设置跳跃的初始速度。# 如果小球跳跃结束,重置跳跃状态。# 根据跳跃持续时间计算跳跃高度。# 移除超出屏幕的障碍物。

helloshili2011的博客 2496

“蔚来杯”2022牛客暑假多校训练营部分题解 3

对牛客多校的部分题做一些记录 3

Log_x's Blog 757

部分旧版统信国产系统下载资源

注:全部自来网络查找,建议到官网下载最新版。

aggs1990的专栏 5252

2022牛客多校联赛加赛 题解

2022牛客多校联赛加赛 题解

weixin_51937688的博客 827

Kong API Gateway 配置与深入

Kong是一个开源的、高性能的API网关,提供了一种简单易用的服务间路由、流量管理和安全防护方案,其最初起源于Nginx Inc.,但后迁移至Apache Software Foundation。Kong支持RESTful、GraphQL、TCP/UDP等协议,可与AWS Lambda、Azure Functions、Google Cloud Functions等云函数平台集成。其主要功能包括:服务发现与负载均衡、请求代理、身份认证与授权、缓存、日志记录、监控指标、灰度发布、多种插件等。

AI天才研究院 2284

从数据库到数据仓库:数据仓库导论

本文为数据仓库导论,旨在介绍数据仓库的基本理念和应用场景,帮助读者理解数据仓库的重要性及其在企业中的实际应用。

探索大数据世界 - 深入解析数据存储、分布式计算与人工智能 2784

“蔚来杯“2022牛客暑期多校训练营10 F.Shannon Switching Game?

Tag:博弈论、DFS

PTCCTP的博客 1099

CMM软件:PC-DMIS汽车制造二次开发

PC-DMIS 是一种广泛应用于坐标测量机(CMM)的测量软件,它不仅提供了强大的测量功能,还支持用户通过二次开发来扩展其功能。二次开发可以显著提升测量效率,满足特定的测量需求,减少重复性工作,提高数据处理和分析的准确性。本节将介绍 PC-DMIS 二次开发的基本概念、开发环境的搭建以及开发中常用的工具和方法。PC-DMIS 二次开发为用户提供了强大的工具,可以显著提升测量效率、减少重复性工作并提高数据处理和分析的准确性。

kkchenjj的博客 1814

2021牛客多校#1 Alice and Bob(博弈论)

文章目录题目链接题目大意题解参考代码总结 题目链接 https://ac.nowcoder.com/acm/contest/11166/A 题目大意 有两堆石头,数量分别为 n,m 。两个人轮流操作,每次可以从一堆石头中拿走 k(k>0)k(k>0)k(k>0)块石头,在另一堆中拿走s∗k(s≥0)s*k(s≥0)s∗k(s≥0)个石头。 不能操作者输。双方均采取最优策略,求先手胜还是后手胜。 题解 由于Alice和Bob都是 电脑 聪明人所以他们每一步都是最优解,即

PTCCTP的博客 1075

某易将军令口令纯算法还原py篇

算法开源,将军令口令算法。希望官方多多更新吧

任雪飘的博客 3909

redhawk:Low Power Analysis

1.rush current与switch cell 在standby状态下为了控制leakage power我们选择power gating的设计方式,使用power switch cell关闭block/power domain的电源。 power switch的基本介绍可见: 低功耗设计-Power Switch power switch的table中有四种状态,对应block工作、待机和上电,下电。low power analysis主要分析上电的过程。 上电过程可以看做mos电容

m0_61544122的博客 3206

“蔚来杯“2022牛客暑期多校训练营(加赛) G.Good red-string

Tag:前后缀,栈

PTCCTP的博客 600

人群仿真软件:Pathfinder_(14).与其他软件的集成与互操作

在人群仿真软件的二次开发中,与其他软件的集成和互操作是非常重要的。通过数据导入导出、接口调用和脚本编写,可以显著提升仿真的准确性和实用性。Pathfinder提供了多种数据格式的支持和丰富的API,使得与其他软件的集成变得简单高效。无论是建筑模型的导入、仿真结果的导出,还是实时数据的交换,Pathfinder都能满足用户的需求。

kkchenjj的博客 1017

2022暑期牛客多校训练第5场 A.Don‘t Starve

Tag:DP

PTCCTP的博客 453

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

“蔚来杯“2022牛客暑期多校训练营10 I.Yet Another FFT Problem?

Tag:鸽巢原理,枚举

PTCCTP的博客 425

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

2021牛客多校#4 E-Tree Xor

文章目录题目链接题目大意题解参考代码 题目链接 传送门 题目大意 给定一棵n(1≤n≤105)n(1 \leq n \leq 10^5)n(1≤n≤105)的节点的树,第iii个节点的权值为WiW_iWi​。 但并不知道WiW_iWi​的值,只知道WiW_iWi​在∣Li,Ri∣(0≤Li≤Ri≤230)|L_i,R_i|(0 \leq L_i \leq R_i \leq 2^{30})∣Li​,Ri​∣(0≤Li​≤Ri​≤230)。 (u,v)(u,v)(u,v)两端点的异或值Wu⊕Wv(0≤Wu⊕Wv

PTCCTP的博客 407

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

2021牛客多校#6 H-Hopping Rabbit(扫描线,线段树)

文章目录题目链接题目大意题解参考代码总结 题目链接 传送门 题目大意 有一只兔子想在草原上随意地跳动,它每一跳距离为ddd,而猎人在草原上布置了nnn个矩形陷阱,给出每个陷阱的左下角坐标和右上角坐标,求兔子的初始位置(x0+0.5,y0+0.5)(−1e9≤x0,y0≤1e9)(x_0+0.5,y_0+0.5)(-1e9 \leq x_0,y_0 \leq 1e9)(x0​+0.5,y0​+0.5)(−1e9≤x0​,y0​≤1e9)使得它永远不会碰到陷阱,输出x0,y0x0,y0x0,y0. 题解 由于兔

PTCCTP的博客 389

“蔚来杯“2022牛客暑期多校训练营9 C.Global Positioning System

Tag:Tarjan,树上差分

PTCCTP的博客 371

2021牛客多校#4 B- Sample Game

文章目录题目链接题目大意题解参考代码 题目链接 传送门 题目大意 有一个可以生成111到n(1≤n≤100)n(1 \leq n \leq 100)n(1≤n≤100)的随机数生成器,生成x(1≤x≤n)x(1 \leq x \leq n)x(1≤x≤n)的概率为pxp_xpx​。 输入WiW_iWi​,pip_ipi​的计算公式为wi∑j=1nWj\frac{w_i}{\sum^n_{j=1}W_j}∑j=1n​Wj​wi​​. 现在一次执行以下操作: 1.随机生成一个数xxx; 2.若xxx是之前生成的

PTCCTP的博客 370

2021牛客多校#1 I-Increasing Subsequence

文章目录题目链接题目大意题解参考代码总结 题目链接 链接 https://ac.nowcoder.com/acm/contest/11166/I 题目大意 Alice和Bob在一个大小为 n(1≤n≤5000)n(1\leq n\leq 5000)n(1≤n≤5000) 的排列PPP上玩游戏,双方轮流选择数字。 每一轮中,当前玩家需要选择一个比之前双方选择过的元素都大的元素。并且若该玩家之前选择了PiP_iPi​,当前回合选择了PjP_jPj​,则必须满足j>ij>i

PTCCTP的博客 368

2021牛客多校#9 G-Glass Balls(期望dp)

文章目录题目链接题目大意题解参考代码 题目链接 https://ac.nowcoder.com/acm/contest/11260/G 题目大意 有一棵 nnn 个节点的树,根为 111,每个节点上有个玻璃球。 对于 vvv 的任意儿子 uuu , uuu 的高度比 vvv 高 111 个单位,因而 uuu 上的玻璃球可以沿 (u,v)(u,v)(u,v) 边滚到 vvv 。球烟一条边滚动需要花费 111 秒。 所有球同时开始滚动。有一些节点是可储存节点,其中根节点必定是可储存节点,其他节点有 ppp 的概

PTCCTP的博客 351

2021牛客多校#2 G- League of Legends

文章目录题目大意题解参考代码总结 题目大意 有n(1≤n≤5000)n(1 \leq n \leq 5000)n(1≤n≤5000)个人要打游戏,他们必须在空闲的时间打,第iii个人的空闲时间为∣ai,bi∣(1≤ai≤bi<105)\left|a_i,b_i\right|(1 \leq a_i \leq b_i < 10^5)∣ai​,bi​∣(1≤ai​≤bi​<105)。 有k(k≤n)k(k \leq n)k(k≤n)个游戏组,每人至少加入一组。当组内所有人都空闲时,他们会开始玩游

PTCCTP的博客 348

2021牛客多校#6 J-Defend Your Country(Tarjan)

文章目录题目链接题目大意题解参考代码总结 题目链接 队友去哪里了? 题目大意 给你一个nnn个节点,mmm条边的图,给出每个点的权值WiW_iWi​,你可以拆任意条边,使得它的价值最大,价值计算如下:如果一个分图的联通分量为偶数,则这个分图的价值为里面的权值之和,若为奇数,则为权值之和的相反数。 题解 由题意得,我们需要将图上的分图连通块个数尽量凑成偶数。 所以我们对该图中的分图进行如下处理:(n为每个分图连通块数量) 1、若nnn为偶数,则不需要进行处理; 2、若nnn为奇数,将其分为一个孤点和若干偶数块

PTCCTP的博客 346

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 231

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 318
上一篇: “蔚来杯“2022牛客暑期多校训练营9 C.Global Positioning System
下一篇: “蔚来杯“2022牛客暑期多校训练营(加赛) G.Good red-string
PTCCTP
博客等级 码龄5年 346粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值