5.2日训练赛题解【2019 USP-ICMC】

5个4000比特大状态置换算法的设计与分析 下面是 5 个概念性、实验性的 4000 位可逆置换设计。它们都保证是双射,但未经过密码分析,不可直接用于生产系统。风格分别覆盖:三维 SPN、Feistel、可逆元胞自动机、ARX、宽轨迹/Keccak 式结构。 这 5 个设计分别代表了 SPN、Feistel、元胞自动机、ARX、宽轨迹 Keccak 五种不同风格,覆盖了主流大状态置换的构造思路。再次强调:它们只是实验性概念,若要用于实际协议,必须经过严格安全性分析。 阅读详情

以后一并全写到一个地方去了。顺便存代码

A.Jumping Buildings

题目链接题目链接题目链接

单调栈例题,我竟然差点没想起来,得把这些复习一下了。

代码:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <climits>
#include <queue>
#include <stack>
#include <map>
//
using namespace std;
const int INF = 0x3f3f3f3f;//1.06e9大小
const int mod1 = 1e9 + 7;
const int mod2 = 998244353;
const int mod3 = 1e9;
const double PI = 3.14159265;
const double eps =1e-8;
typedef unsigned long long ULL;
typedef long long LL;
int ans[100000+10];
int a[100000+10];
int main()
{
	int n;
	cin>>n;
	int cnt=0;
	for(int i=0;i<n;++i)
	{
		scanf("%d",&a[i]);
	}
	stack<int >s;
	for(int i=0;i<n;++i)
	{
		if(!s.empty())
		{
			while(1)
			{
				int up=s.top();
				if(a[i]>a[up])
				{
					ans[up]=min(i-up-1,a[up]);
				}
				else break;
				s.pop();
				if(s.empty())break;
			}
		}
		s.push(i);
	}
	while(!s.empty())
	{
		ans[s.top()]=min(n-s.top()-1,a[s.top()]);
		s.pop();
	}
	for(int i=0;i<n;++i)printf("%d ",ans[i]);
	printf("\n");
    return 0;
}

B. Divples

题目题目题目题目

水题,随便搞搞就行了,我的代码略长;

代码:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <climits>
#include <queue>
#include <stack>
#include <map>
//
using namespace std;
const int INF = 0x3f3f3f3f;//1.06e9大小
const int mod1 = 1e9 + 7;
const int mod2 = 998244353;
const int mod3 = 1e9;
const double PI = 3.14159265;
const double eps =1e-8;
typedef unsigned long long ULL;
typedef long long LL;
LL ans[1000001];
int main()
{
	LL a,b;
	cin>>a>>b;
	int cnt=0;
	for(LL i=1;i*i<=a;++i)
	{
		if(a%i==0)
		{
			if(i*i==a)ans[cnt++]=i;
			else
			{
				ans[cnt++]=i;
				ans[cnt++]=a/i;
			}
		}
	}
	sort(ans,ans+cnt);
	for(int i=0;i<cnt;++i)
	{
		if(ans[i]%b==0)printf("%lld ",ans[i]);
	}
	printf("\n");
    return 0;
}

D. Guessing Messages

题目链接

签到题,直接暴力匹配就行了。

代码:

char t[1000010];
char p[1000010];
 
int main()
{
	scanf("%s %s",t,p);
	int n=strlen(t);
	int len=strlen(p);
	int cnt=0;
	for(int i=0;i<n;++i)
	{
		if(t[i]==p[cnt])++cnt;
		if(cnt==len){printf("YES\n");return 0;}
	}
	printf("NO\n");
    return 0;
}

F. Drawing cards

题目题目题目
这是一个期望数学题,一开始想了组合应该是错误的,我们可以这样来思考:桌子上有2的概率和有3的概率是不是一样的?是,同理2到n来说,桌子上有任何一个牌的概率都是一样的。

