第十七届黑龙江省大学生程序设计竞赛

QGIS安装与使用教程 阅读详情


比赛链接

C.Tree Division

题意:
有一颗 n ( 1 ≤ n ≤ 1 0 5 ) n(1\leq n\leq10^5) n(1≤n≤105)个节点的树,树上每个位置都有一个值 a i a_i ai​,将树上的节点分入 A , B A,B A,B两个集合,要求以 1 1 1为根节点的树,能否使集合 A A A在树链上递增,集合 B B B在树链上递减。
思路:
考虑如果在单个直线数组上进行这个问题怎么办。
如果我们可以在每次将一个数字放入任意个集合后,都可以知道两个集合里最后放入的数字的大小,那么我们就可以用动态规划来维护。
将第 i i i个数字放入 A A A集合,此时集合 A A A的最后一项显然为 a i a_i ai​,如果用 d p [ i ] [ 0 ] dp[i][0] dp[i][0]表示 B B B集合最后一项的位置,问题显然就得到了解决。
由于 B B B数组递减,在我们知道 a i a_i ai​被放入了集合 A A A,且有合理的构造后,前 i − 1 i-1 i−1项具体如何分配对我们来说已经不重要,我们只想贪心的让集合 B B B的最后一项尽可能的大。
于是 d p dp dp转移如下:

  • 如果 a i − 1 ∈ A a_{i-1}\in A ai−1​∈A, a i > a i − 1 a_i>a_{i-1} ai​>ai−1​, d p [ i ] [ 0 ] = d p [ i − 1 ] [ 0 ] dp[i][0]=dp[i-1][0] dp[i][0]=dp[i−1][0]
  • 如果 a i − 1 ∈ A a_{i-1}\in A ai−1​∈A, a i < a i − 1 a_i<a_{i-1} ai​<ai−1​,无解
  • 如果 a i − 1 ∈ B a_{i-1}\in B ai−1​∈B, a i > d p [ i − 1 ] [ 1 ] a_i>dp[i-1][1] ai​>dp[i−1][1], d p [ i ] [ 0 ] = a i − 1 dp[i][0]=a_{i-1} dp[i][0]=ai−1​
  • 如果 a i − 1 ∈ B a_{i-1}\in B ai−1​∈B, a i < d p [ i − 1 ] [ 1 ] a_i<dp[i-1][1] ai​<dp[i−1][1],无解

对于放入 B B B集合的情况与上同理。
现在问题回到树上,只需要将每条树链都视为一个数组即可。
请注意:不要使用先序遍历,因为树上节点有多个分叉,直接转移可能会错误的将一个节点用两种情况分别计算。
为了避免这种情况,使用后续遍历,一个节点最多只有一个父节点,就解决了上述问题

#include<bits/stdc++.h>
#define pb push_back
#define inf 0x3f3f3f3f
typedef long long ll;
using namespace std;
const int maxn=1e5+7;
int n,a[maxn],f[maxn][2];
vector<int>v[maxn];
void dfs(int u,int fa)
{
	f[u][1]=inf;f[u][0]=-inf;
	for(int i:v[u])
	{
		if(i==fa) continue;
		dfs(i,u);
		int t1;
		//放进集合A
		//a[i]被放在集合A中
		if(a[u]<=a[i]) t1=f[i][0];
		else t1=inf;
		//a[i]被放在集合B中
		if(a[u]<=f[i][1]) t1=min(t1,a[i]);
		else t1=min(t1,inf);
		f[u][0]=max(f[u][0],t1);
		
		//放进集合B
		//a[i]被放在集合B中
		if(a[u]>=a[i]) t1=f[i][1];
		else t1=-inf;
		//a[i]被放在集合A中
		if(a[u]>=f[i][0]) t1=max(t1,a[i]);
		else t1=max(t1,-inf);
		f[u][1]=min(f[u][1],t1);
	}
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
	for(int i=1;i<n;i++)
	{
		int a,b;
		scanf("%d%d",&a,&b);
		v[a].pb(b);v[b].pb(a);
	}
	dfs(1,-1);
	if(f[1][0]!=inf || f[1][1]!=-inf)
	{
		puts("YES");
	}
	else puts("NO");
}

D.Collision Detector

