codeforces 1012B 题解(建图,思维,并查集)

Codeforces 图论板刷总结(更新中) 图论太菜了呀,那怎么办呀,刷点题吧,写下来可以以后复习,或者造福后人? 大概就从这开始刷吧:Link 题目对应简略思路+题解786B 区间图最段路741C 构造题 二分图567E 最短路DAG必经边527E 欧拉回路 786B 区间图最段路 没啥好说的,标准的区间图最短路,建议整理板子。我的板子:Link 741C 构造题 二分图 很容易被搞到2-sat上去,但是猜到一定有解的情况下, 构造出二分... 阅读详情

原题链接:
洛谷:点我QωQ
CF:点我QωQ

题意简述

给定一个矩阵,大小为 n ∗ m n*m n∗m。其中有 k k k个位置被确定了。当然,也珂以通过这样的方式确定:
如果 ( r 1 , c 1 ) , ( r 1 , c 2 ) , ( r 2 , c 1 ) (r_1,c_1),(r_1,c_2),(r_2,c_1) (r1​,c1​),(r1​,c2​),(r2​,c1​)被确定了,那么 ( r 2 , c 2 ) (r_2,c_2) (r2​,c2​)也被确定了。

在这 k k k个位置确定后,你要人工确定一些位置使得全部被确定。求最小人工确定数。

数据

输入

第一行 n , m , k n,m,k n,m,k( n , m < = 2 e 5 , k < = m i n ( n , m ) n,m<=2e5,k<=min(n,m) n,m<=2e5,k<=min(n,m))
接下来 k k k行,每行一个 ( x , y ) (x,y) (x,y),表示位置 ( x , y ) (x,y) (x,y)被确定了

输出

最小的人工确定数。

样例

输入
2 2 3
1 2
2 2
2 1
输出
0

输入
1 5 3
1 3
1 1
1 5
输出
2

输入
4 3 6
1 2
1 3
2 2
2 3
3 1
3 3
输出
1

思路

我们如何维护上面说的, ( r 1 , c 1 ) , ( r 1 , c 2 ) , ( r 2 , c 1 ) (r1,c1),(r1,c2),(r2,c1) (r1,c1),(r1,c2),(r2,c1) 都被确定时, ( r 2 , c 2 ) (r2,c2) (r2,c2) 也被确定了?

而且,观察到, n , m n,m n,m 都很大, O ( n m ) O(nm) O(nm) 的算法不可取。然后我们就有一个好想法:把行和列的编号看作点,对于一个给定的点 ( a , b ) (a,b) (a,b),并查集合并第 a a a 行和第 b b b 列。这样的时空复杂度是 O ( n + m ) O(n+m) O(n+m) 的!

验证一下上面说的, r 1 , c 1 r1,c1 r1,c1 连一条边, r 1 , c 2 r1,c2 r1,c2 连一条边, r 2 , c 1 r2,c1 r2,c1 连一条边,此时我们发现, r 2 − > c 1 − > r 1 − > c 2 r2->c1->r1->c2 r2−>c1−>r1−>c2,所以 r 2 , c 2 r2,c2 r2,c2 也是联通的!

目标状态就是所有点都被确定了,也就是要让所有点都联通。假设现在我们有 c n t cnt cnt 个联通块,把每个联通块看作一个点,那连出一颗树就能全部联通了。这时候还需要连的边数就是 c n t − 1 cnt-1 cnt−1。

代码

#include<bits/stdc++.h>
using namespace std;
namespace Flandle_Scarlet
{
    #define N 400100
    class DSU//并查集
    {
        public:
            int Father[N],Cnt[N];
            void Init()
            {
                for(int i=0;i<N;i++)
                {
                    Father[i]=i;
                    Cnt[i]=1;
                }
            }
            int Find(int x)
            {
                return (x==Father[x])?x:(Father[x]=Find(Father[x]));
            }
            void Merge(int x,int y)
            {
                int ax=Find(x),ay=Find(y);
                if (Cnt[ax]<Cnt[ay])
                {
                    Cnt[ay]+=Cnt[ax];
                    Father[ax]=ay;
                }
                else
                {
                    Cnt[ax]+=Cnt[ay];
                    Father[ay]=ax;
                }
            }
    }D;
    
    int n,m,k;
    #define R(x) x
    #define C(x) x+n
    //通过+n的方式区别开R和C
    void Input()
    {
        scanf("%d%d%d",&n,&m,&k);
        for(int i=1;i<=k;++i)
        {
            int u,v;
            scanf("%d%d",&u,&v);
            D.Merge(R(u),C(v));//建立初始连边
        }
    }