那1呢?一开始我觉得期望是(2+……+n)/n,但是看到样例竟然是1.5;有点神奇,意思是有1/n概率直接拿到1,所以1竟然也是贡献进去的,所以答案就是1到n的等差求和除以n。化简就是(n+1)/2了;

代码:


int main()
{
	int n;
	cin>>n;
	printf("%.10f\n",(double)(n+1)/2);
    return 0;
}

J. Weird Sanchola

题目题目题目题目

这个题题意就是找一个素数,让一个序列的所有数到他的距离最小;

n是偶数就取中间呗,中间的区间随便找一个数就是答案了,问题是素数,1e9大小,暴力判一次就是1e(4.5),好像还可以接受,毕竟两个素数间隔并没有1e3那么大,或许我们还可以鸡贼一点,从小开始找,找到就溜。

如果n是偶数:

首先从[ a[n/2] ,a[n/2+1] ]开始找,从小往大判素数,如果找不到就[2,a[n/2])U(a[n/2+1],正无穷) 这个区间找,找两个,比较哪个是答案,因为就用一两次,我决定用暴力遍历,就不去找什么数学优化了。

如果n是奇数

从[2 ,a[n/2+1]-1]U(a[n/2+1]-1,正无穷)这个范围找,找到两个素数分别求最后的值,取小的那个,和上面一样。

代码:

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <string>
#include <climits>
#include <queue>
#include <stack>
#include <map>
//
using namespace std;
const int INF = 0x3f3f3f3f;//1.06e9大小
const int mod1 = 1e9 + 7;
const int mod2 = 998244353;
const int mod3 = 1e9;
const double PI = 3.14159265;
const double eps =1e-8;
typedef unsigned long long ULL;
typedef long long LL;
LL a[100000+10];
int n;
bool pend(int k)
{
	if(k==1)return false;
	for(int i=2;i*i<=k;++i)
	{
		if(k%i==0)return false;
	}
	return true;
}
LL ans(int k)
{
	LL sum=0;
	for(int i=1;i<=n;++i)
	{
		sum+=(LL)abs(a[i]-k);
	}
	return sum;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;++i)scanf("%lld",&a[i]);
	sort(a+1,a+n+1);
	LL res=1e18;
	if(n%2==0)
	{
		for(int i=a[n/2];i<=a[n/2+1];++i)
		{
			if(pend(i))
			{
				res=min(ans(i),res);
				break;
			}
		}
		for(int i=a[n/2];i>=2;--i)
		{
			if(pend(i))
			{
				res=min(ans(i),res);
				break;
			}
		}
		for(int i=a[n/2+1];1;++i)
		{
			if(pend(i))
			{
				res=min(ans(i),res);
				break;
			}
		}
	}
	else
	{
		for(int i=a[n/2+1];i>=2;--i)
		{
			if(pend(i))
			{
				res=min(ans(i),res);
				break;
			}
		}
		for(int i=a[n/2+1];1;++i)
		{
			if(pend(i))
			{
				res=min(ans(i),res);
				break;
			}
		}
	}
	printf("%lld\n",res);
    return 0;
}
电脑的kernelbase.dll故障怎么处理?kernelbase.dll是什么文件 kernelbase.dll​是一个系统文件,属于Microsoft Windows操作系统的一部分。该DLL(动态链接库)文件包含了许多基本且低级的系统函数,这些函数被Windows上运行的各种程序和进程调用。kernelbase.dll通常与Kernel32.dll紧密相关,它是实现许多Windows API(应用程序编程接口)的封装。这些API涉及到内存管理、输入输出操作、进程和线程管理以及其他许多核心的操作系统功能。 阅读详情

相关推荐

vmware vsphere 证书过期告警处理方法

vSphere Clinet 管理页面出现“证书告警” ,检查证书未发现现有证书有过期现象

m0_51902127的博客 3637

J - Weird Sanchola Gym - 102302J

Sanchola is getting an array of integers as gift. He's weird, so he doesn't like having distinct integers in the same array and he only likes prime numbers. That's why he believes that he might need to fix the array after receiving it by turning all elemen