题意:
三个小球,在平面上视为 3 3 3个半径为 1 1 1的圆 O 1 , O 2 , O 3 O_1,O_2,O_3 O1​,O2​,O3​,现在小球 O 1 O_1 O1​有任意方向的初速度,如果它能够碰到小球 O 2 O_2 O2​, O 2 O_2 O2​则会因为碰撞有垂直于 O 1 , O 2 O_1,O_2 O1​,O2​切线方向的速度,给你三个求得坐标 x , y x,y x,y,问是否有可能使 O 2 O_2 O2​碰撞到 O 3 O_3 O3​
思路:
在这里插入图片描述
如果 α + β ≥ γ \alpha+\beta\ge \gamma α+β≥γ则可以撞到
其中
cos ⁡ α = 2 ∗ 2 O 1 O 2 cos ⁡ β = O 2 O 2 ′ O 2 O 3 ′ cos ⁡ γ = O 1 O 2 → ⋅ O 2 O 3 → ∣ O 1 O 2 ∣ ∣ O 2 O 3 ∣ cos ⁡ ( α + β ) = cos ⁡ α cos ⁡ β − sin ⁡ α sin ⁡ β \cos\alpha=\frac{2*2}{O_1O_2} \\ \cos\beta=\frac{O_2O_2^{'}}{O_2O_3^{'}} \\ \cos\gamma=\frac{\overrightarrow{O_1O_2}·\overrightarrow{O_2O_3}}{|O_1O_2||O_2O_3|} \\ \cos(\alpha+\beta)=\cos\alpha\cos\beta-\sin\alpha\sin\beta cosα=O1​O2​2∗2​cosβ=O2​O3′​O2​O2′​​cosγ=∣O1​O2​∣∣O2​O3​∣O1​O2​ ​⋅O2​O3​ ​​cos(α+β)=cosαcosβ−sinαsinβ

#include<bits/stdc++.h>
using namespace std;
struct Vector
{
	double x,y;
};
double muti(Vector a,Vector b)
{
	return a.x*b.x+a.y*b.y;
}
double eps=1e-8;
int main()
{
	 int T;
    scanf("%d",&T);
    while(T--)
    {
        double x1,y1,x2,y2,x3,y3;
        cin>>x1>>y1>>x2>>y2>>x3>>y3;
        double dis12=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
		double dis23=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
		double d1=sqrt(dis23*dis23-4),d2=sqrt(dis12*dis12-4);
		double cosa=2/dis12,cosb=d1/dis23,sina=d2/dis12,sinb=2/dis23;
		Vector ab={x2-x1,y2-y1},bc={x3-x2,y3-y2};
		double cosc=muti(ab,bc)/dis12/dis23;
		double cosab=cosa*cosb-sina*sinb;
		if(cosc-cosab>eps) puts("yes");
		else puts("no");
    }
}

G.Chevonne’s Necklace

题意:
给你 n ( 1 ≤ n ≤ 2000 ) n(1\leq n \leq2000) n(1≤n≤2000)个数字围成的环,环上的数字 a i ( 0 ≤ a i ≤ 2000 ) a_i(0\leq a_i \leq 2000) ai​(0≤ai​≤2000)表示可以顺时针正好删除接下来的包括自己的 a i a_i ai​个数字, 1 1 1只能删除自己, 0 0 0不能选取。问最多能删除多少个数字,有多少种最多删除数量的方案?
思路:
如果可以选出 k k k个数字 ∑ a ≤ n \sum a\leq n ∑a≤n,那么根据鸽巢原理,一定有一种顺序可以互不影响,完美的带走 ∑ a \sum a ∑a个数字。
所以接下来只要一个 01 01 01背包统计方案数即可。

#include<bits/stdc++.h>
#define int long long
#define inf 0x3f3f3f3f
using namespace std;
const int maxn=2005;
int n,c[maxn],c1[maxn],f[maxn][maxn];
int mod=998244353;
signed main()
{
	scanf("%lld",&n);
	int cnt=0;
	for(int i=1;i<=n;i++) 
	{
		scanf("%lld",&c[i]);
		if(c[i])
		{
			c1[++cnt]=c[i];
		}
	}
	f[0][0]=1;
	for(int i=1;i<=cnt;i++)
	{
		for(int j=0;j<=n;j++)
		{
			f[i][j]=f[i-1][j];
			if(j>=c1[i]) f[i][j]+=f[i-1][j-c1[i]];
			f[i][j]%=mod;
		}
	}
	for(int i=n;i>=1;i--)
	{
		if(f[cnt][i])
		{
			printf("%lld %lld",i,f[cnt][i]);return 0;
		}
	}
	puts("0 0");
}
STM32 HAL SDADC DMA 由于项目需要使用STM32F373单片机的SDADC功能对电位计进行检测,网上资料比较少,踩了很多坑,下面进行总结。 阅读详情