    void Solve()
    {
        int cnt=0;
        for(int i=1;i<=n+m;++i)
        {
            if (D.Find(i)==i) ++cnt;
            //说明i是根节点
            //在并查集中,一个根节点唯一对应一个联通块
            //所以,联通块个数=根节点个数
        }
        printf("%d\n",cnt-1);//求个数,-1
    }

    void Main()
    {
        if (0)
        {
            freopen("","r",stdin);
            freopen("","w",stdout);
        }
        D.Init();
        Input();
        Solve();
    }
};
main()
{
    Flandle_Scarlet::Main();
    return 0;
}

回到总题解界面

工业级24V电源保护电路深度解析:五重防护机制详解 自恢复保险丝(PPTC,Positive Temperature Coefficient)是一种过流保护元件✅可恢复:过流后自动恢复,无需更换⚡响应快:电流超标立即动作🔄多次使用:在额定范围内可反复使用第1层(F1):阻挡过流 → 物理熔断第2层(D3):吸收浪涌 → 能量泄放第3层(Q1):防止反接 → 逻辑阻断第4层(Q2/Q3):抵御过压 → 主动切断第5层(CR):平滑启动 → 时序控制设计哲学:"让每一级保护专注做好一件事"通过这篇文章,我们深入理解了:✅自恢复保险丝。 阅读详情

相关推荐

零基础用AHK操作Excel:从数据读取到自动填写(附完整脚本解析)

本文为零基础用户详细介绍了如何使用AutoHotkey(AHK)通过COM接口高效操作Excel,实现从数据自动读取到填写的完整自动化流程。文章包含完整的脚本解析、环境搭建指南、核心代码逐行讲解以及实际应用案例,帮助办公人员大幅提升数据处理效率,告别重复劳动。

weixin_29202213的博客 556

Codeforces Testing Round #12 B. Restaurant 贪心

B. Restaurant Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/597/problem/B Description A restaurant received n orders for the rental. Each rental order reserve the re...

weixin_33853827的博客 103

DTS中video-interfaces接口详解

视频数据管道通常由外部设备组成,例如通过I2C、SPI或UART总线控制的摄像机传感器,以及SoC内部IP块(包括视频DMA引擎和视频数据处理器)。 SoC内部块由DT节点描述,与其他SoC块放置方式类似。外部设备表示为它们各自总线控制器节点的子节点,例如I2C。 所有视频设备上的数据接口都由它们的子“port”节点描述。端口的配置取决于参与数据传输的其他设备,并由“endpoint”子节...

龙图腾的博客 9008

[Codeforces]1012C Hills 比较简单的DP

刚刚拿到一个夏令营的offer,顺便在附近城市玩了两天,算起来出门在外有10天了?重新开始补题。 ----------------------------------------------------------------------------------------------------------------------- 题目链接:http://codeforces.com/pr...

小星星的小房子 898

MPU6050 vs BMX055 vs ICM20602:如何为你的项目选择最佳陀螺仪(附实测数据对比)

本文深度对比了MPU6050、BMX055和ICM20602三款主流六轴IMU传感器的核心性能。通过实测数据,分析了它们在精度、噪声、温漂、接口速度及资源占用上的差异,并提供了从项目需求出发的选型指南,帮助开发者根据预算、精度要求和处理器性能选择最合适的陀螺仪与加速度计组合。

h0i1j2k3l的博客 971

项目实训(四)——SAM模型的学习与部署

这里的show_mask就是我们用mask的prompt进行分割,show_points就是我们用points进行分割,show_box就是通过box进行分割,这是SAM的三种prompt的方式。总的来说,Meta AI 的 Segment Anything 模型为我们提供了一种全新的物体识别和分割方式,其强大的泛化能力和广泛的应用前景将极大地推动计算机视觉领域的发展。这里有vit_h、vit_b、vit_l三种权重模型,这里可以根据自己的需要下载相应的权重模型。我们是下载的vit_h权重模型。

yyyyyyyx_的博客 1421

Codeforces Round 1012 (Div. 2)(ABCD)

每个餐桌由四个单元格定义:(3x+1,3y+1), (3x+1,3y+2), (3x+2,3y+1), (3x+2,3y+2)其中 x,y 为非负整数。如果有多张桌子的距离相同,他们会选择 x 最小的单元格,如果仍然相同,他们会选择 y 最小的单元格。与有关比较的容器有map,set,priority_queue,sort的数组。当ti为1时,优先从小根堆取点,同时要考虑当前桌子比走过剩余的角距离小的可能,这点由上图也可看出。在此基础上找到n/3以上的素数p,以p,p-1,p+1,p-2,p+2,。

