2021东北四省赛补题/个人题解

news2025/1/11 10:48:57

Dashboard - The 15th Chinese Northeast Collegiate Programming Contest - Codeforces

I

模拟

#include <bits/stdc++.h>
using i64 = long long;
using namespace std;
#define int long long
int mp[8] = {0, 7, 27, 41, 49, 63, 78, 108};
void solve()
{
	int n; cin >> n;
	vector<int>a(n + 1);
	int s = 0;
	for(int i = 1; i <= n; i ++) 
	{
		cin >> a[i];
		s += mp[a[i]];
	}
	if(s >= 120) s -= 50;
	else if(s >= 89) s -= 30;
	else if(s >= 69) s -= 15;
	cout << s << '\n';
}
signed main() 
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    int t = 1; std::cin >> t;
    while (t--) 
	{
        solve();
    }
}

E. Easy Math Problem

赛时太Push也不好,还是得好好看题目

样例即答案

#include <bits/stdc++.h>
#define rep(i, n) for (int i = 1; i <= (n); ++i)
#define int long long
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
void solve()
{
	int x; cin >> x;
	cout << 24 * x  << " " << 4 << '\n';
	cout << 2 * x << " " << 4 * x << " " << 6 * x << " " << 12 * x << '\n';
}
signed main() 
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	int t = 1; cin >> t;
	while(t --) solve();
}

M

看了好久没太懂题目意思,这是考的观察表格能力?。。。

①长度1、2特判

