首页 > 其他分享 >AtCoder Beginner Contest 366 C,D题解

AtCoder Beginner Contest 366 C,D题解

时间:2024-08-10 21:52:38浏览次数:20  
标签:AtCoder y1 int 题解 mxn x2 366 y2 z1

C - Balls and Bag Query题解

题意

没什么好说的,给出q次查询,进行求解

思路

很简单的一道题,但这篇题解的作用是引出unordered_set,这个东西的作用类似set,但没有排序,相当于哈希。

unordered_set有几种操作,接下来介绍三种

  1. insert,没什么可说的,普通的插入
  2. erase,进行弹出
  3. size,返回大小

有了这个容器,解决这道题就很容易了

代码

#include <bits/stdc++.h>
using namespace std;
unordered_set<int> js;
int jss[1000006],q;
int main()
{
	cin >> q;
	for (int i=1; i<=q;i++)
	{
		int dj,x;
		cin >> dj;
		if (dj==1)
		{
			cin>>x;
			js.insert(x);
			jss[x]+=1;
		}
		else if (dj==2)
		{
			cin >> x;
			if (--jss[x]==0)
			{
				js.erase(x);
			}
		}
		else
		{
			cout << js.size()<<endl;
		}
	}
}

D - Cuboid Sum Query题解

前言

估计是我太弱了,一开始我居然想的是树状数组,快给我调死了,后来才发现是前缀和。(不小心误删一次,还没有保存,只能重写一遍,怒~~~)

题意

给定n^3个数,q次询问,每次询问查询前缀和。

思路

三维前缀和的板子

//预处理
s[i][j][k] = s[i-1][j][k] + s[i][j-1][k] + s[i][j][k-1] - s[i-1][j-1][k] - s[i-1][j][k-1] - s[i][j-1][k-1] + s[i-1][j-1][k-1] + a[i][j][k]
//求解
sum[x1:x2, y1:y2, z1:z2] = s[x2][y2][z2] - s[x1-1][y2][z2] - s[x2][y1-1][z2] - s[x2][y2][z1-1] + s[x1-1][y1-1][z2] + s[x1-1][y2][z1-1] + s[x2][y1-1][z1-1] - s[x1-1][y1-1][z1-1]

注意开long long

代码

#include <bits/stdc++.h>
using namespace std;
const int mxn=105;
long long a[mxn][mxn][mxn],s[mxn][mxn][mxn],n,q;
int main()
{
	cin >> n;
	for (int i=1; i<=n; i++)
	{
		for (int j=1; j<=n; j++)
		{
			for (int k=1; k<=n; k++)
			{
				cin >> a[i][j][k];
				s[i][j][k] = s[i-1][j][k] + s[i][j-1][k] + s[i][j][k-1] - s[i-1][j-1][k] - s[i-1][j][k-1] - s[i][j-1][k-1] + s[i-1][j-1][k-1] + a[i][j][k];
			}
		}
	}
	cin >> q;
	for (int i=1; i<=q; i++)
	{
		int x1,x2,y1,y2,y3,z1,z2;
		cin >> x1>>x2>>y1>>y2>>z1>>z2;
		cout <<s[x2][y2][z2] - s[x1-1][y2][z2] - s[x2][y1-1][z2] - s[x2][y2][z1-1] + s[x1-1][y1-1][z2] + s[x1-1][y2][z1-1] + s[x2][y1-1][z1-1] - s[x1-1][y1-1][z1-1]<<endl;
	}
}

总结

很水的一道题,感觉只配T2

标签:AtCoder,y1,int,题解,mxn,x2,366,y2,z1
From: https://blog.csdn.net/aqzjklo/article/details/141096963

