2022暑期杭电第五场

【光学仿真】基于Matlab的LG/BG/PV/HG光束生成与特性分析【附完整源码】 本文详细介绍了如何使用Matlab进行拉盖尔-高斯(LG)、贝塞尔-高斯(BG)、完美涡旋(PV)和厄米-高斯(HG)四种特殊光束的仿真与特性分析。通过提供完整的Matlab源码,手把手指导读者生成光束、分析其强度、相位、传播特性及轨道角动量,为光学研究、激光应用及教学提供了直观高效的数值实验平台。 阅读详情

1003题

Slipper

题目链接

题目大意:

给一个具有 n n n 个节点的树和 n − 1 n-1 n−1 条具有权值的边,再提供一个起点和终点,求最短路,额外条件是当两个点的层数刚好相差 k k k 时可以花费 p p p 代价在两个点之间移动。

思路:

题目额外条件相当与在相距 k k k 层的两点之间加了一条权值为 p p p 的边,如果要在每两个点之间加边,复杂度为 O ( n 2 ) O(n^2) O(n2) ,可以在两层之间加两个虚拟点来优化,如 i i i 层和 i + 1 i+1 i+1 层之间的虚拟点,连接一条从i层到虚拟点权值为 p p p 的线,再从这个点连一条从点到 i + 1 i+1 i+1 层权值为 0 0 0的点,另一个虚拟点相反同理,这样就可以减少复杂度为 O ( 2 × n ) O(2 \times n) O(2×n).

代码:

#include<iostream>
#include<cstring>
#include<queue>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> PII;
const int N = 4e6 + 10;

ll t,n,from,to,k,p,tot = -1;
ll first[N],d[N],maxd;
ll dis[N];
bool vis[N];

struct edge{
	ll v,w,next;
}e[N];

void add(ll u,ll v,ll w){
	e[++tot] = {v,w,first[u]};
	first[u] = tot;
}

void dfs(ll u,ll fa){
    d[u] = d[fa] + 1;
	maxd = max(maxd,d[u]);
	for(ll i=first[u];~i;i=e[i].next){
		if(e[i].v == fa) continue;
		dfs(e[i].v,u);
	}
}

void dij(ll u){
	memset(dis,0x3f,sizeof dis);
	memset(vis,0,sizeof vis);
	priority_queue<PII,vector<PII>,greater<PII>> q;
	dis[u] = 0;
	q.push({0,u});
	while(q.size()){
		PII top = q.top();
		q.pop();
		ll x = top.second;
		if(vis[x]) continue;
		vis[x] = true;
		for(ll i = first[x];~i;i=e[i].next){
			ll j = e[i].v;
			if(dis[j] > dis[x] + e[i].w){
				dis[j] = dis[x] + e[i].w;
				q.push({dis[j],j});
			}
		}
	}
}

int main(){
    ios::sync_with_stdio(0);
	cin.tie(0),cout.tie(0);
    cin >> t;
    while(t--){
        cin >> n;
		tot = -1,maxd = 0,d[0] = -1,d[1] = 0;
		memset(first,-1,sizeof first);
		for(ll i=1;i<n;i++){
			ll u,v,w;
			cin >> u >> v >> w;
			add(u,v,w);
			add(v,u,w);
		}
		cin >> k >> p >> from >> to;
		dfs(1,0);
		for(ll i=1;i<=n;i++){
			if(d[i] != 0)
				add(n+2*d[i]-1,i,p);
			if(d[i] != maxd)
				add(n+2*(d[i]+1),i,p);
			if(d[i]+k <= maxd)
				add(i,n+2*(d[i]+k)-1,0);
			if(d[i]-k >= 0)
				add(i,n+2*(d[i]-k+1),0);
		}
		dij(from);
		cout << dis[to] << endl;
    }
}

1010题

Bragging Dice

题目链接

题目大意

有两名玩家,每名玩家的杯子里有 n n n 个骰子,骰子仅被投一次后有相应的点数。两名玩家轮流, Y a h A H a YahAHa YahAHa(以下简称 Y Y Y)先开始,第一轮中, Y Y Y 可以宣称“两个杯子中有 x ( x ⩾ 1 ) x(x \geqslant 1) x(x⩾1) 个 y ( 1 ⩽ y ⩽ 6 ) y(1 \leqslant y \leqslant 6) y(1⩽y⩽6) 点数的骰子”