②韵母只有ang特判,其他的韵母能单独成字的都长度都小于3归为上一类(观察得到的。。。

③声母长度最多为2,剩下都为韵母

#include <bits/stdc++.h>
#define rep(i, n) for (int i = 1; i <= (n); ++i)
using namespace std;
typedef long long ll;
const int N = 1005;
map<string, string> mp = 
{
	{"q","q"}, {"iu","q"},{"w","w"}, {"ei","w"}, {"r","r"}, {"uan","r"},{"t","t"}, {"ue","t"},
	{"y","y"}, {"un","y"},{"u","u"}, {"sh","u"}, {"i","i"}, {"ch","i"},{"o","o"}, {"uo","o"},
	{"p","p"}, {"ie","p"},{"a","a"}, {"s","s"}, {"ong","s"}, {"iong","s"},{"d","d"}, {"ai","d"},
	{"f","f"}, {"en","f"},{"g","g"}, {"eng","g"}, {"h","h"}, {"ang","h"},{"j","j"}, {"an","j"},
	{"k","k"}, {"uai","k"},{"ing","k"}, {"l","l"}, {"uang","l"}, {"iang","l"},{"z","z"}, {"ou","z"},
	{"x","x"}, {"ia","x"},{"ua","x"}, {"c","c"}, {"ao","c"}, {"v","v"},{"zh","v"}, {"ui","v"},
	{"b","b"}, {"in","b"},{"n","n"}, {"iao","n"}, {"m","m"}, {"ian","m"}, {"e","e"}
};


signed main() 
{
	ios::sync_with_stdio(0);
//	cin.tie(0); cout.tie(0);
	string line;
	while(getline(cin, line))
	{
		stringstream ss(line);
		string s;
		while(ss >> s)
		{
			if(s.size() == 2) cout << s << ' ';
			else if(s.size() == 1) cout << s << s << ' ';
			else
			{
				if(s.substr(0, 3) == "ang") cout << "a" << mp["ang"] << ' ';
				else
				{
					if(mp.count(s.substr(0, 3)))
					{
						cout << mp[s.substr(0, 3)];
						s = s.substr(3);
					}
					else if(mp.count(s.substr(0, 2)))
					{
						cout << mp[s.substr(0, 2)];
						s = s.substr(2);
					}
					else if(mp.count(string(1, s[0])))
					{
						cout << mp[string(1, s[0])];
						s = s.substr(1);				
					}
					cout << mp[s] << ' '; 					
				}

			}
			
		}
		cout << '\n'; 
	}
}

K

设伤害为 x ,小于 x 的边都是不存在的,大于等于的都是存在的。

先并查集+后缀和求剩m~1条边的联通情况

查询时二分找到该伤害能摧毁多少条边

#include <bits/stdc++.h>
#define rep(i, n) for (int i = 1; i <= (n); ++i)
//#define int long long
using namespace std;
typedef long long ll;
const int N = 1e5 + 10;
int p[N];
int find(int x)
{
	if(x != p[x]) p[x] = find(p[x]);
	return p[x];
}
void solve()
{
	int n, m, Q; cin >> n >> m >> Q;
	vector<ll>val(m + 1), cnt(n + 1);
	for(int i = 1; i <= n; i ++) p[i] = i, cnt[i] = 1;
	vector<pair<int, pair<int, int>>>a;
	for(int i = 1; i <= m; i ++)
	{
		int x, y, k; cin >> x >> y >> k;
		a.push_back(make_pair(k, make_pair(x, y)));
	}
	sort(a.begin(), a.end());
	val[m] = 0;
	for(int i = m - 1; i >= 0; i --)
	{
		int x = a[i].second.first, y = a[i].second.second;
		x = find(x), y = find(y);
		val[i] = val[i + 1];
		if(x != y)
		{
			val[i] = val[i + 1] + (ll)cnt[x] * cnt[y];
			cnt[x] += cnt[y], p[y] = x;			
		}
//		cout << i << " " << val[i] << '\n';
	}
	while(Q --)
	{
		int x; cin >> x;
		x = lower_bound(a.begin(), a.end(), make_pair(x, make_pair(0, 0))) - a.begin();
		cout << val[x] << '\n';
	}
}
signed main() 
{
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	int t = 1; cin >> t;
	while(t --) solve();
}

A

对于1~n的每个数i单独求贡献

放i选某行:n

选与i同行的元素:C(n * n, n * n - i) 从比i大的选

排该行的顺序:n!

排剩下的元素的顺序:(n * n - n)!   这一步不要漏了,放置完所有元素才算一种矩阵排法

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define int long long
const int mod = 998244353;
const int N = 3e7 + 10;
int fac[N], infac[N];
/*
7
1
2
3
4
5
1000
5000


*/
int qmi(int a, int b, int q)
{
	a %= mod;
    int res = 1ll;
    while(b)
    {
        if(b & 1) res = (ll)res * a % mod;
        a = (ll)a * a % mod;
        b >>= 1ll;
    }
    return res % mod;
}
int A(int a, int b)
{
	a = (a + mod) % mod, b = (b + mod) % mod;
	if(a == 0 || b == 0) return 1;
    int res = (ll)fac[a] * infac[a - b] % mod;	
    
	return res;
}
int C(int a, int b)
{
	a = (a + mod) % mod, b = (b + mod) % mod;
	if(a == 0 || b == 0) return 1;
    int res = (ll)fac[a] * infac[b] % mod * infac[a - b] % mod;    
	return res;	
}
void solve()
{
	int n; cin >> n;
	int ans = 0;
	for(int i = 1; i <= n; i ++)
	{
		ans += n * fac[n * n - n] % mod * C(n * n - i, n - 1) % mod * fac[n];
		ans %= mod;
	}
	cout << ans % mod << '\n';
}
signed main() 
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    fac[0] = 1;
    for(int i = 1; i <= N; i ++)
    {
        fac[i] = (ll)fac[i - 1] * i % mod;
    }
    infac[N] = qmi(fac[N], mod - 2, mod);
    for(int i = N - 1; i >= 0; i --)
    {
        infac[i] = (ll)infac[i + 1] * (i + 1) % mod;
    }
	int t = 1; std::cin >> t;
    while (t --) 
	{
        solve();
    }
}

C

属于有点难想状态设计,但是看题解一眼懂类型

贴个大佬代码【解题报告】2021CCPC东北四省赛_2021东北四省赛-CSDN博客

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10,mod=998244353;
typedef long long LL;
int n;
vector<int>v[N];
LL f[N][3];

void dfs(int u,int fa){
	f[u][0]=f[u][1]=f[u][2]=1;
    for(int j:v[u]){
    	if(j==fa)continue;
        dfs(j,u);
        //递归完后开始更新子树,然后一层层向上更新
        f[u][0]=f[u][0]*(f[j][0]+f[j][1])%mod;
        f[u][1]=f[u][1]*(f[j][0]+f[j][1]+f[j][2])%mod;
        f[u][2]=f[u][2]*f[j][0]%mod;
    }
    f[u][1]-=f[u][2];
    if(f[u][1]<0)f[u][1]+=mod;
}
int main(){
	int T;
	while(~scanf("%d",&T)){
		while(T--){
			scanf("%d",&n);
			for(int i=1;i<=n;i++)v[i].clear();
			
		    for(int i=0,a,b;i<n-1;i++){
		        scanf("%d%d",&a,&b);
		        v[a].push_back(b);
		        v[b].push_back(a);
		    }
		   	dfs(1,-1);
		    printf("%lld\n",(f[1][0]+f[1][1])%mod);
		}
	}
    return 0;
}