相关推荐

PLDM入门(七):FRU Data Format

每个字段为TLV(Type-Length-Value)格式,具体类型、长度范围和值定义需参考。通过条件过滤(记录句柄、类型、字段类型等)分块获取FRU记录数据(可选功能)。整个FRU数据表由多个FRU记录数据块组成,每个数据块对应表2的结构(即包含。决定,每个字段按顺序排列(Type→Length→Value)通过分块传输方式写入FRU记录表数据(需终端支持写入操作)。(文档未提供表5内容,需结合标准文档完整版)。、字段数量、编码类型及具体字段的TLV数据)。无请求数据(空请求)。

weixin_44032634的博客 1762

“统信杯”第十七届黑龙江省大学生程序设计竞赛 AFHIL

以样例2为例黄色区域为可以容纳下的书, 让我们分开来计算因为a书不可被减少, 所以a书顶上至少能够装得下bn−m​∗h−a然后再考虑b书头上, 设x为减少的b书那么b书头上能够容纳bm−x​∗h−b根据样例很明显a书在装了bn−m​∗h−a本b书后可能还会存在空位, 此时可以将空位让给b书, 所以b书头上可以多计算a书剩下装不下b书的区域, 这个多出来的区域就是n−bn−m​∗b最后得到b头上的结果为bm−x。

Tanya_xiaomai的博客 525

X猫免费小说安卓逆向分析

七猫免费小说安卓逆向分析 难度(♥♥) 文章目录七猫免费小说安卓逆向分析 难度(♥♥)1. 查壳2. 抓包分析3. sign1. Frida-rpc2. Native函数分析快3点了. 睡觉~ 白天再继续写! 1. 查壳 我这边使用的是ApkTool, 拖进去显示未加壳。 2. 抓包分析 POST https://xiaoshuo.wtzw.com/api/v1/login/index HTTP/1.1 net-env: 1 channel: qm-cbcpa056_wm is-white: 0 platf

Qiled的博客 4367

“统信杯” 第十七届黑龙江省大学生程序设计竞赛题解