接下来 P e a n u t Peanut Peanut(以下简称 P P P )有以下两种选择:

  1. 挑战 Y Y Y。一旦挑战,游戏结束,每名玩家都打开杯子,如果杯中确实有 x x x个 y y y点数的骰子,则 Y Y Y 获胜,否则P获胜。

  2. 继续宣称。仅可以宣称

①“杯中有 x 1 ( x 1 > x ) x_1 (x_1 > x) x1​(x1​>x) 个 y 1 ( 1 ⩽ y 1 ⩽ 6 ) y_1 (1 \leqslant y_1 \leqslant 6) y1​(1⩽y1​⩽6) 点数的骰子”;

或②“杯中有 x 2 ( x 2 = = x ) x_2 (x_2 == x) x2​(x2​==x) 个 y 2 ( y 2 > y ) y_2 (y_2 > y) y2​(y2​>y) 点数的骰子。

二人依次进行挑战或宣称,直至挑战开始,游戏结束。

有下面三个特殊规则:(如果有冲突,规则三优先)

  1. 如果没有人宣称过“杯中有 x x x 个 1 1 1 点数”,那么点数 1 1 1 视为任意点数的骰子。

  2. 如果一个杯中点数均相同(共 n n n 个骰子),那么视为有 n + 1 n+1 n+1 个该点数的骰子。

  3. 如果一个杯中的点数均不相同,则视为“杯中有 0 0 0 个骰子”。

两人觉得这个运气游戏很蠢,所以要在一开局双方就知道杯子内的所有骰子情况下玩这个游戏

问:双方都以最佳方式玩,若 Y Y Y 赢,输出 “Win!”,否则输出"Just a game of chance." 。

思路