m0_46062697的博客 267

从爆仓到流畅发货:我们如何用EIQ分析给跨境小电商仓库做了一次‘体检’与‘手术’

本文分享了如何通过EIQ分析工具为跨境小电商仓库进行诊断与优化,从爆仓危机到流畅发货的实战经验。通过ABC分类法、动态路径算法等策略,拣货效率提升40%,错发率降低91%,日均处理能力翻倍。文章为小电商提供了轻量级工具选择和关键指标监控的实用建议。

weixin_28707739的博客 397

【CodeForces】701A - Cards(暴力 || 思维)

点击打开题目 A. Cards time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output There are n cards (n is even) in th

wyg1997 768

plc secs半导体通讯协议 PLC 与MES的SECS/GEM通讯方案

符合SEMI E4, E5, E30, E37 的 SECS/GEM通讯方案 专业稳定的产品,持续运行5年都不出错 遵循 SEMI 人机交互设计,提供触摸屏支持让你触手可及。 毫米级的响应,单个messge在5ms以内 MES与PLC之间达到实时性,如采集实时性的数据 每秒支持100条Message以上 快速搭建PLC与MES之间的SECS/GEM桥梁,只需简单配置数据 SECS/GEM介绍 遵循 SEMI 人机交互设计,提供触摸屏支持让你触手可及。 增删改上报数据配置简单,并且一目了然 大量的数据处理.

SECS/GEM 6362

OCR开发车架号识别vin码识别系统

一、vin码识别车架号识别系统简介   vin码识别车架号识别系统,结合VIN码主机厂数据库及自身多年文字识别经验,针对机动车配置参数等信息的查询及采集业务推出的一款VIN码自动识别产品。   车架号识别vin码识别,主要应用在智能手机IOS与Android两个平台中。前端扫描查询模式,无需联网,只需扫描汽车前挡风玻璃右下角的VIN玛(车架号),即可轻松识别出车辆产地、品牌、车

OCR13512721355的博客 1433

F - Drawing cards Gym - 102302F

You have a box with N cards numbered 1...N and you can also create new cards. You are going to draw cards from the box, every time you draw a card of a number that has already been drawn you put that card back into the box. If you draw a card of a number

m0_46062697的博客 286

zabbix 监控EMC存储

经过搜索,找到了脚本地址,该项目应该是模板原作者创建的,该项目也有zabbix模板,和上面的应该是相同的,我用的是上面的模板。./unity_get_state.py --api_ip='X.X.X.X' --api_port='443' --api_user='zabbix' --api_password='PASSWORD' --storage_name="zabbix web前端配置的主机名" --discovery。修改权限,给zabbix用户执行权限,模板调用时以zabbix用户执行。

wangyfde的专栏 3754

2019 USP-ICMC

J - Weird Sanchola (贪心) 我们思考一下最终的素数取什么最优,假设素数PPP,有LLL个元素小于等于PPP,有RRR个元素大于PPP, 那么我们需要移动的次数就显然是P∗(L−R)−sum≤p+sum&gt;pP*(L-R)-sum_{\leq p}+sum_{&gt;p}P∗(L−R)−sum≤p​+sum>p​,我们需要最小化这个值. 先将数组按从大...

pubgoso的博客 1126

SAP接口错误查询日志

随着数字经济的迅速发展,企业数字化转型不在只追求“业财一体化”,而是在业务端也想要进行更为精细化的管理,所以很多企业在SAP ERP的基础上,集成更多垂直领域更精细的外围系统,比如销售CRM系统,采购SRM系统,生产MES系统等等,琳琅满目的产品,那对SAP实施来说,系统集成过程中,接口的一些报错查询能力必不可少,今天我们就介绍一下,SAP和CRM系统集成中接口常见的报错。

weixin_43657667的博客 2047

第3.2.1章 Eigen代码实战:四元数赋值用法总结及与变换矩阵转换

