首页 > 其他分享 >SJTU ACM 2022 Preseason Training - Warmup

SJTU ACM 2022 Preseason Training - Warmup

时间:2022-12-04 22:57:59浏览次数:40  
标签:Training Preseason Warmup int cache cin 题意 solve cout

A - Handling the Blocks Gym - 103388H

题意

给定一个排列,每个数都有个颜色,同颜色的可以交换位置,求是否可以将此序列排序。

解法

套路题,想将其排序,考虑这个序列能否与其下标形成置换环。

而题目中的颜色就是制约是否能成为置换环。

用时:6min

const int N = 1e5 + 10;
 
int n, k;
int a[N], c[N];
 
void solve()
{
	cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>a[i]>>c[i];
	for(int i=1;i<=n;i++) 
		if(c[i] != c[a[i]])
		{
			cout<<"N"<<endl;
			return ;
		}
	cout<<"Y"<<endl;
}

B - Dividing Candy Gym - 103185D

题意

2048典中典。

有一天他们一起得到了 \(n\) 盒糖果,里面糖果的数量都是 \(2\) 的幂。现在他们想知道,如果不允许拆开盒子,他们是否能够让两人得到的糖果总数都是 \(2\) 的幂?

解法

每两个 \(x\) 能合成一个 \(x + 1\),模拟。

const int N = 1e5 + 10;

int n;
int a[N];

void solve()
{
	cin>>n;
	if(n == 1) 
	{
		cout<<"N"<<endl;
		return ;
	}

	for(int i=1,x;i<=n;i++) cin>>x,a[x]++;
	for(int i=0;i<N;i++)
		if(a[i] >= 2) 
			a[i+1] += a[i] / 2, a[i] %= 2;

	int cnt = 0;
	for(int i=0;i<N;i++) // 这里写成<=1e5寄了一发,没有考虑到1e5也可以进位
		if(a[i])
			cnt += a[i];

	if(cnt > 2) cout<<"N"<<endl;
	else cout<<"Y"<<endl;
}

C - LRU Gym - 103366J

题意

给出 cache 的工作方式:

  1. 如果请求的块在已存储在cache中,则成功访问。
  2. 否则,CPU只能从内存中访问该块并将该块写入cache中。如果cache未满,则将块追加到缓存中。
  3. 如果cache已满,则将用新块替换已在cache中最长时间的未被访问的块。

再给出一个长为 \(n\) 的操作序列,要求至少要访问成功 \(k\) 次,求 cache 大小至少为多少。

解法

看到至少为多少,又发现答案有二段性,一眼丁真二分。

const int N = 1e5 + 10;

int n, k;
int a[N];

int solve(int m)
{
	map<int,int> h;
	queue<int> q;

	int cnt = 0, ans = 0;
	for(int i=1;i<=n;i++)
	{
		if(h[a[i]] == 0) h[a[i]] ++, cnt ++;
		else h[a[i]] ++, ans ++;
		q.push(a[i]);
		while(cnt > m)
		{
			int u = q.front();
			q.pop();
			h[u] --;
			if(h[u] == 0) cnt --;
		}
	}
	return ans;
}

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

	cin>>n>>k;
	for(int i=1;i<=n;i++) cin>>a[i];

	if(solve(n) <= k) 
	{
		cout<<"cbddl";
		return 0;
	}

	int l = 0, r = n+1;
	while(l < r)
	{
		int mid = l + r >> 1;
		if(solve(mid) >= k) r = mid;
		else l = mid + 1; 
	}

	cout<<l;

    return 0;
}

标签:Training,Preseason,Warmup,int,cache,cin,题意,solve,cout
From: https://www.cnblogs.com/BorisDimitri/p/16951091.html

相关文章

  • LPDDR4x 的 学习总结(6) - initialization & training
    1.为什么要initialization?本节介绍device的initialization从上节的device的结构可看出DIMM的两面有16个颗粒,颗粒的组织结构有T型(CA/CLK)。 T型拓扑T型拓扑的眼图......
  • 论文笔记 - Coresets for Data-efficient Training of Machine Learning Models
    Motivation训练深度网络存在的问题:需要大量训练数据,进而需要更强的计算资源等。因此如何在减少这些开销(例如使用更小的数据集)的同时,不影响模型的性能成为了一个至关重要......
  • Batch Normalization: Accelerating Deep Network Training by Reducing Internal Cov
    BN层只是从一定程度上解决了梯度衰减的问题但是并没有完全解决如果输入值的差距过大会导致模型加BN层后loss依旧无变化。代码:fromenumimportautofromscipy.ioimpo......
  • 9-11月 Training
    P5664[CSP-S2019]Emiya家今天的饭容斥一下,对每一列做一次dp,记一下差值来压掉一维*CF521DShop把赋值先转化成加法,再把加法全转化成乘法P5689[CSP-S2019江西]多......
  • Oct. Training 6
    F-TrailsandGladeshttps://codeforces.com/problemset/problem/209/C题意给你一个图,你从1好点出发,每条边走且只走一遍,问你最少要添加多少条边。思路翻译一下题意......
  • BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generatio
    BART:DenoisingSequence-to-SequencePre-trainingforNaturalLanguageGeneration,Translation,andComprehensionBART:用于自然语言生成、翻译和理解的seq2seq去噪......
  • Oct. Training 5
    E-Escapehttps://codeforces.com/gym/102361/problem/E题意若干个机器人从矩阵第一行上方要走到矩阵最后一行下方,一个机器人对应一个出口,机器人只能直走,现在可以设置......
  • Oct. Training 4
    L-Airportshttps://codeforces.com/gym/100959题意给定n个点,第i个点为(\(x_i,y_i\)),对于曼哈顿距离小于D的两个点可以建一条边,问最大的D使得整个图联通。思路这就相......
  • Basil: A Fast and Byzantine-Resilient Approach for Decentralized Training 阅读笔
    Basil:AFastandByzantine-ResilientApproachforDecentralizedTraining阅读笔记ProblemStatementDecentralizedSystemModel所有训练数据样本存储在分布式节......
  • ACM ICPC 2017 Warmup Contest 1 (NCPC 2016)
    AArtwork倒跑并查集#include<bits/stdc++.h>usingnamespacestd;#define#define#define#define#define#define#define#define#define#define#define#define#define#defin......