当前位置: 首页 > article >正文

Codeforces Round 981 (Div. 3) A-D

昨晚太唐了, 错了一万遍

有一件事需要注意, 我们尽量用 map 而不是 unordered_map, map 查询的时间是稳定O(logn), 但是unordered_map 查询的时间是不稳定的, 可能很快, 也可能很慢, 最慢情况是 O(n)

A

原题

A. Sakurako and Kosuke

思路

容易发现随着n增大, 绝对值增大, 获胜的人交替, 因此就是求奇数偶数

代码

#include <bits/stdc++.h>
#define int long long

#define F(i, a, b) for (int i = (a); i <= (b); i++)
#define dF(i, a, b) for (int i = (a); i >= (b); i--)

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;

const int N = 500005, M = (N << 1), inf = 1e16, mod = 1e9 + 7;

int n, m, k, x, y, z, ans, t;
int w[N], f[N];

void solve()
{
	
}

signed main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int T = 1;
	cin >> T;
	while (T -- )
	{
		solve();
	}
}

B

原题

B. Sakurako and Water

思路

这道题统计每条正对角线的最小负数之和即可

代码

#include <bits/stdc++.h>
#define int long long

#define F(i, a, b) for (int i = (a); i <= (b); i++)
#define dF(i, a, b) for (int i = (a); i >= (b); i--)

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;

const int N = 500005, M = (N << 1), inf = 1e16, mod = 1e9 + 7;

int n, m, k, x, y, z, ans, t;
int w[N], f[N];

int a[510][510];



void solve()
{
	cin >> n;
	
	for (int i = 1 - n + 510; i <= n - 1 + 510; i ++ ) f[i] = 0;
	
	for (int i = 1; i <= n; i ++ )
	{
		for (int j = 1; j <= n; j ++ )
		{
			cin >> a[i][j];
			f[i - j + 510] = min(f[i - j + 510], a[i][j]);
		}
	}
	
	int ans = 0;
	for (int i = 1 - n + 510; i <= n - 1 + 510; i ++ )
	{
		if (f[i] < 0) ans -= f[i];
	}
	
	cout << ans << endl;
}

signed main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int T = 1;
	cin >> T;
	while (T -- )
	{
		solve();
	}
}

C

原题

C. Sakurako's Field Trip

思路

从中间往两侧最优化考虑即可, 从两侧往中间最优化考虑也可

代码

#include <bits/stdc++.h>
#define int long long

#define F(i, a, b) for (int i = (a); i <= (b); i++)
#define dF(i, a, b) for (int i = (a); i >= (b); i--)

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;

const int N = 500005, M = (N << 1), inf = 1e16, mod = 1e9 + 7;

int n, m, k, x, y, z, ans, t;
int a[N], f[N];

void swap(int i)
{
	int temp = a[i];
	a[i] = a[n - i + 1];
	a[n - i + 1] = temp;
}

bool check(int i)
{
	int aa = 0, b = 0;
	int x = n - i + 1;
	if (a[i] == a[i + 1])
	{
		aa ++;
	}
	if (a[x] == a[x - 1])
	{
		aa ++;
	}
	
	
	if (a[x] == a[i + 1])
	{
		b ++;
	}
	if (a[i] == a[x - 1])
	{
		b ++;
	}
	
	return aa >= b;
}

void solve()
{
	cin >> n;
	
	for (int i = 1; i <= n; i ++ ) cin >> a[i];
	
	for (int i = n / 2; i >= 1; i --)
	{
		if (check(i))
		{
			swap(i);
		}
	}
	
	int ans = 0;
	
	for (int i = 1; i < n; i ++ )
	{
		
		if (a[i] == a[i + 1])
		{
			ans ++;
		}
	}
	
	cout << ans << endl;
}

signed main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	int T = 1;
	cin >> T;
	while (T -- )
	{
		solve();
	}
}

D

原题

D. Kousuke's Assignment

思路

创建前缀和数组, 遍历, 如果当前的前缀和在前面出现, 那么答案加1, 同时记录这一位置, 不可以再用此位置前的前缀和判断

用 map 很容易实现这个功能, 但是unordered_map会被卡时间

代码

#include <bits/stdc++.h>

using namespace std;

const int N = 100010;

int n;

void solve()
{
	cin >> n;
	
	vector<int> a(n + 5), pre(n + 5);
	
	for (int i = 1; i <= n; i ++ )
	{
		cin >> a[i];
		pre[i] = pre[i - 1] + a[i];
	}
	
	map<long long, int> m;
	int r = 0;
	m[0] = 0;
	int ans = 0;
	for (int i = 1; i <= n; i ++ )
	{
		if (a[i] == 0 || (m.count(pre[i]) && m[pre[i]] >= r))
		{
			ans ++;
			r = i;
		}
		m[pre[i]] = i;
	}
	cout << ans << endl;
}

int main()
{
	int T;
	cin >> T;
	while (T -- )
	{
		solve();
	}
}


http://www.kler.cn/a/369355.html

相关文章:

  • Unity编辑器 连接不到SteamVR问题记录
  • html和css实现页面
  • 分布式日志有哪些?
  • 详解Pectra升级:如何影响以太坊价值及利益相关者
  • 【C++单调栈 贡献法】907. 子数组的最小值之和|1975
  • pytorh学习笔记——cifar10(六)MobileNet V1网络结构
  • JDK的下载
  • [C++]——红黑树(附源码)
  • 基于人脸识别系统设计与仿真-基于matlab
  • qt QApplication详解
  • labelimg使用教程
  • 【数据结构】二叉树——堆
  • 【STM32】SD卡
  • SpringBoot支付回调枚举+策略+工厂模式
  • python构建flask服务用于视频文件的处理后返回
  • 基于单片机的家用多功能衣柜控制系统设计
  • Excel重新踩坑4:快捷键;逻辑函数;文本函数;日期相关函数;查找与引用函数;统计类函数;数组公式
  • ESP32 S3 怎么开发基于ESP-RTC的音视频实时交互的应用,用语AI陪伴的领域
  • 爬虫爬取数据时,如何解决由于验证码通常是动态生成的,直接通过URL下载可能会遇到验证码内容不一致的问题?( ̄︶ ̄)↗
  • 微服务架构学习笔记
  • 移植FreeRTOS实时操作系统(基于STM32F429)
  • 十、Linux 故障排除专业案例分享
  • 如何理解PostgreSQL全页写?
  • nginx和apache的区别
  • 组件通信八种方式(vue3)
  • 2024年下教师资格证面试报名详细流程❗