Eigen库中四元数(Quaternion)的赋值方法解析:Quaterniond和Quaternion<double>本质相同,但Quaterniond是更简洁的别名。主要赋值方式包括直接构造(w,x,y,z分量、旋转矩阵或轴角)、赋值运算符和成员函数赋值。使用时需注意参数顺序、归一化处理和头文件包含,常见错误包括模板参数缺失和构造顺序错误。四元数广泛应用于旋转矩阵转换、姿态组合等场景,合理选择赋值方式能提高代码可读性和正确性。

行知SLAM 587

Weird Sanchola

Weird Sanchola Gym - 102302J 我们先找到数组中的中位数,在从中位数出发寻找距离中位数最近的素数。设x=n/2,这里要注意的是当n为奇数时,数组的中位数是a[x+n%2]而n为偶数时数组的中位数是a[x],a[x+1]。存在两个值,所以我们要考虑a[x],a[x+1]之间存在的素数。解决这一特殊情况,剩下的就是从中位数开始向两边遍历查找素数,找到后再进行计算,得到最小值。 #include <iostream> #include <cstdio>

qq_45728527的博客 287

05 - matlab m_map地学绘图工具基础函数 - 设置比例尺指北针

本篇介绍下m_map中添加指北针(m_northarrow)、比例尺(m_ruler)和进行比例缩放(m_scale)的函数及其用法 。提供了 示例以便参考,罗列了 各函数可设属性。希望对绘图的你有所帮助。

weixin_43339605的博客 1945

牛客 牛牛的揠苗助长 题解 (中位数+二分) 2019 USP-ICMC J. Weird Sanchola 题解(中位数+相邻的质数的最大差值)

牛牛的揠苗助长 题目思路 1:如果不增加,那么肯定是靠齐中位数,类似于仓库选址。 2:假设经过无限长的时间后,我终于将所有水稻都调整到了一样高,这个同样高的高度是否能持续保持?显然是可以的对吧,因为每一天都仅有一个水稻的高度长高,所以我只要将自然长的水稻给他摁回去,就能一直保持他们都是同样高的。所以满足单调性可以二分。 代码 #include<cstdio> #include<cstring> #include<algorithm> typedef long long l

hunxuewangzi的博客 367

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

思维题——Gym(102302J) Weird Sanchola

题目 Sanchola is getting an array of integers as gift. He’s weird, so he doesn’t like having distinct integers in the same array and he only likes prime numbers. That’s why he believes that he might nee...

weixin_45261389的博客 652

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

2019 USP-ICMC A - Jumping Buildings

A - Jumping Buildings 题目链接-Jumping Buildings 题目大意 给出n个数,在位置i上可移动到min(i+a[i],n)且只能移动一次,若中间有大于a[i]的数a[j],则只能移动到j-1,求在每个位置上能移动的距离 解题思路 单调栈,模拟即可,每次和把新输入的数字与栈顶比较,若大于栈顶就与栈中下一个数继续比较,直到找到栈顶大于输入的数字为止 附上代码 #i...

Fiveneves的博客 430

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

2019牛客暑期多校训练营(第三场)----C-Guessing ETT

首先发出题目链接: 链接:https://ac.nowcoder.com/acm/contest/883/C 来源:牛客网 涉及:递归、二分查找 点击这里回到2019牛客暑期多校训练营解题—目录贴 一道比较简单 的思维题 此题让我们找到原字符串中‘0’和‘1’数量相同的子串和子序列。 注意子串在原字符串是连续的;而子序列在原字符串是可以不连续的,但是顺序不能改变 先讨论最长的‘0’‘1’数...

weixin_43702895的博客 693

GYM 101875 2018 USP-ICMC

周末的一次组队训练,让我再次感觉到自己的菜 题目链接 Problem A 题意:求最大生成树的权值和 题解:可以证明的是,我们每一个人都向接下来的第k个人连边,剩下的连第k-1个人,这样得到的边权和一定是最大的 C++版本一 #include<bits/stdc++.h> using namespace std; long long gcd(long long a,long long ...