---------更新中--------- 比赛链接 A题 /* 题意: 书架高h n本高度为a的书和m本高度为b的书放在书架上 a的全部放左边,b的全部放右边 原本所占用的书架宽度为n+m 现在可以拿出k本高度为b的书将其横着放在任意位置 问可以使得占用的书架宽度最少是多少 */ /* 题解: 先求长为n高为h-a的书架能横着放多少本高度为b的书 二分一下最多能拿走多少本高度为b的书 */ int a,b,n,m,h; ll cnt,las; bool check(int x) { if(

XLH1129的博客 1780

上交开源装甲板识别代码分析

GitHub - xinyang-go/SJTU-RM-CV-2019: 上海交通大学 RoboMaster 2019赛季 视觉代码这里着重分析主函数main.cpp与装甲板识别部分的工程文件armer文件夹。由于未完全分析,所以对于其中log.h、options.h中的函数并不清楚,在分析时会跳过这些内容。该文章重点分析的是思路,部分函数中的数学逻辑、数据处理思路这里不详细解释(没能力)所有思维导图通过 知犀知犀思维导图 - 知犀官网 (zhixi.com)原创。

qq_42104961的博客 1320

FAST_LIO_ROS2 可以用gazebo仿真吗?

摘要:FAST_LIO_ROS2可与Gazebo仿真环境兼容,通过订阅Gazebo模拟的激光雷达和IMU数据实现SLAM建图。已有开源项目(如pb_rm_simulation)验证了该方案,支持导航模式切换与真实机器人移植。关键步骤包括环境配置、传感器话题匹配及参数调试,需注意版本兼容性与数据噪声处理。相关教程提供了从环境搭建到三维建图的完整流程。

专注 激光SLAM, 目标检测, 欢迎关注, 分享交流! 1138

“统信杯” 第十七届黑龙江省大学生程序设计竞赛 Let‘s Swap

Let’s Swap(思维+hash)4星 题意: 已知一个长度为n的字符串SSS,可以对字符串进行一种操作: 将字符串SSS从下标i(1≤i≤n)i(1\leq i\leq n)i(1≤i≤n)的位置将串分为两个串A、BA、BA、B 将字符串SSS变为BABABA 反转字符串SSS 给你两个数a、ba、ba、b代表可以选取的下标的位置,允许操作任意次(或不操作) 问SSS是否可以通过操作变成目标串CCC 多组输入 1≤T,sum∣S∣≤5∗5101\leq T,sum|S|\leq 5*5^{10}1

ZVAF_的博客 1472

生成模型实战 | 基于Transformer生成音乐

本文介绍了基于Transformer架构的音乐生成方法,将音乐视为一系列事件序列进行处理。与将音乐表示为多维图像的MuseGAN不同,该方法使用类似GPT的仅解码器模型,基于先前事件预测下一个音乐事件。模型使用MIDI格式的钢琴音乐数据,通过分词处理将音符转换为note-on、note-off、time-shift和velocity四种事件类型,共388个独特词元,映射为索引序列后输入网络。训练完成后,可通过调整温度参数控制生成音乐的新颖性,从而创作出风格类似训练数据且连贯逼真的音乐作品。

盼小辉丶的博客 5816

第十七届黑龙江省大学生程序设计竞赛 E.Exclusive Multiplication 个人题解(简单莫比乌斯反演)

E-Exclusive Multiplication_“统信杯” 第十七届黑龙江省大学生程序设计竞赛(正式赛) (nowcoder.com) 题意:设一个整数n,,定义, 现在给你一个长度为n的序列b,问 知识点:莫比乌斯反演 思路: 首先,我们先想办法把俩下标都改成从1开始到n, 现在我们的问题是求(1),(2) 然后,我们开始看f函数,容易发现 所以,. , 接下来是套路化的东西,我们定义,为i的个数 枚举d 莫反,枚举T 设Q=dT,枚举Q 定义

qq_53446104的博客 1163

Android15 修改触摸点上限为40

把MAX_POINTER_ID从默认的31修改为39,这里为什么要从31修改为39,是因为上面说明用BitSet32极限就只能支持32个点,因为从最小的ID是0,所以要支持40个点ID也要对应改为39.最近有个需求,需要修改Android系统的触摸点数,Android系统默认的点数是16个点,因为现在是大屏项目,有客户需要修改为40个点,好吧,客户最大。6.最后进行编译,开机开启触摸点检测,可以使用开发者模式中的显示触摸点功能,再叫上3个人,用双掌触摸屏幕,发现左上角有显示40个触摸点,修改成功。

tzj1058756809的博客 573

openwrt之luci通信原理(一)

从模板中分离,每个LuCI2子页面也需要一个定义并存放在/www/luci2/view/目录下的一个视图,视图是使用了子页面特定对象的L.ui.view扩展的JavaScript文件。有一点需要注意的是需要提供execute方法,创建视图失败有几种原因,特别是当它需要ubus加载额外的数据使用的时候。所以在execute方法中提供成功或者失败的信息是有意义的。不幸的是在异步方法加载特定数据的时候,不能简单的返回true或false,解决的方法是返回一个Promise对象来运行推迟提供是否成功的信息。

1150

第十九届黑龙江省大学生程序设计竞赛

图中枚举全部五元组典例:枚举中间3(a,b,c),剩下两个在a和c的出度中匹配

qq_42643660的博客 685

AE 与 ISP 参数联动机制解析:自动曝光系统与图像信号处理模块协同设计实践

AE(自动曝光)并不是一个独立的图像控制模块,而是与 ISP(Image Signal Processor)深度耦合运作的系统协同体。其输出的曝光参数直接决定了图像处理链路中 Gamma 曲线选择、黑电平补偿、去噪级别、边缘增强等一系列关键参数的取值。本文基于主流平台(如高通、MTK、海思)的工程实战经验,详细剖析 AE 与 ISP 在曝光驱动、调节优先级、图像还原逻辑等环节的联动机制,并结合拍照与视频等不同场景,给出可落地的联调方法。

努力分享一些人工智能、计算机视觉、影像等相关的知识干货! 1527

“统信杯” 第十七届黑龙江省大学生程序设计竞赛

“统信杯” 第十七届黑龙江省大学生程序设计竞赛

qq_38530379的博客 3272

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

【“统信杯” 第十七届黑龙江省大学生程序设计竞赛】 I、F、H、A

题解+代码

Dawn 833

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

统信杯” 第十七届黑龙江省大学生程序设计竞赛 Let‘s Swap

6

m0_62044244的博客 268

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

第十七届黑龙江省大学生程序设计竞赛(金牌题)DCollision Detector

第十七届黑龙江省大学生程序设计竞赛(金牌题)DCollision Detector 题目链接:https://codeforces.com/gym/103688/problem/D

weixin_63128867的博客 431

第十七届黑龙江省大学生程序设计竞赛 E.Exclusive Multiplication(莫比乌斯反演)

第十七届黑龙江省大学生程序设计竞赛 E.Exclusive Multiplica莫比乌斯反演(金牌题) 题目链接:https://codeforces.com/gym/103688/problem/E

weixin_63128867的博客 367

【2022 第十七届黑龙江省大学生程序设计竞赛】E-Exclusive Multiplication(莫比乌斯反演)

https://ac.nowcoder.com/acm/contest/34332/E 题意:给定n的质因数分解n=p1^a1·p2^a2...,设f(n)=p1^(a1%2)·p1^(a1%2)...,给定正整数数组b,求∑1≤i

qq_60628041的博客 504

ACM-ICPC近年省赛汇总

ACM省赛汇总

a_4199的博客 3130

【CF】团队训练赛3 G-Chevonne‘s Necklace 题解

现有一串环形珍珠项链,其上有n个珍珠,现在你要尽可能多地将上面的珍珠取下来。具体规则为:每个珍珠有一个属性c,当你选择取下第i个珍珠时,将会连带取下其顺时针方向的c~i~-1个珍珠。需要注意的是当此时项链上的珍珠数量不足c~i~个时,你不能取下第i个珍珠。现在请你输出可以取下的最多珍珠数,以及在此基础上的方案数(规定两个方案不同当且仅当:两个方案选择的珍珠不同,或将选择的珍珠按c~i~排序后的结果不同)。 输入:第一行一个正整数n(1

我无知又愚蠢,世界残酷又疯狂。 541

G. Chevonne’s Necklace(拆解项链珠子(背包))

有一个n颗珠子的项链,每颗珠子上都有个数字记作数组a[],每次你可以选择一颗珠子然后都会自左往右拆下a[i]-1个珠子;求可以拆下最大数量,以及多少种拆法;

w20221013的博客 315

第十六届东北地区大学生程序设计竞赛-I

不太理解为什么是从1+1/2+1/3+1/4+…+1/(n-1),而不是到1/n。

weixin_49865561的博客 387

“红旗杯“第十四届东北地区大学生程序设计竞赛-热身赛

Problem A Problem Description Mo’s algorithm can solve some difficult data structure problems. Like this: You are given an array a1,a2,…,an and m queries. In each query, we want to get the mode number(the value that appears most often in a set of data) of

JinweiGuo 1643

Matrix HDU - 7113 “红旗杯”第十五届东北地区大学生程序设计竞赛

Matrix HDU - 7113 题目链接 公式推导: 考虑i这个数对答案的贡献。首先,先在n2−in^2-in2−i中比i大的数当中选择n−1n-1n−1个数,和它放在同一行,就是Cn2−in−1C_{n^2-i}^{n-1}Cn2−in−1​。这个数可以的行有个n行可以选择。然后这个数所在的这一行全排列就是n!n!n!,最后剩下的所有数全排列就是(n2−n)!(n^2-n)!(n2−n)! 所以最后答案等于: ∑i=1i=nCn2−in−1∗n∗n!∗(n2−n)! \sum_{i=1}^{i=n}

Kama的博客 564

Codeforces Round #680 C-Division(数论+分解质因子)

题意 给你两个数字 p , q ,让你求满足( p % x == 0 && x % q != 0 )的最大的 x 思路 这里我们用n,m来代替p,q 如果 n % m != 0 那么最大的 x 就是 n 如果 n % m == 0 , 我们知道 假设 如果 n % x == 0 t1 <= e1 , t2 <= e2 … tk <= ek; 又因为 n % m == 0 f1 <= e1 , f2 <= e2 … fk <= ek 如果想让 x ..

Cosmic_Tree的博客 540
上一篇: POJ - 2396 Budget(上下界网络流)
下一篇: CodeCraft-22 and Codeforces Round #795 (Div. 2)D,E
不是张胖胖
博客等级 码龄6年 67粉丝 42原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值