qq_68286180的博客 1520

STM32硬件SPI驱动W5500以太网模块全流程(附避坑指南)

本文详细介绍了STM32硬件SPI驱动W5500以太网模块的全流程,包括硬件架构设计、SPI接口选型、官方驱动移植、网络协议栈配置与优化等关键步骤。通过实战案例和性能对比数据,帮助开发者快速实现稳定高效的网络连接,特别提供了常见问题排查指南和性能调优技巧。

weixin_29194693的博客 268

codeforces1012 B. Chemical table(并查集+思维)

B. Chemical table One of the way to solve this problem is to interprete the cells in 2d matrix as an edge in the bipartite graph, that is a cell (i, j) is an edge between i of the left part and j of the right part. 将行号放一边,列号放一边构造一个二分图,如果表格中有一点(r,c)意味着二分图左端

Fighting_Peter的博客 423

Unity3D 2022版如何一键安装Newtonsoft.Json?最新Package Manager教程

本文详细介绍了在Unity3D 2022及以上版本中,如何通过Package Manager一键安装和配置Newtonsoft.Json(Json.NET)。教程涵盖了从打开Package Manager、搜索并安装正确包源,到验证安装和基础使用的完整流程,旨在帮助开发者以现代化、可靠的方式集成这一强大的JSON处理框架,提升开发效率并规避手动导入的常见问题。

lg888的博客 921

从零到一:基于Docker与Gewechat协议,打造高可用微信AI助手

本文提供了一份从零开始的实战指南,详细讲解如何利用Docker容器化技术与Gewechat协议,构建一个高可用、低风险的微信AI助手。通过整合Dify AI平台,您可以为微信机器人注入大语言模型的智能,实现自动问答、知识库查询等高级功能,显著提升个人或团队在微信场景下的沟通与信息处理效率。

weixin_29280657的博客 160

「Codeforces 1012B」Chemical table - 并查集

建议访问原文出处,获得更佳浏览体验。 原文出处:https://hyp1231.github.io/2018/07/31/20180731-cf1012b/ 题意 给定一个 n×mn×mn \times m 的矩阵,其中 qqq 个位置已经被填充。 有一条规则,如果 (r1,c1)(r1,c1)(r_1, c_1) ,(r1,c2)(r1,c2)(r_1, c_2),(r2,c1)(r2,...

hyp1231的博客 519

2026 蓝牙技术趋势展望:信道探测、Auracast、高吞吐 HID 与 AI 融合引领行业变革

蓝牙技术2026年展望:信道探测、Auracast广播音频和AI融合将引领创新。蓝牙信道探测技术将实现亚米级精确定位,在工业资产追踪和汽车数字钥匙领域大显身手。Auracast广播音频将持续拓展公共场所应用,提升音频包容性体验。高数据吞吐量和超低延迟功能将支持AR/VR等新兴场景。AI与蓝牙的深度融合将推动可穿戴设备智能化发展,实现实时健康监测和个性化音频服务。蓝牙技术凭借其多功能性和创新力,正成为连接万物的关键技术,持续推动行业变革和生活品质提升。

专业开发者的博客,一个从事Android WiFi和蓝牙的工程师 113

Codeforces Round 1012

Codeforces Round 1012

青少年趣味编程 1062

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Codeforces Round 1012 (Div. 2)

其实题干中已经有提示了,题一定有解,sum(b)>=sum(a);和sum(a)有关,我们发现经过第一次操作后大数变为其和小数的差,小数直接变为0,然后a错位减。构造题,我们想取一个质数让 i=1时它是质数,但是当i=2时它肯定不是质数了,那么i=3时。一开始的想法是类似于一个dp看看这个1的左侧和上侧有没有1,如果有是对的不然直接退出。其实想法和答案以经很接近了,就是找每一个数变为0的步数然后求一个最大值,但是没往深想。就是动态维护一下起点到哪些桌子点最小的点,和到座位最小的点,可以用小根堆维护。

gyc271828的博客 2374

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Codeforces -1012B Chemical table (思维+并查集)

题目链接 题意:给出一个N*M的空矩阵,然后给出一个Q,随后Q行是Q个点的x和y坐标,若已知这样三个点(x1,y1),(x2,y1),(x1,y2),可以在(x2,y2)处生成一个新的点,对于新的点和被使用过的点都能重复使用,问你最少需要在矩阵汇总添加多少个点是的整个矩阵被点铺满? 题解:通过画图可以发现我们对于一个N*M的空矩阵,我们最少填加n+m-1个点就能再通过题意给出的操作不断生成新的...

