首页 > 其他分享 >暑假牛客多校第四场 2023-7-28

暑假牛客多校第四场 2023-7-28

时间:2023-07-28 20:44:41浏览次数:40  
标签:第四场 int end 28 多校 st off include find

未补完


L. We are the Lights


算法:反向构造

做法:
    我们用c_on, r_on, c_off, r_off分别表示倒着推的行灯打开的集合、列灯打开的集合、列灯关闭的集合、行灯关闭的集合。倒着推时,我们先考虑on的情况。为了偷懒,我们就只考虑行的情况,因为列的情况实际上是一样的。
    打开灯时,我们先查找r_on集合里是否之后要打开此行的灯,要打开就跳过,否则再找找r_off的集合中是否这行将被关闭,将被关闭也跳过。两种情况都不符合的话,我们就将这行加入r_on,并且加上这一行的最终打开的灯的数量,即ans += m - c_off.size() - c_on.size()。(注意:每一行要么出现在c_off,要么出现在c_on,因为如果这一行在从后往前推的过程中已经出现在了c_off里,那么现在你要打开这一行的灯是无意义的,因为未来你将关闭这行灯。如果这一行在从后往前推的过程中已经出现在了c_on里,那么现在你要关闭这一行的灯是无意义的,因为未来你要打开这一行的灯。)(另外,c_on.size()是为了防止重复加了某些灯。)
    关闭灯时,我们先查找r_off集合里是否之后要关闭此行的灯,要关闭就跳过,否则再找找r_on的集合中是否这行将被打开,将被打开也跳过。两种情况都不符合的话,我们就将这行加入r_off,我们不需要删除任何数,因为我们再加灯的数量的时候就已经考虑了灯被关闭的影响。

code
#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
#include <stack>
#include <deque>
#include <cmath>
#include <string>
#include <set>
#define fir first
#define sec second
using namespace std;

typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
typedef pair<double, int> PDI;
typedef pair<double, double> PDD;
int dx[4] = { -1, 1, 0, 0 }, dy[4] = { 0, 0, -1, 1 };

const int N = 1000100;

int n, m, q;

struct W
{
	string x, st;
	int u;
}w[N];

void solve()
{
	LL ans = 0;
	cin >> n >> m >> q;
	set<int> c_on, r_on, c_off, r_off;
	
	for (int i = 0; i < q; i++)
	{
		int u;
		string x, st;
		cin >> x >> u >> st;
		w[i] = { x, st, u };
	}

	for (int i = q - 1; i >= 0; i--)
	{
		int u = w[i].u;
		string x = w[i].x, st = w[i].st;
		if (st == "off")
		{
			if (x == "row" && r_off.find(u) == r_off.end() && r_on.find(u) == r_on.end())r_off.insert(u);
			else if (x == "column" && c_off.find(u) == c_off.end() && c_on.find(u) == c_on.end())c_off.insert(u);
		}
		else if(st == "on")
		{
			if (x == "row")
			{
				if (r_off.find(u) != r_off.end())continue;
				else if (r_on.find(u) != r_on.end())continue;
				else
				{
					r_on.insert(u);
					ans += m - c_off.size() - c_on.size();
				}
			}
			else if(x == "column")
			{
				if (c_off.find(u) != c_off.end())continue;
				else if (c_on.find(u) != c_on.end())continue;
				else
				{
					c_on.insert(u);
					ans += n - r_off.size() - r_on.size();
				}
			}
		}
	}

	cout << ans << endl;
}

int main()
{
    ios::sync_with_stdio(false);
	cin.tie(0), cout.tie(0);

	solve();

	return 0;
}

标签:第四场,int,end,28,多校,st,off,include,find
From: https://www.cnblogs.com/dkdklcx/p/17588866.html