Victor的博客 487

2019 USP-ICMC K. Candies

链接 题意: n 个数, 还有 L, R, 问有多少个本质不同的区间和在 L R 之间。 思路: 先考虑一个问题 , 长度为 n 的字符串, 求本质不同的子串有多少个。 n * (n + 1 ) / 2 然后在减去 height[i] , 这种是求总的, 然后减去重复的。 sa 代表排名为 i 的子串在的位置, 然后 height[i] 代表排名为 i 的子串和排名为 i - 1 的子串 重...

Top_xiao的博客 340

ArabellaCPC 2019 B. Road to Arabella

题目 这个题题意弄明白就会了,也就是对手有一个正整数n,你有一个正整数k<=n,每一次都能对n执行n-=x,(1≤x≤max(1,m−k));把0摆在对方面前就是赢了。 如此我们很容易想起奇偶性博弈,总能把偶数摆在对方面前,我们就行了,所以对所有n,k;我们要做的是,能不能总是把偶数摆在对方面前。 则当k+1== n,或者k== n,每次都只能减去1,所以n为奇数我们才能总是把偶数摆在对方面...

DevourPower的博客 502

D - Guessing Messages(SDUT 2019 Summer Team Contest 15th)(字符串)

Samuelo is a very good friend of Roppa. Whenever they feel bored, they like to exchange secret messages. To do that, they craft some text in such a way so that the hidden message is a subsequence of i...

sherry_zhen的博客 436

HDU-A - Oulipo【板子库_KMP算法】

题目链接…………………………………… KMP算法匆匆看完板子一知半解,然后看了整整一天原理才懂了一些,记录一下板子 #include <iostream> #include <algorithm> #include <cstdio> #include <cmath> #include <cstring> #include <stri...

DevourPower的博客 277

视频隐私脱敏工程化:CSRT/KCF追踪算法在本地推理中的实现与边界

在短视频内容合规审查中,动态遮挡(Dynamic Masking)是高频且高耗时的环节。传统手动关键帧打码不仅效率低下,且在目标快速移动或遮挡时极易出现遮罩漂移。本文从计算机视觉工程角度,解析基于CSRT与KCF算法的目标追踪方案在视频隐私处理中的技术路径、性能权衡及落地实践。

Mysssone的博客 191

【算法拾光】链表 哈希表|K个一组翻转链表 + 两数之和

K个一组翻转链表需分段反转,借助哑节点与前驱指针维护连接,避免断链;两数之和利用哈希表实现O(1)查找,空间换时间,高效定位目标组合。前者考察链表指针操作,后者聚焦映射关系构建,均为面试高频题。

wuqingyigexiaoba的博客 293

排序算法深度笔记(下):非比较类排序的线性突破与工程边界

排序算法时间复杂度额外空间复杂度稳定性是否基于比较选择排序O(N^2)(O(1))不稳定是冒泡排序O(N^2)(O(1))稳定是插入排序O(N^2)(O(1))稳定是归并排序O(N\log N)(O(N))稳定是快速排序O(N\log N)O(log N)不稳定是堆排序O(N\log N)O(1)不稳定是计数排序(O(N + M))O(M))稳定否基数排序O(N)稳定否桶排序平均O(N) / 最坏O(N^2)

2401_87069538的博客 560

算法日常・每日刷题--<动态规划>42

本题为“不相交的线”,与最长公共子序列问题相似。使用动态规划求解:定义 dp[i][j] 表示 nums1[0:i] 与 nums2[0:j] 的最大不相交连线数。若元素相等,则继承左上值加1;否则取上方或左方最大值。最终返回 dp[m][n],即两数组的最大不相交连线数。时间复杂度 O(mn),空间复杂度 O(mn)。

2503_92261635的博客 20
上一篇: HDU-A - Oulipo【板子库_KMP算法】
下一篇: 东北林业大NEFU 五一欢乐水题 F&H题解
DevourPower
博客等级 码龄7年 52粉丝 78原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值