24.9.29

news2024/11/19 1:21:01

星期一:

补 cf round974 div3 H                                      cf传送门

题意:给一数组,q次询问,每次询问l-r区间内是否每个数字都出现偶数次

终于找到了梦中的随机数函数,这随机数真是非常顶级口牙

思路:众所周知异或前缀和可以除掉出现偶数次的数字,但直接异或前缀和很容易出错,比如1 2 3,我们给每个ai赋一个随机数,这样就会大大减少出错的概率

代码如下:

mt19937_64 rnd(time(0));

const int N=2.2e6+10,M=210;
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
ll n;
ll a[N];
void solve(){
	int q; cin >> n >> q;
	map<int,ll>mp;
	for(int i=1;i<=n;i++){
		cin >> a[i];
		if(!mp.count(a[i])) mp[a[i]]=rnd();
		a[i]=mp[a[i]];
		a[i]^=a[i-1];
	}
	while(q--){
		int l,r; cin >> l >> r;
		if(a[r]^a[l-1]) cout << "NO\n";
		else cout << "YES\n";
	}
}

既然找到了梦中情数,那就不得不来试试之前那道状压,看能不能用随机数加逆康托冲过去

上链接                                                       cf传送门

很典的状压dp,上周就想用随机+逆康托看能不能冲过去,可惜受限于初始rand()函数太拉跨

今时不同往日,有了无敌的 mt19937_64 rnd(time(0)),看我一举冲破敌人的数据

调了两次cnt,由于逆康托费拉不堪的n^2复杂度,跑2e6与1e6次会T,不过1e5足矣

代码如下:

mt19937_64 rnd(time(0));

const int N=2.2e6+10,M=210;
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
ll n;

ll rng(ll l,ll r){
	return rnd()%(r-l+1)+l;
}
ll fac[N];
vector<int> rev_kt(ull k,int len){             //编号和排列长度
	vector<int>ans;
	k--;
	vector<int>ve;
	for(int i=1;i<=len;i++) ve.push_back(i);
	for(int i=1;i<=len;i++){
		int t=k/fac[len-i];
		ans.push_back(ve[t]);
		ve.erase(ve.begin()+t);
		k%=fac[len-i];
	}
	return ans;
}
void solve(){
	fac[0]=1;
	for(int i=1;i<=13;i++) fac[i]=fac[i-1]*i;
	int w; cin >> n >> w;
	map<int,int>mp;
	for(int i=1;i<=n;i++){
		int len; cin >> len;
		mp[len]++;
	}
	vector<int>ve; ve.push_back(0);
	for(auto [x,y]:mp) ve.push_back(y);
	int sz=mp.size();
	set<ll>st;
	int cnt=1e5,ans=13;
	while(cnt--){
		ll idx=rng(1,fac[sz]);
		if(st.find(idx)!=st.end()) continue;
		st.insert(idx);
		auto p=rev_kt(idx,sz);
		int day=1,lef=w;
		for(int i:p){
			if(ve[i]>lef) lef=w-ve[i],day++;
			else lef-=ve[i];
			if(day>=ans) break;
		}
		ans=min(day,ans);
		if((ll)st.size()==fac[sz]) break;
	}
	cout << ans;
}

逆康托。。感觉不如shuffle()函数,比逆康托快了200ms

代码如下:

mt19937_64 rnd(time(0));

const int N=2.2e6+10,M=210;
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
ll n;

void solve(){
	int w; cin >> n >> w;
	map<int,int>mp;
	for(int i=1;i<=n;i++){
		int len; cin >> len;
		mp[len]++;
	}
	vector<int>ve; ve.push_back(0);
	for(auto [x,y]:mp) ve.push_back(y);
	int sz=mp.size();
	vector<int>p;
	for(int i=1;i<=sz;i++) p.push_back(i);
	int cnt=1e5,ans=13;
	while(cnt--){
		shuffle(p.begin(),p.end(),rnd);
		int day=1,lef=w;
		for(int i:p){
			if(ve[i]>lef) lef=w-ve[i],day++;
			else lef-=ve[i];
			if(day>=ans) break;
		}
		ans=min(day,ans);
	}
	cout << ans;
}