相关文章

  • 28号个人赛
    个人赛链接:https://www.luogu.com.cn/contest/120853#description今天只补了七道,太难了呜呜呜...A.Geodetic解题思路根据题意多源最短路肯定要用floyd算法,而题目要求找到最短路中所有可能的中间点,所有我们直接遍历所有点,找到点i满足g[a][i]+g[i][b]==g[a][b]......
  • 7.28
    #include<stdio.h>#include<math.h>structprople{intnum;intname[10];}p[10000],pmin;//pmin表示最小值intmain(void){inti,n,sum=0;doublehalf;//half表示平均数的一半scanf("%d",&n);for(i=0;i<n;i++){scanf("%s%d&q......
  • 7.28 EOI
    #include<bits/stdc++.h>usingnamespacestd;typedeflonglongll;typedefdoubledb;constintN=2e5+50;constintM=1e5+50;constintMod=1e9+7;inlineintread(){intx=0,f=1;charch=getchar();while(ch<......
  • 7.28 后记
    T1异或和塞到状态里就不用管路径相交了式子:\[f_{i,j,k\operatorname{xor}G_{i,j},0}=f_{i-1,j,k,0}+f_{i,j-1,k,0}\]\[f_{i,j,k\operatorname{xor}G_{i,j},1}=f_{i-1,j,k,1}+f_{i,j-1,k,1}\]\[f_{i,j,k,1}=f_{i-1,j,k,0}+f_{i,j-1,k,0}\]T2朋友能到达\(k\)的人一定都......
  • 暑假集训D5 2023.7.28 补题
    首先来回顾一下\(dijkstra\)和\(SPFA\)里面\(vis\)数组的作用和区别,以及不用\(vis\)数组的影响.(今天发现之前写堆优化的\(Dijkstra\)都不加\(vis\)数组...)\(Dijkstra\)算法中,每次取出距离源点最近的一个点来更新与他相连的其他点,置\(vis\)数组为\(true\)......
  • 【2023-07-28】渴望亲密关系
    20:00人没有苦闷,没有矛盾,就不会进步。有矛盾才会逼你解决矛盾,解决一次矛盾即往前迈进一步。到晚年矛盾减少,即是生命将要告终的表现。没有矛盾的一片恬静只是一个崇高的理想,真正实现的话并不是一个好现象。                      ......
  • 国标GB28181视频平台LntonGBS(源码版)国标视频平台大并发下SIP消息出现重复SN号的问题解
    随着国家倡导平安城市、智慧城市的建设,安防视频监控作为智慧城市安防建设的重要环节,也越来越受到重视。LntonGBS是基于公安部推出的安防主流协议(国标GB28181协议)的视频接入、处理及分发平台,具有视频直播监控、云端录像、云存储、检索回放、智能告警、语音对讲、平台级联等功能。我......
  • 【2023.07.28】三年计划
    =主线任务今年的主线是考上研究生,并让学校所有人都认识我攒钱买辆车(大概率小米)明年的主线是软考高项,业余时间去考电工和思科支线任务增肥上60kg,让自己身体更好,目前只有53还是太瘦了和妹妹拼完一整个柜子的积木(目前四层已经塞满两层)谈恋爱,找女朋友入校后打算......
  • HDU 暑假多校 2023 第四场
    目录写在前面731773237314732173227318写在最后写在前面补题地址:https://acm.hdu.edu.cn/listproblem.php?vol=64,题号7312~7323。我是飞舞。小子们哪,你们要自守,远避偶像。Dearchildren,keepyourselvesfromidols.——约翰一书以下按照个人向难度排序。7317签到,特......
  • 2023-07-28 后端接口返回的数据与postman返回的数据不一致 ==》前端不兼容数据库字段
    前言:在传参一致,接口一致的情况下,微信开发者工具调的接口和postman返回的数据的id不一致。具体为:微信开发者工具端调接口拿到的id为22位的数据:1884661033952220199看起来平平无奇对吧,而postman返回的id则为:1884661033952220200是的,接口一样,传参一样,返回的其它数据也一样,唯独这......