Fushicho_XF的博客 522

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Codeforces Round 1012 (Div. 2)(A-D)

补题被C题gank了

Vcoistnt的博客 393

Codeforces Round 1012 (Div. 2)(A-E1)

如果prj<=pri 则从i-j ai能被消为0,所以题意就转为寻找对于每个i位置能让prj<=pri的最大j-i差值。可发现ti=0只会坐在距离为对3取模为1的位置,ti=1会坐在距离最近同时依据(x,y)排序最小的位置。题目说人话就是ti=1的客人会坐在最近的空位上,ti=0的客人会坐在最近的空桌上,问每个人位置。所以题目就改为寻找一个>=n/3&&<=n/2的素数 n<=10^5 用最简单的线性筛即可。那我连续输出i i-1 i+1 i-2 i+2 i-3 i+3 ……

YeLveyu的博客 730

[Codeforces 1012B] Chemical table

题目链接:http://codeforces.com/problemset/problem/1012/B 题目大意: 有一个n*m的矩阵, 初始时有q个点, 对于任意一个面积不为0的矩形来说, 如果具备其中三个顶点, 则可以产生剩下的第四点, 求最少补充多少个点能够生成所有这n*m个点。(n,m≤2∗105,q≤min(n∗m,2∗105))(n,m≤2∗105,q≤min(n∗m,2∗105...

zhysora的博客 502

并查集在实际问题中的应用

并查集:用以将元素高效分组以及区分。 题目来源:codeforces 1012B 原问题如下,在一个(n*m)的table上,element会做出一种增值行为,如果有三个物质处于某个矩形的三个顶点上,那么在第四个顶点上会自动增值出一个element。现在table上已经存在了一些物质,求出最少仍需多少额外的物质,使得其可以将table覆盖。 对于解这道题来说,灵活的转化思想非常重要。首先我们...

rgndao的博客 918

Codeforces Round 1012 (Div. 2) 3.23

根据“0/1”,分别从“zhuo”“p”小顶堆中取出位置,同时用map标记去重。题意很好懂,每一行每一列从左往右,从下往上都是非递增,也就是0需要在前面。每次先找到距离每张桌子最近的点,将其存在"zhuo"小顶堆里。刚开始太草率了,只开了个两重循环,感觉不对劲,果然wa了。数据类型为“tuple”,分别存放: 距离,x , y。注意:只能从走廊穿过,肯定不能踩着桌子过!将这张桌上的每个点全存放在“p”小顶堆里。到达桌子的右上角需要:x+y+2。开两重循环,将可能到达的位置用。其他三个位置需要:x+y。

2301_81692739的博客 1208

Codeforces1012B Chemical table

Problem Codeforces Solution 比较有意思的一道题目,考虑怎么把生成药品的条件转化,所以其实考的是构造。。 如果我们把行和列都拆成点,那么这个表格(r,c)(r,c)(r,c)上的药品就可以看做是表示rrr行的点和表示ccc列的点连了一条边。这个时候我们再来考虑一下生成一个药品的条件,如果存在(r1,c1),(r1,c2),(r2,c1)(r_1,c_1),(r_1,c_2...

Rayment的博客 375

CF1012F Passports

http://codeforces.com/problemset/problem/1012/F 题解 考虑\(p=1\)的情况。 我们可以把题意理解成平面上有一些线段,你需要给每条线段分配一个长度给定的预备线段,使得预备线段要在它所属的线段前面,并且所有线段不能相交。 因为我们只需要弄出一组解来,所以我们可以直接设\(dp[s]\)表示\(s\)集合内的所有旅行都办好了签证,最后拿到护照的最小时间...

weixin_30527423的博客 104

Chemical table CodeForces - 1012B

题意:   一个棋盘 对于任何一个棋盘中的矩形 如果 任意三角存在棋子 则第四个角会自动生成一个棋子 求铺满整个棋盘 我们至少要向棋盘里加多少枚棋子 解析:   这题就是求图中有多少个连通图,可以直接dfs 也可以 并查集 为什么是求多少个连通图呢 并查集: #include <bits/stdc++.h> #define mem(a, b) ...

babing2770的博客 160

Codeforces Round 1012 (Div. 2) A-C

小B和小K轮流挖洞,每天小B先挖x米深,小K再挖y米深,宝藏藏在a.5米深,问谁先挖到。

qq_34832548的博客 439
上一篇: poj 3237 Tree 题解(树链剖分,线段树)
下一篇: bzoj 1026 [SCOI2009]windy数 题解(数位DP)
LightningUZ
博客等级 码龄9年 33粉丝 254原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值