后面的题随缘补

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1629511.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何有效的将丢失的mfc140u.dll修复,几种mfc140u.dll丢失的解决方法

当你在运行某个程序或应用程序时&#xff0c;突然遭遇到mfc140u.dll丢失的错误提示&#xff0c;这可能会对你的电脑运行产生一些不利影响。但是&#xff0c;不要担心&#xff0c;以下是一套详细的mfc140u.dll丢失的解决方法。 mfc140u.dll缺失问题的详细解决步骤 步骤1&#x…

Atcoder Beginner Contest351 A-E Solution题解

文章目录 [A - The bottom of the ninth](https://atcoder.jp/contests/abc351/tasks/abc351_a)[B - Spot the Difference ](https://atcoder.jp/contests/abc351/tasks/abc351_b)[D - Grid and Magnet](https://atcoder.jp/contests/abc351/tasks/abc351_d)E Note&#xff1a;…

盲人地图使用的革新体验:助力视障人士独立、安全出行

在我们日常生活中&#xff0c;地图导航已经成为不可或缺的出行工具。而对于盲人群体来说&#xff0c;盲人地图使用这一课题的重要性不言而喻&#xff0c;它不仅关乎他们的出行便利性&#xff0c;更是他们追求生活独立与品质的重要一环。 近年来&#xff0c;一款名为蝙蝠…

《HCIP-openEuler实验指导手册》1.7 Apache虚拟主机配置

知识点 配置步骤 需求 域名访问目录test1.com/home/source/test1test2.com/home/source/test2test3.com/home/source/test3 创建配置文件 touch /etc/httpd/conf.d/vhost.conf vim /etc/httpd/conf.d/vhost.conf文件内容如下 <VirtualHost *.81> ServerName test1.c…

python中如何用matplotlib写雷达图

#代码 import numpy as np # import matplotlib as plt # from matplotlib import pyplot as plt import matplotlib.pyplot as pltplt.rcParams[font.sans-serif].insert(0, SimHei) plt.rcParams[axes.unicode_minus] Falselabels np.array([速度, 力量, 经验, 防守, 发球…

AtCoder Beginner Contest 351 G. Hash on Tree(树剖维护动态dp 口胡题解)

题目 n(n<2e5)个点&#xff0c;给定一个长为a的初始权值数组&#xff0c; 以1为根有根树&#xff0c; 树哈希值f计算如下&#xff1a; &#xff08;1&#xff09;如果一个点u是叶子节点&#xff0c;则f[u]a[u] &#xff08;2&#xff09;否则&#xff0c; q(q<2e5)次…

【C++】从零开始认识继承

送给大家一句话&#xff1a; 其实我们每个人的生活都是一个世界&#xff0c;即使最平凡的人也要为他生活的那个世界而奋斗。 – 路遥 《平凡的世界》 ✩◝(◍⌣̎◍)◜✩✩◝(◍⌣̎◍)◜✩✩◝(◍⌣̎◍)◜✩ ✩◝(◍⌣̎◍)◜✩✩◝(◍⌣̎◍)◜✩✩◝(◍⌣̎◍)◜✩ ✩◝(◍…

详解如何品味品深茶的精髓

在众多的茶品牌中&#xff0c;品深茶以其独特的韵味和深厚的文化底蕴&#xff0c;赢得了众多茶友的喜爱。今天&#xff0c;让我们一同探寻品深茶的精髓&#xff0c;品味其独特的魅力。 品深茶&#xff0c;源自中国传统茶文化的精髓&#xff0c;承载着世代茶人的智慧与匠心。这…

linux kernel内存泄漏检测工具之slub debug

一、背景 slub debug 是一个debug集&#xff0c;聚焦于kmem_cache 分配机制的slub内存&#xff08;比如kmalloc&#xff09;&#xff0c;这部分内存在内核中使用最频繁&#xff0c;slub debug其中有相当部分是用来处理内存踩踏&#xff0c;内存use after free 等异常的&#x…

【项目】仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器(Http板块)

【项目】仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器&#xff08;Http板块&#xff09; 一、思路图二、Util板块1、Splite板块&#xff08;分词&#xff09;&#xff08;1&#xff09;代码&#xff08;2&#xff09;测试及测试结果i、第一种测试ii、第二种…

PotatoPie 4.0 实验教程(29) —— FPGA实现摄像头图像均值滤波处理

图像的均值滤波简介 图像均值滤波处理是一种常见的图像处理技术&#xff0c;用于降低图像中噪声的影响并平滑图像。该方法通过在图像中滑动一个固定大小的窗口&#xff08;通常是一个正方形或矩形&#xff09;&#xff0c;将窗口中所有像素的值取平均来计算窗口中心像素的新值…

GateWay具体的使用之全链路跟踪TraceId日志

1.创建全局过滤器&#xff0c;在请求头上带入traceId参数&#xff0c;穿透到下游服务. package com.by.filter;import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.jwt.JWTValidator;…

【Kotlin】Channel简介

1 前言 Channel 是一个并发安全的阻塞队列&#xff0c;可以通过 send 函数往队列中塞入数据&#xff0c;通过 receive 函数从队列中取出数据。 当队列被塞满时&#xff0c;send 函数将被挂起&#xff0c;直到队列有空闲缓存&#xff1b;当队列空闲时&#xff0c;receive 函数将…

vue3 vite 路由去中心化(modules文件夹自动导入router)

通过路由去中心化可实现多人写作开发&#xff0c;不怕文件不停修改导致的冲突&#xff0c;modules中的文件可自动导入到index.js中 // 自动导入模块 const files import.meta.globEager(./modules/**.js); const modules {} for (const key in files) {modules[key.replace…

前端工程化Vue使用Node.js设置国内高速npm镜像源(踩坑记录版)

前端工程化Vue使用Node.js设置国内高速npm镜像源&#xff08;踩坑记录版&#xff09; 此篇仅为踩坑记录&#xff0c;并未成功更换高速镜像源&#xff0c;实际解决方法见文末跳转链接。 1.自身源镜像 自身镜像源创建Vue项目下载速度感人 2.更改镜像源 2.1 通过命令行配置 前提…

在Redux Toolkit中使用redux-persist进行状态持久化

在 Redux Toolkit 中使用 redux-persist 持久化插件的步骤如下: 安装依赖 npm install redux-persist配置 persistConfig 在 Redux store 配置文件中(例如 rootReducer.js)&#xff0c;导入必要的模块并配置持久化选项: import { combineReducers } from redux; import { p…

【MySQL关系型数据库】基本命令、配置、连接池

目录 MySQL数据库 第一章 1、什么是数据库 2、数据库分类 3、不同数据库的特点 4、MySQL常见命令&#xff1a; 5、MySQL基本语法 第二章 1、MySQL的常见数据类型 1、数值类型 2、字符类型 3、时间日期类型 2、SQL语句分类 1、DDL&#xff08;数据定义语言&#x…

mysql-sql-练习题-2-窗口函数

窗口函数 访问量max sum建表窗口函数连接 直播间人数 第1、3名建表排名sum 访问量max sum 每个用户截止到每月为止&#xff0c;最大单月访问次数&#xff0c;累计到该月的总访问次数 建表 create table visit(uid1 varchar(5) comment 用户id,month1 varchar(10) comment 月…

28.Gateway-网关过滤器

GatewayFilter是网关中提供的一种过滤器&#xff0c;可以多进入网关的请求和微服务返回的响应做处理。 GatewayFilter(当前路由过滤器&#xff0c;DefaultFilter) spring中提供了31种不同的路由过滤器工厂。 filters针对部分路由的过滤器。 default-filters针对所有路由的默认…

锂电池SOH预测 | 基于BP神经网络的锂电池SOH预测(附matlab完整源码)

锂电池SOH预测 锂电池SOH预测完整代码锂电池SOH预测 锂电池的SOH(状态健康度)预测是一项重要的任务,它可以帮助确定电池的健康状况和剩余寿命,从而优化电池的使用和维护策略。 SOH预测可以通过多种方法实现,其中一些常用的方法包括: 容量衰减法:通过监测电池的容量衰减…