相关文章

  • ABC 366 题解
    AtCoderBeginnerContest366题解:\(Problem\hspace{2mm}A-Election\hspace{2mm}2\)题目链接opinion:很显然,当一个人的票数大于等于\(\lceil\frac{n}{2}\rceil\)时此人一定当选。(或可理解为投票结果一定固定。)依次判断两人即可。code:#include<bits/stdc++......
  • ABC366
    A[link](https://atcoder.jp/contests/abc366/tasks/abc366_a]判断一下少的那个人加上剩下的所有票是否会超过另一个人,如果超过,不确定,否则目前票多的必胜。神奇的代码#include<bits/stdc++.h>usingnamespacestd;signedmain(){ intn,a,b; cin>>n>>a>>b; i......
  • CF1674G Remove Directed Edges 题解
    CF1674G给出一个\(n\)点\(m\)边的有向无环图,你需要从中移除一些边,使得对于每一个点,其入度减少(如果原来有入边),出度也减少(如果原来有出边)。当删完边以后,如果有一个点集,满足对于任两点\((i,j)\)可以从\(i\)走到\(j\)或可以从\(j\)走到\(i\),那就称其为可爱的。现在要......
  • CF1863E Speedrun 题解
    CF1863E你在玩一个游戏,要完成\(n\)个任务。其中对于每个任务\(i\),它只能在某一天的第\(h_i\)时刻完成。游戏每天有\(k\)个小时,分别编号为\(0,1,...k-1\)。给出\(m\)对任务间的依赖关系,\((a_i,b_i)\)表示\(a_i\)必须比\(b_i\)先完成。保证依赖关系不形成环。完......
  • 洛谷 P10852 Awaken——题解
    洛谷P10852题解传送锚点摸鱼环节【MX-X2-T1】「CfzRound4」Awaken题目背景能否等到梦醒了的时候。题目描述月做了一个梦。在梦中,她拿到了一个长度为\(n\)的整数序列\(a_1,\ldots,a_n\),其中\(\bm{n\ge5}\)。梦醒了。月忘记了这个序列中的一部分元素,留下了空白......
  • G - AtCoder Office
    G-AtCoderOfficeProblemStatement$N$peopleworkattheAtCoderoffice.Theofficekeepsrecordsofentriesandexits,andtherehavebeen$M$entriesandexitssincetherecordsbegan.The$i$-th$(1\leqi\leqM)$recordisrepresentedbyapairof......
  • P4933 大师 题解
    题目传送门思路动态规划看到题目就想到了最长上升子序列。类比最长上升子序列,发现多了一个要求,可以多开一维。设\(f_{i,j}\)表示以\(i\)为结尾,\(j\)为公差的序列的长度(点的个数$-1$),那么答案就为\[\sum_{i=1}^{n}\sum_{j=-\max(v)}^{\max(v)}f_{i,j}\]看上去......
  • ABC201E Xor Distances 题解
    ABC201EXorDistances题解题目大意给定一个带权树,求树上每两点的简单路径上的边权的异或和的和。形式化的,定义\(dis(i,j)\)为\(i\)到\(j\)的简单路径上的边权的异或和,求\(\large\sum\limits_{i=1}^n\sum\limits_{j=i+1}^n\text{dis}(i,j)\)。Solve令\(\largef(u)=......
  • 洛谷 P1127 词链——题解
    洛谷P1127题解传送锚点摸鱼环节词链题目描述如果单词\(X\)的末字母与单词\(Y\)的首字母相同,则\(X\)与\(Y\)可以相连成\(X.Y\)。(注意:\(X\)、\(Y\)之间是英文的句号.)。例如,单词dog与单词gopher,则dog与gopher可以相连成dog.gopher。另外还有一些例子:dog......
  • CF1155C 题解
    题目传送门题目大意:给定一个长度为\(n\)的单增序列\(a\)和一个长度为\(m\)的序列\(b\),询问是否存在一个正整数\(y\)使得\(a_1\equiva_2\equiv\cdots\equiva_n\equivy\space(\bmod\spacep)\),且\(p\)在序列\(b\)中出现过。思路:将条件转化一下,得:是否存在一个......