不过24百度之星决赛的状压无法用随机数冲过去,21!太大,ac概率跟买彩票差不多

学而时习之,不亦乐乎,重做道经典主席树             牛客传送门

思路:之前的文章已有:csdn传送门,此处不再赘述

代码方面看了下和上次的差别不大,除了fnd_sum写的更精简了些

不过太久没写主席树,这次写了个幽默的pushup(),还有ed给取成max了

代码如下:

const int N=6e5+10,M=210;
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
ll n;
int a[N];
const int MAXN=6e5+10;
struct seg_Tree{
#define lc(p) t[p].ch[0]
#define rc(p) t[p].ch[1]
	struct nod{
		int ch[2];
		int sum,ed;
	}t[N*22];
	int tot,root[N];
	void insert(int x,int &y,int l,int r,int qv,int i){
		y=++tot; t[y]=t[x]; t[y].sum++;
		if(l==r){
			t[y].ed=i;
			return ;
		}
		int mid=l+r>>1;
		if(qv<=mid) insert(lc(x),lc(y),l,mid,qv,i);
		if(qv>mid) insert(rc(x),rc(y),mid+1,r,qv,i);
		t[y].ed=min(t[lc(y)].ed,t[rc(y)].ed);
	}
	int fnd_mex(int y,int l,int r,int ql){
		if(l==r) return l;
		int mid=l+r>>1;
		if(t[lc(y)].ed<ql) return fnd_mex(lc(y),l,mid,ql);
		else return fnd_mex(rc(y),mid+1,r,ql);
	}
	int fnd_sum(int x,int y,int l,int r,int qv){
		if(r<=qv) return t[y].sum-t[x].sum;
		int mid=l+r>>1;
		int res=0;
		res+=fnd_sum(lc(x),lc(y),l,mid,qv);
		if(qv>mid) res+=fnd_sum(rc(x),rc(y),mid+1,r,qv);
		return res;
	}
}tr;
void solve(){
	cin >> n;
	map<int,int>to;int cnt=0;
	for(int i=1;i<=n;i++){
		cin >> a[i];
		to[a[i]]=1;
		to[a[i]+1]=1;
	}
	for(auto &[x,y]:to) y=++cnt;
	for(int i=1;i<=n;i++) tr.insert(tr.root[i-1],tr.root[i],1,MAXN,to[a[i]],i);
	int q; cin >> q;
	while(q--){
		int l,r; cin >> l >> r;
		int mex=tr.fnd_mex(tr.root[r],1,MAXN,l);
		int sum=tr.fnd_sum(tr.root[l-1],tr.root[r],1,MAXN,mex);
		cout << r-l+1-sum << "\n";
	}
}

补 cf round 973 div2 D                                     cf传送门

曾作为牛客多校的签到题出现过,不过那题数据范围100以内

思路:易想到只要存在 ai > ai+1,就操作,最后是个单调不减,不过数据范围不允许暴力抹平,可以二分出最大的最小值和最小的最大值,来取得最小极差

代码如下:

const int N=3e5+10,M=210;
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
ll n;
ll a[N];
bool check1(ll x){
	ll sum=0;
	for(int i=1;i<=n;i++){
		if(a[i]>x) sum+=a[i]-x;
		else if(sum<x-a[i]) return 0;
		else sum-=x-a[i];
	}
	return 1;
}
bool check2(ll x){
	ll sum=0;
	for(int i=1;i<=n;i++){
		if(a[i]>x) sum+=a[i]-x;
		else sum-=x-a[i],sum=max(0ll,sum);
	}
	return sum==0;
}
void solve(){
	cin >> n;
	ll mi=1e18,ma=0;
	for(int i=1;i<=n;i++){
		cin >> a[i];
		mi=min(a[i],mi);
		ma=max(a[i],ma);
	}
	ll ans1=0,ans2=0;
	ll l=mi,r=ma;
	while(l<=r){
		ll mid=l+r>>1;
		if(check1(mid)) ans1=mid,l=mid+1;
		else r=mid-1;
	}
	l=mi,r=ma;
	while(l<=r){
		ll mid=l+r>>1;
		if(check2(mid)) ans2=mid,r=mid-1;
		else l=mid+1;
	}
	cout << ans2-ans1 << "\n";
}