Y_`DZHB_U@HE8E0_T_693.png

如图,绿色是正确宣称,红色是错误宣称

容易发现只要做出错误宣称会直接输掉(对方进行挑战),

做出正确宣称对手则只能继续宣称(对手挑战的话对手就输了)

题目要求是每次宣称都要比原来的宣称更精准,抽象来说就是图上在上一次宣称的右边找一个地方宣称

所以一般情况下,先手会做出个数最多且点数最大的宣称(图中绿色最右边的极限点),

后手只能做出宣称,且只能做出错误宣称,那么先手必赢。

但是当规则三的情况在两个杯子中同时发生时,例如第一个杯子 1 , 2 , 3 , 4 , 5 1,2,3,4,5 1,2,3,4,5 第二个 2 , 3 , 4 , 5 , 6 2,3,4,5,6 2,3,4,5,6 ,这时图是这样

3_EHZO8_CW3O201X_I7YGG6.png

这时视为两个杯中没有任何骰子,所以任何宣称都是错误宣称

而先手必须做出宣称“两个杯子中有 x ( x ⩾ 1 ) x(x \geqslant 1) x(x⩾1) 个 y ( 1 ⩽ y ⩽ 6 ) y(1 \leqslant y \leqslant 6) y(1⩽y⩽6) 点数的骰子”

所以无论怎么宣称都不对,后手只要挑战即可胜利,先手必败。

代码

#include<bits/stdc++.h>
using namespace std;
int a[10];
void solve()
{
	bool flag1=0,flag2=0;
	int n,t;
	cin>>n;
	memset(a,0,sizeof(a));
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&t);
		a[t]++;
		if(a[t]>1)//不是点数各异的情况
			flag1=1;
	}
	memset(a,0,sizeof(a));
	for(int i=1;i<=n;i++)
	{
		scanf("%d",&t);
		a[t]++;
		if(a[t]>1)
			flag2=1;
	}
	if(flag1||flag2) cout<<"Win!"<<endl;//如果一个骰子都没有
	else cout<<"Just a game of chance."<<endl;
}
int main()
{
	int test;
	cin>>test; 
	while(test--)
	{
		solve();
	}
}

1012题

Buy Figurines

题目链接

题目大意

商店有 m m m 个窗口,有 n n n 个人来买东西,他们每个人都有给出来的时间和买东西花费的时间,他们优先选择人最少的窗口进行排队,有多个人同样少的优先选择编号更小的

思路

我们用优先队列记录一下有哪些人要在什么时候离开,这样在下一个顾客来的时候,我们直接在优先队列中取 t o p top top,就可以得到有哪些顾客要先删掉了。
很明显在优先队列中顾客离开的时间越早,那删除时优先级越高,所以我们还需要 t t t t t ttttt ttttt 数组记录一下顾客离开的时间(其实这里是记录了每个窗口最后一名顾客什么时候离开)。
然后我们还需要快速查找人数最少的窗口,我们可以用 s e t set set 来记录这个窗口,因为 s e t set set 内部是有序排列的,我们直接找第一个就能知道要选那个窗口了
注意不要直接 s . b e g i n ( ) . f i r s t + + s.begin().first++ s.begin().first++ ,这样可能是未定义行为
文字描述可能有点抽象,还是看代码更清楚

代码

#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for (int i = a, i##end = b; i <= i##end; ++i)
#define per(i, b, a) for (int i = a, i##end = b; i >= i##end; --i)
typedef long long LL;
#define int long long
typedef double db;
#define endl '\n'
const int LIM = 2e5 + 10;
typedef pair<int, int> pii;
int n, m;
int cnt[LIM]; // 窗口的人数
int ttttt[LIM]; // 窗口最后一位顾客离开的时间
pii cus[LIM];  // first: 顾客来的时间 second:顾客花费的时间
set<pii> s;    // first: 窗口的人数 second: 窗口的编号
               //  begin为窗口人数最少的,如果有相同人数,那就是窗口编号最小的
void solve() {
    priority_queue<pii, vector<pii>, greater<pii>>
        q;  // first: 删除时间(顾客离开时间) second:窗口编号 堆顶为删除时间最小的
    cin >> n >> m;
    rep(i, 1, n) cin >> cus[i].first >> cus[i].second;
    sort(cus + 1, cus + 1 + n);
    rep(i, 1, m) s.insert({cnt[i] = 0, i}); // 初始化窗口 
    rep(i, 1, n) {
        while (!q.empty() && q.top().first <= cus[i].first) { // 先删掉该走的顾客
            int& t = cnt[q.top().second]; // 这位顾客的窗口的人数
            s.erase({t, q.top().second}); // 更改这个窗口的人数
            s.insert({--t, q.top().second}); 
            q.pop(); // 删除顾客
        }
        int idx = s.begin()->second; // 获得当前顾客选择的窗口下标
        s.erase({cnt[idx], idx}); // 更改这个窗口的人数
        s.insert({++cnt[idx], idx});
        ttttt[idx] = max(ttttt[idx], cus[i].first) + cus[i].second; // 设置这个窗口最后一个人离开的时间
        q.push({ttttt[idx], idx}); // 放入堆中,以便之后进行删除操作
    }
    cout << *max_element(ttttt + 1, ttttt + 1 + m) << endl;
    rep(i, 1, m) cnt[i] = ttttt[i] = 0;
    s.clear();
}
signed main() {
    ios::sync_with_stdio(0);
    cin.tie(0), cout.tie(0);
    int t = 1;
    cin >> t;
    rep(i, 1, t) solve();
}
工业视觉降本300%实战:C# + 开源YOLO如何干掉Halcon/VisionPro? 在当前制造业普遍追求“降本增效”的大背景下,工业视觉检测系统作为产线的眼睛,其成本问题日益突出。通过该方案,我们成功帮助一家电子厂将单条产线的视觉检测成本从15万降低至不足5千(主要为工控机硬件成本),降本幅度超过95%,且系统稳定性经受住了6个月连续生产的考验。:C#负责“工程化”和“业务逻辑”,YOLO负责“智能算法”,二者结合,完美覆盖了工业视觉从算法到落地的全链路。的组合,构建一套高性能、低成本、易维护的工业视觉解决方案,并彻底替代昂贵的付费库。” 这是一个典型的误区。工业相机/USB相机。 阅读详情

相关推荐

从踩坑到填平:我在RHEL7上给Tesla A100装驱动的完整记录(含Fabric Manager配置)

本文详细记录了在RHEL7系统上为Tesla A100安装Nvidia驱动的完整过程,包括Fabric Manager配置的关键步骤。通过分析A100架构的特殊性,提供了从驱动安装到服务配置的详细指南,并分享了常见问题的排查方法和性能调优技巧,帮助用户高效部署高性能GPU计算环境。

weixin_29291863的博客 283

2022杭电多校联赛第五场 题解

杭电5

weixin_51937688的博客 1270

h5支付不能打开支付宝 ios_iOS支付宝H5支付无法返回APP解决方案

本文前大段在讲楼主是如何解决这个问题的,以及中间遇到的麻烦。赶时间的同学可以直接看最后的 最终解决方案。在讨论之前,我们先看看官方文档上的一句话:注意:在iOS系统中,唤起支付宝App支付完成后,不会自动回到浏览器或商户APP。用户可手工切回到浏览器或商户APP;支付宝H5收银台会自动跳转回商户return_url指定的页面。what? 官方直接跟我们说GG了?楼主不甘心,还是想尝试一下。借鉴之前...

weixin_39864101的博客 854

Hdu 2022多校训练(5) Slipper

图论

TGX的博客 415

单细胞空间转录组分析流程学习python版(三)

空转python版学习

zfyyzhys的博客 2085

VBA解决Excel批处理任务之:批量修改Sheet名称

针对需要批量处理大量的Sheet改名的场景,使用VBA是非常便捷的方式。 简单介绍几种方法: 1. 录制宏法: 录制宏是用Excel自带的工具把改名改成一个可以复制操作的动作。 这里选择录制,会弹出一个宏设置窗口: 这里设置好宏名称就好,然后确定就可以开始录制你的操作。操作完成之后,再进入到宏窗口点击结束录制: 这样就可以通过执行来运行了,运行方法: 1. 通过选择宏: ...

跬步至千里 1万+

2019 杭电多校(第五场)

1002three arrays http://acm.hdu.edu.cn/showproblem.php?pid=6625 题意 给你两个数组 让你排序 使他们的对应异或值字典序最小 思路 https://www.bilibili.com/video/av62396512?from=search&seid=2029202226881211707 代码 (调自闭了 请队友...

七九河开的博客 819

组态王|通过日历控件选择时间段查询历史报警

哈喽,你好啊,我是雷工!这节记录下查询历史报警信息的功能实现。以下为实现笔记。

做有价值的事,积累有价值的笔记! 3763

杭电比赛G题

#include int whatyear(int year) { if(year%4==0 && year%100!=0 || year%400==0) return 1; else return 0; } //自定

pdsu_congshuang的博客 233

微软推出突破性AI医疗诊断系统MAI-DxO:诊断准确率85.5%,是医生的4倍,成本更低

微软推出医疗AI系统MAI-DxO,通过多AI模型协作实现高效诊断,准确率达85.5%,是传统医生团队的4倍。该系统整合自然语言处理、计算机视觉等技术,模拟专家会诊流程,显著降低医疗成本60%。具备罕见病识别、基层医疗支持等功能,同时注重伦理安全和可解释性。微软计划开放部分架构,推动医疗AI普惠化。这一突破标志着医疗AI从单点工具向系统级智能的跨越,有望重塑更精准、高效的智能医疗未来。

这里汇聚了前沿的技术分享与实用的开发技巧,带你探索从创意到企业的技术创业之路。 637

上下相机对位,上下贴合,上下相机映射对位场景案例

上下相机对位,上下贴合,上下相机映射对位场景案例

视觉人机器视觉的博客 1万+

杭电计算机学院大学生程序设计竞赛(2017新生赛)

考研 #include #include #include #include #include using namespace std; int main() { int T; for(scanf("%d",&T);T--;){ int a,b,c,d; scanf("%d %d %d %d",&a,&b,&c,&d);

Mr_Treeeee的博客 2153

从 ABAP 后端到 AEX,Local Integration Engine 下的 Business System 配置全景

本文围绕SAP PI AEX配置中ABAP后端系统与AEX的连接问题,梳理了关键概念和技术脉络。重点指出基于ABAP 6.20及更高版本的业务系统内置了本地集成引擎(Local Integration Engine),负责与AEX的消息交互。配置要点包括:1)在SM59中创建HTTP类型RFC目标连接AEX;2)配置SAP_PROXY_ESR供设计时代理生成;3)通过SXMB_ADM设置业务系统角色为应用系统;4)确保SLD注册和SICF服务激活。文章特别强调运行时代理消息传递与设计时代理生成的区分,以及H

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 97

2020杭电多校赛 Multi-University Training Contest

文章目录2020杭电多校赛 Multi-University Training Contest 2020杭电多校赛 Multi-University Training Contest

打过ICPC/CCPC,学习ACM算法,Linux内核,Openharmony,加油努力开心珍惜 6432

IDEA的使用指南

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

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

2022“杭电杯”中国大学生算法设计超级联赛(5)补题

2022“杭电杯”中国大学生算法设计超级联赛(5)补题

CryseY的博客 240

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

2022杭电多校5题解报告(同步自语雀)

2022杭电多校5题解报告(同步自语雀)

vermouth_1412的博客 391

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

2019杭电多校第五场

没有完成签到…… 场上三题: 1004:equation 给你n个ai和bi,给你C,求解方程: 画个图可以发现,每两个零点之间的区域都对应一个一元一次方程,把这些零点排序之后可以很容易得到每个区间的方程,每个区间都解一个一元一次方程,然后判断解是否在这个区间内。要特判a=0的情况。 #include<bits/stdc++.h> #define ll long long #defi...

积极的防守者的博客 756

2018hdu杭电多校第五场 hdu6351 Beautiful Now(暴力全排列)

Beautiful Now Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 262144/262144 K (Java/Others) Total Submission(s): 1677    Accepted Submission(s): 621 Problem Description Anton has a positive...

ZXM_ZhanX的博客 561

2021hdu多校第五场补题

1006-Cute Tree 题目链接 题目大意 根据所给代码 输入一个n 问您最后生成多少个点 题目思路 记忆化搜索 当len=1 时return 当 len=2时生成两个 len=3时生成三个 当len>2时根据他所给公式计算分段 最后别忘了加上自身这个节点 还有分三段的第一段要注意向上取整 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=...

qq_53680405的博客 282

2022“杭电杯”中国大学生算法设计超级联赛(5)杭电多校第五场

用vector以到达时间为第一关键字,所需时间为第二关键词排序,优先队列中存储每个人的离开时间每次插入前先把离开时间小于到达时间的人从队列中清除,并更新到线段树上。有n个人买东西,已知到达时间和花费时间,每个人会优先选择排队人数最少的,其次是编号较小的。用线段树维护当前人数最小的队列和位置。问最后一个人离开的时间是多少。tags线段树,优先队列。.........

qq_34832548的博客 809

2022杭电多校第五场题解

2022“杭电杯”中国大学生算法设计超级联赛(5)

weixin_46155777的博客 467

HDu--我要拿走你的蜡烛

我要拿走你的蜡烛 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 0Accepted Submission(s): 0 Problem Description Darkrai最近喜欢玩《炉石传说》,他在一局比赛中使用...

weixin_30244889的博客 224

图论--存储,转置,拓扑排序

邻接表,矩阵,转置,拓扑排序

x13262608581的博客 205

软考架构师·教材版|05 图论:Dijkstra 最短路径与 AOE 关键路径

拿着一张“路口和过路费”的图,一轮一轮算出起点到每个路口的最短时间;再拿“项目工序图”正推倒推两遍,说出最快几天完工、哪些工序一天都拖不得。Dijkstra 与关键路径两道常考计算题,方法对了五分钟拿分。

weixin_46316564的博客 211

数据结构之图论基础——从定义到常用术语

本文系统梳理图论核心知识点:从数据关系递进引出图的多对多特性,定义图为G=(V,E),强调顶点集非空;分类为有向/无向、有权/无权、连通/非连通;详解九大高频术语——完全图、稀疏/稠密图、权与网、邻接、度(含握手定理)、路径、子图、连通分量与生成树,并总结考研/面试必背公式与易错点,突出“边数计算”与“极大/极小”辨析,助力高效备考。

qq_34097230的博客 376

图论--广度优先搜索,深度优先搜索

广度优先,深度优先

x13262608581的博客 316
上一篇: 2022暑期杭电第六场
下一篇: 2022暑期杭电第八场
TGUACM_admin
博客等级 码龄4年 7粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值