星期二:

cf edu round134 div2 D 位运算贪心                 cf传送门

思路:易想到从高位向低位贪心,ans怎样能在这位上为1呢,需要a中此位为0的数与b中此位为1的数能一一对应,即数量相等,反过来也是一样,若ans此位为1,接下来需要把a和b按此位01对应分为两组,以后每一低位需在每个小组内递推找对应。思路上不难,但代码如何实现是个问题

这里用到了神奇的sort,首先将a从小到大排,将b从大到小排,为什么这么做呢,将每个数看作二进制,排序时一定先按优先级最高的第一位来排,也就是如果a中最高位的0/1数量刚好能和b中最高位的1/0数量对应,那么一定存在 idx,使得任意i<=idx,ai此位为0,bi此位为1,任意i>=idx,ai此位为1,bi此位为0。

利用这点,我们就无形中做到了分组,如果ans此位不能为1,就将a,b所有数此位全设为0或1,重新排序,避免以后低位时受到这一位对排序的影响,如果能为1,就保留原来情况

代码如下:

const int N=2e5+10,M=210;
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
ll n;
int a[N],b[N];
void solve(){
	cin >> n;
	for(int i=1;i<=n;i++) cin >> a[i];
	for(int i=1;i<=n;i++) cin >> b[i];
	sort(a+1,a+n+1);
	sort(b+1,b+n+1,greater<>());
	int ans=0;
	for(int i=30;~i;i--){
		bool if1=1;
		for(int j=1;j<=n;j++) if((a[j]&1<<i)==(b[j]&1<<i)){if1=0; break;}
		if(if1) ans|=1<<i;
		else{
			for(int j=1;j<=n;j++) a[j]|=1<<i,b[j]|=1<<i;
			sort(a+1,a+n+1);
			sort(b+1,b+n+1,greater<>());
		}
	}
	cout << ans << "\n";
}

星期三:

补 23 CCPC秦皇岛 F                                      cf传送门

首先注意读题,ai属于正整数集合,也就是说不能把ai改成0

思路:这题有一个大胆的前置结论,对于奇偶性相同的x,y,存在无穷个z使得x+z与y+z为质数

也就是说,若 ai-1与ai+1奇偶性相同,修改ai一定能满足ai+ai-1与ai+ai+1都为质数。实际上这题和石碑文很像,都是先定义状态,然后大力分类讨论来转移

题解定了4个状态,我自己定了7个

1-改为1,2-改为2,3-改为任意奇数,4-改为任意偶数,5-不变,6-改为质数-1,7-改为质数-2

注意分类讨论需要比较细

代码如下:

const int N=2e6+10,M=1e4+10;
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
ll n;
int dp[N][8];
int p[N],idx;
bool vi[N];
void getp(int x){
	for(int i=2;i<=x;i++){
		if(!vi[i]) p[++idx]=i;
		for(int j=1;1ll*i*p[j]<=x;j++){
			vi[i*p[j]]=1;
			if(i%p[j]==0) break;
		}
	}
}
void solve(){
	getp(2e5+10);
	cin >> n;
	int lst=0;
	cin >> lst;
	memset(dp,0x3f,sizeof dp);
	dp[1][1]=(lst!=1);
	dp[1][2]=(lst!=2);
	dp[1][3]=dp[1][4]=1;
	dp[1][5]=0;
	dp[1][6]=vi[lst+1];
	dp[1][7]=vi[lst+2];
	for(int i=2;i<=n;i++){
		int a; cin >> a;
		dp[i][1]=min({dp[i-1][1],dp[i-1][2],dp[i-1][4],dp[i-1][6]})+(a!=1);
		dp[i][2]=min({dp[i-1][1],dp[i-1][3],dp[i-1][7]})+(a!=2);
		if(lst&1) dp[i][3]=dp[i-1][4]+1,dp[i][4]=min(dp[i-1][3],dp[i-1][5])+1;
		else dp[i][3]=min(dp[i-1][4],dp[i-1][5])+1,dp[i][4]=dp[i-1][3]+1;
		dp[i][3]=min(dp[i-1][2]+1,dp[i][3]);
		dp[i][4]=min(dp[i-1][1]+1,dp[i][4]);
		if(a==1) dp[i][5]=min({dp[i-1][1],dp[i-1][2],dp[i-1][4],dp[i-1][6]});
		else if(a==2) dp[i][5]=min({dp[i-1][1],dp[i-1][3],dp[i-1][7]});
		else{
			if(a&1) dp[i][5]=dp[i-1][4];
			else dp[i][5]=dp[i-1][3];
		}
		if(!vi[lst+a]) dp[i][5]=min(dp[i-1][5],dp[i][5]);
		if(!vi[a+1]) dp[i][5]=min(dp[i-1][1],dp[i][5]),dp[i][6]=dp[i][5];
		if(!vi[a+2]) dp[i][5]=min(dp[i-1][2],dp[i][5]),dp[i][7]=dp[i][5];
		dp[i][6]=min(dp[i-1][1]+(vi[a+1]),dp[i][6]);
		dp[i][7]=min(dp[i-1][2]+(vi[a+2]),dp[i][7]);
		lst=a;
	}
	cout << *min_element(dp[n]+1,dp[n]+8) << "\n";
//	for(int j=1;j<8;j++) cout << j << " \n"[j==7];
//	cout << "\n";
//	for(int i=1;i<=n;i++)
//		for(int j=1;j<8;j++) cout << dp[i][j] << " \n"[j==7];
}

补 24 ICPC武汉邀请赛 F 难得交互                      cf传送门

思路:二分答案,如何check是个问题,从左下角开始走,若当前元素<=mid,则同列以上所有数都<=mid,sum加上行数,往右走,若当前元素>mid,则往上走,步数最多 2*n,再加个log1e6,询问在4e4之内

代码如下:

const int N=2e6+10,M=1e4+10;
const int INF=0x3f3f3f3f;
const int mod=1e9+7;
ll n;
ll ask(int x,int y,ll mid){
	cout << "? " << x << " " << y << " " << mid << endl;
	bool ifx=0; cin >> ifx;
	return ifx;
}
void solve(){
	ll k; cin >> n >> k;
	k=n*n-k+1;
	ll l=1,r=n*n,ans=0;
	while(l<=r){
		ll mid=l+r>>1;
		int px=n,py=1,sum=0;
		while(px && py<=n){
			if(ask(px,py,mid)) sum+=px,py++;
			else px--;
		}
		if(sum>=k) ans=mid,r=mid-1;
		else l=mid+1;
	}
	cout << "! " << ans;
}

贴道 B                                                          cf传送门

平心而论并不算难的贪心题,但赛时这题花了3h

思路:从高位到低位放,放这位的前提是低位放满都不够,放的话尽量这位多放点

代码如下:

void solve(){
	cin >> n;
	ll sum=0;
	for(int i=1;i<=n;i++){
		int a; cin >> a;
		sum+=a;
	}
	ll ans=0;
	for(int i=31;~i;i--){
		ll one=1ll<<i;
		if(one>sum) continue;
		ll ma=((1ll<<i)-1)*n;
		if(ma<sum){
			ans|=1<<i;
			sum-=min(n,sum/one)*one;
		}
	}
	cout << ans;
}

星期四:

补24 ICPC武汉邀请赛 M                                   cf传送门

思路:注意到合并操作必定是一奇一偶合成一个奇数,所以偶数是用一个少一个,可以把偶数从大到小来考虑,例如 num是一偶数,应优先看有无 num+1或能否合成,若无,再检查 num-1

如何判断能否得到数 num+1呢,已知num+1可确定由num0和num1合成,若无num0,那么肯定无法合成,若还有num0,再判断能否得到num1。相信聪明的你已经发现了,判断可用递推递归实现

记录数的数量用map,注意带着map跑dfs时别 RE了

代码如下:

ll n;
map<ll,int>mp;
bool dfs(ll num){
	ll num0=num/2,num1=num/2;
	if(num0&1) num0++;
	else num1++;              //找出由哪俩数合成
	if(mp[num0]<=0) return 0; //先看最重要偶数
	mp[num0]--;               //若有,先给扣掉,以免影响递推的dfs判断
	if(mp[num1]>0 || dfs(num1)){
		mp[num1]--,mp[num]++;
		n--;
		return 1;
	}else{
		mp[num0]++;       //无法合成,记得给num0还回来
		return 0;
	}
}
void solve(){
	cin >> n;
	vector<ll>ve;
	for(int i=1;i<=n;i++){
		ll a; cin >> a;
		mp[a]++;
		if(!(a&1)) ve.push_back(a);
	}
	sort(ve.begin(),ve.end(),greater<>());
	for(ll num:ve) if(mp[num]>0){
		mp[num]--;
		if(mp[num+1]>0 || dfs(num+1)) mp[num+1]--,mp[num*2+1]++,n--;
		else if(mp[num-1]>0 || dfs(num-1)) mp[num-1]--,mp[num*2-1]++,n--;
		else mp[num]++;
	}
	cout << n << "\n";
	for(auto [x,y]:mp) for(int i=1;i<=y;i++) cout << x << " ";
}

星期五:

补 D                                                                cf传送门

注意题目有说明,异或只是输出答案的方式,与解法无关

思路:g【i】【j】表示从 i开始走 j步不折返的最大价值,f【i】【j】表示折返一次

先处理出 g的值,将 f的左右折返分开看,f【i】【j】若向左折返一步,则等于g【i-1】【j-1】,折返两步等于g【i-2】【j-2】,以此类推,若向右折返一步等于g【i+1】【j-1】,两步为g【i+2】【j-2】,以此类推

到这即可使用n^2枚举 i,j,同时g【i】【j】一直向上个状态取最大值,即可处理出f

注释语句也可处理出 f

代码如下:

ll n;
ll a[5050];
ll f[5050][5050*2],g[5050][5050*2];
void solve(){
	cin >> n;
	for(int i=1;i<=n;i++){
		cin >> a[i];
		a[i]+=a[i-1];
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=2*n;j++){
			int l=max(i-j,1),r=min(1ll*i+j,n);
			g[i][j]=max(a[i]-a[l-1],a[r]-a[i-1]);
		}
	}
	for(int i=1;i<=n;i++){
		for(int j=1;j<=2*n;j++){
			g[i][j]=max(g[i-1][j-1],g[i][j]);
			f[i][j]=g[i][j];
//			f[i][j]=max(f[i-1][j-1],g[i][j]);
		}
	}
	for(int i=n;i;i--){
		for(int j=1;j<=2*n;j++){
			g[i][j]=max(g[i+1][j-1],g[i][j]);
			f[i][j]=max(g[i][j],f[i][j]);
//			f[i][j]=max(f[i+1][j-1],f[i][j]);
		}
	}
	ll ans=0;
	for(int i=1;i<=n;i++){
		ll tmp=0;
		for(int j=1;j<=2*n;j++) tmp^=f[i][j]*j;
		ans^=tmp+i;
	}
	cout << ans;
}

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

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

相关文章

Python开源项目周排行 2024年第15周

#2024年第15周2024年8月30日1openuiOpenUI 是用于生成 UI 界面的 AI 工具。OpenUI 让你可以发挥想象力来描述 UI&#xff0c;然后查看它的实时渲染。你可以将生成的 HTML 转换为 React、Svelte、Web Components 等。它类似于 v0&#xff08;v0.dev&#xff09;&#xff0c;但是…

Unity开发绘画板——04.笔刷大小调节

笔刷大小调节 上面的代码中其实我们已经提供了笔刷大小的字段&#xff0c;即brushSize&#xff0c;现在只需要将该字段和界面中的Slider绑定即可&#xff0c;Slider值的范围我们设置为1~20 代码中只需要做如下改动&#xff1a; public Slider brushSizeSlider; //控制笔刷大…

Altium Designer脚本的执行方式

在Altium Designer脚本系统中执行脚本支持多种方法 1.点击工具栏的运行工具(蓝色向右三角图标)可以执行脚本程序&#xff1b; 2.点击菜单栏Run->Run可以执行脚本程序&#xff1b; 3.在脚本编辑器中&#xff0c;按键盘的F9键可以执行脚本程序&#xff1b; 4.通过菜单栏执行脚…

新品 | Teledyne FLIR IIS 推出Forge 1GigE SWIR 短波红外工业相机系列

近日&#xff0c;51camera的合作伙伴Teledyne FLIR IIS推出了新品Forge 1GigE SWIR 130万像素的红外相机。 Forge 1GigE SWIR系列的首款相机配备宽频带、高灵敏度的Sony SenSWIR™️ 130万像素IMX990 InGaAs传感器。这款先进的传感器采用5um像素捕捉可见光和SWIR光谱&#xff…

【2025】基于Spring Boot的智慧农业小程序(源码+文档+调试+答疑)

文章目录 一、***-项目介绍二、***-开发环境三、***-系统展示四、***-代码展示五、***-项目文档展示六、***-项目总结 大家可以帮忙点赞、收藏、关注、评论啦 &#x1f447;&#x1f3fb; 一、***-项目介绍 当今社会已经步入了科学技术进步和经济社会快速发展的新时期&#x…

【网盘源码】网站拦截申诉之部署验证文件

文件中新增文件&#xff0c;填写验证内容 nginx中配置反向代理 location /字符文件名.txt {alias /www/wwwroot/****/字符文件名.txt;}

倍增求 LCA

1. 树上倍增——倍增求 LCA LCA 指的是最近的公共祖先&#xff0c;倍增法求解 LCA 的步骤如下。 &#xff08;1&#xff09;预处理 a. 求深度&#xff1a;对于每个节点 dfs 预处理处节点深度&#xff1b; b. 求倍增祖先&#xff1a;计算出每个节点向父元素跳 步所到达的节点…

@网安人,欢度国庆,共享盛世!

一、网络安全&#xff1a;时代发展的关键基石 网络安全在当今数字化时代的重要性不言而喻&#xff0c;它如同坚实的基石&#xff0c;支撑着国家的稳定、经济的发展和社会的和谐。 &#xff08;一&#xff09;国家安全的关键防线 在当今世界&#xff0c;网络空间的战略地位愈…

Linux中配置docker环境

1.基础信息了解 &#xff08;1&#xff09;docker信息了解&#xff0c;docker官网 https://www.docker.com/&#xff0c;docker中文网 https://dockerdocs.cn/&#xff0c;还可以了解下虚拟化和容器化的知识&#xff0c;虚拟化和容器化 &#xff08;2&#xff09;查看当前Lin…

PyCharm vs VSCode,是时候改变你的 IDE 了!

在编程世界中&#xff0c;选择一个合适的 IDE (集成开发环境) 对开发者来说至关重要&#xff0c;直接影响开发效率和体验。 在软件开发的世界里&#xff0c;选择一个合适的集成开发环境&#xff08;IDE&#xff09;就如同为自己找到了一把趁手的工具。PyCharm 和 VSCode 是两款…

springboot厨房达人美食分享平台(源码+文档+调试+答疑)

文章目录 前言一、主要技术&#xff1f;二、项目内容1.整体介绍&#xff08;示范&#xff09;2.运行截图3.部分代码介绍 总结更多项目 前言 厨房达人美食分享平台的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c…

uniapp中在web端如何友好的展示app当前的版本等信息

一个小技巧&#xff0c;分享下在webapp中友好展示当前app信息的方法 实现效果 代码实现 导入 import {version,name} from ./package.json应用声明周期中处理 onLaunch: function() { // #ifdef H5console.log(%c hello uniapp %c v${version} ,background:#35495e ; paddin…

YOLOv11改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题

一、本文介绍 本文记录的是改进YOLOv11的损失函数&#xff0c;将其替换成Slide Loss&#xff0c;并详细说明了优化原因&#xff0c;注意事项等。Slide Loss函数可以有效地解决样本不平衡问题&#xff0c;为困难样本赋予更高的权重&#xff0c;使模型在训练过程中更加关注困难样…

第十七章:c语言内存函数

1. memcpy使⽤和模拟实现 2. memmove使⽤ 3. memset函数的使⽤ 4. memcmp函数的使⽤ 天行健 君子以自强不息一、memcpy的使用和模拟实现 作用&#xff1a; 1. 函数memcpy从source的位置向后复制num个字节的数据到destination指向的内存位置。 2. 这个函数在遇到‘\0’的时…

如何创建出更鲁棒、更值得信赖的大模型

尽管深度学习取得了令人瞩目的成就&#xff0c;提供了各种各样的产品和功能&#xff0c;但它还没有跨过最后的障碍。 随着复杂的神经网络越来越多地应用于任务关键型和安全关键型应用中&#xff0c;围绕其鲁棒性出现的问题也越来越多。 许多深度学习算法的黑箱性质让精通安全的…

【完-网络安全】Windows注册表

文章目录 注册表启动项及常见作用五个根节点常见入侵方式 注册表 注册表在windows系统的配置和控制方面扮演了一个非常关键的角色&#xff0c;它既是系统全局设置的存储仓库&#xff0c;也是每个用户的设置信息的存储仓库。 启动项及常见作用 快捷键 WinR打开运行窗口&#x…

谱减法和维纳滤波的关系

目录 一、基本原理二、谱减法与维纳滤波的联系三、实际应用中的对比四、优缺点分析五、两者的融合与改进六、举例说明七、总结与展望 谱减法和维纳滤波是两种常见的语音增强算法&#xff0c;在信号处理领域中&#xff0c;特别是语音降噪方面有着广泛的应用。它们各自具有独特的…

【Python|接口自动化测试】使用requests发送http请求时添加headers

文章目录 1.前言2.HTTP请求头的作用3.在不添加headers时4.反爬虫是什么&#xff1f;5.在请求时添加headers 1.前言 本篇文章主要讲解如何使用requests请求时添加headers&#xff0c;为什么要加headers呢&#xff1f;是因为有些接口不添加headers时&#xff0c;请求会失败。 2…

执行力怎么培养?

执行力怎么培养&#xff1f; 并行&#xff1a;适合在初期养成习惯&#xff0c;不抱对结果的期望天才就是强迫症&#xff1a;适合中期修身&#xff1a;适合高级 并行&#xff1a;适合在初期养成习惯&#xff0c;不抱对结果的期望 在你开始做任何事情的时候&#xff0c;不要一开…

【STM32】 TCP/IP通信协议(1)--LwIP介绍

一、前言 TCP/IP是干啥的&#xff1f;它跟SPI、IIC、CAN有什么区别&#xff1f;它如何实现stm32的通讯&#xff1f;如何去配置&#xff1f;为了搞懂这些问题&#xff0c;查询资料可解决如下疑问&#xff1a; 1.为什么要用以太网通信? 以太网(Ethernet) 是指遵守 IEEE 802.3 …