2024牛客寒假算法基础集训营1(补题)

文章目录

  • A
  • B
  • C
  • D
  • E
  • F
  • G
  • H
  • I
  • J
  • K
  • L

A

n的范围很小暴力直接 O ( n 3 ) O(n^3) O(n3)直接做就行。
我还傻的统计了一下前后缀,不过怎么写都行这道题。

#include <bits/stdc++.h> 
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define ls p<<1
#define rs p<<1|1
#define PII pair<int, int>
#define pll pair<long long, long long>
#define ll long long
#define ull unsigned long long
#define db double
#define endl '\n'
#define debug(a) cout<<#a<<"="<<a<<endl;
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define INF 0x3f3f3f3f 
#define x first
#define y second

using namespace std;

const int N=30,mod=1e9+7;
int n,m,a[N],b[N],k;
int f[60][60];
char s[60];
int l[60],r[60]; 
bool st=false;



void solve()
{
	int n;cin>>n;
	rep(i,1,59)	l[i]=r[i]=0;
	cin>>(s+1);
	//DFS
	map<char,int>cnt;
	rep(i,1,n)
	{
		if(cnt.find('D')!=cnt.end())	l[i]=1;
		cnt[s[i]]=1;
	}
	cnt.clear();
	fep(i,n,1)
	{
		if(cnt.find('S')!=cnt.end())	r[i]=1;
		cnt[s[i]]=1;
	}
	//
	bool st=1;
	rep(i,1,n)
	{
		if(s[i]=='F'&&l[i]==1&&r[i]==1)
		{
			cout<<1<<' ';
			st=0;
			break;
		}
	}
	if(st)	cout<<0<<' ';
	
	
	//dfs
	st=1;
	rep(i,1,59)	l[i]=r[i]=0;
	cnt.clear();
	
	rep(i,1,n)
	{
		if(cnt.find('d')!=cnt.end())	l[i]=1;
		cnt[s[i]]=1;
	}
	cnt.clear();
	fep(i,n,1)
	{
		if(cnt.find('s')!=cnt.end())	r[i]=1;
		cnt[s[i]]=1;
	}
	rep(i,1,n)
	{
		if(s[i]=='f'&&l[i]==1&&r[i]==1)
		{
			cout<<1<<' ';
			st=0;
			break;
		}
	}
	if(st)	cout<<0<<' ';
	cout<<endl;
}

signed main()
{
	IOS	
//  	freopen("1.in", "r", stdin);
  	int _;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

B

赛时的思路是:周围三个点特判,然后左边求最小和右边求最小,最后和特判取最小。
代码写的比较一坨很乱,最后也没调出来。
遇见这种感觉还是重写吧。
主要就是分类讨论

  1. 看鸡左边被堵没有
  2. 看鸡右边被堵没有
  3. 看鸡左边有没有火
  4. 看鸡右边有没有火
  5. 特判(2,0)
    自己写的太丑了,放一份加了注释的jls的代码吧。
#include <bits/stdc++.h>

using i64 = long long;

void solve() {
    int n;
    std::cin >> n;
    
	//left1表示左边是否有火,right1表示右边是否有火
	//left2表示左边是否能堵住鸡,right2表示右边是否能堵住鸡
    int left1 = 0, left2 = 0;
    int right1 = 0, right2 = 0;
    
    std::set<std::pair<int, int>> s;
    for (int i = 0; i < n; i++) {
        int r, c;
        std::cin >> r >> c;
        
        if (c <= 0) {
            left1 = 1;
        }
        if (c >= 0) {
            right1 = 1;
        }
        s.emplace(r, c);
    }
    
    for (auto [r, c] : s) {
        if (!c) {
            continue;
        }
		//这里和3异或真的简化了很多代码
        if (s.count({r ^ 3, c}) || s.count({r ^ 3, c + (c > 0 ? -1 : 1)})) {
            if (c > 0) {
                right2 = 1;
            } else {
                left2 = 1;
            }
        }
    }
    
    int ans = 4 - left1 - left2 - right1 - right2;
    ans = std::min(ans, int(3 - s.count({2, 0}) - s.count({1, -1}) - s.count({1, 1})));
    std::cout << ans << "\n";
}

int main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    int t;
    std::cin >> t;
    
    while (t--) {
        solve();
    }
    
    return 0;
}

C


S m i n = 所有人办事的时间 + 等待时间 S_{min}=所有人办事的时间+等待时间 Smin=所有人办事的时间+等待时间
等待时间 = T 1 ∗ n + T 2 ∗ ( n − 1 ) + . . . + T n ∗ 1 等待时间=T_1 * n + T_2 * (n-1)+...+ T_n * 1 等待时间=T1n+T2(n1)+...+Tn1
这就转化成了一个经典的问题排序不等式
T 1 、 T 2 、 . . . 、 T n T_1、T_2、...、T_n T1T2...Tn按从小到大的对应和n~1相乘
然后看鸡能查到谁的前面


#include <bits/stdc++.h> 
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define ls p<<1
#define rs p<<1|1
#define PII pair<int, int>
#define pll pair<long long, long long>
#define ll long long
#define ull unsigned long long
#define db double
#define endl '\n'
#define debug(a) cout<<#a<<"="<<a<<endl;
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define INF 0x3f3f3f3f 
#define x first
#define y second

using namespace std;

const int N=1e5+10,mod=1e9+7;
int n,q,tc;
int t[N],d[N];

//x为鸡插队的时间
bool check(int x,int m)
{
	//找到受鸡插队影响的第一个位置 
	int l=1,r=n;
	int k=upper_bound(d+1,d+1+n,x)-d;
	int sum=(n-k+1)*tc;
	return sum<=m;
}

void solve()
{
	cin>>n>>q>>tc;
	rep(i,1,n)	cin>>t[i];
	sort(t+1,t+1+n);
	int sm=0;
	//计算每个人不满意度,sm就是没插队的最小不满意度 
	//di也是每个人完成工作的时间 
	rep(i,1,n)	d[i]=d[i-1]+t[i],sm+=d[i];
	
	rep(i,1,q)
	{
		int m;cin>>m;
		int l=0,r=d[n];
		while(l<r)
		{
			int mid=(l+r)>>1;
			if(check(mid,m))	r=mid;
			else	l=mid+1;
		}
		cout<<l+tc<<endl;
	}
}

signed main()
{
	IOS	
//   	freopen("1.in", "r", stdin);
  	int _;
//	cin>>_;
//	while(_--)
	solve();
	return 0;
}

D

代码是参考jls的,写的真的很优雅
思路:
这里有一个小 t r i c k trick trick,数相乘的话会很大,而 M M M只有 1 e 9 1e9 1e9, 2 3 0 2^30 230就会到达 1 e 9 1e9 1e9
也就是说,不为0的数相乘很快会超范围有很多不合法的。
对于相同的数,平移的话是都是一样的。
我们考虑不同的数有多少个。
不同的数最多有20个,20个的话就会相乘就会超范围。
然后里面就暴力去瞎搞就行

#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define _for(i,a,b) for(int i=(a); i<(b); ++i)
#define pii pair<int, int>
#define pdd pair<double,double>
#define ll long long
#define db double
#define endl '\n'
#define x first
#define y second
#define pb push_back
#define vi vector<int>

using namespace std;
const int maxn=1e5+10,mod=1e9+7,K=4e4,inf=1e9;


void solve() {
	int n,Q;
	cin>>n>>Q;
	map<int,int>cnt;
	rep(i,1,n) {
		int a;
		cin>>a;
		cnt[a]+=1;
	}
	set<int>s{0};
	//只有当不同的数为20个以内时乘起来才不会超出范围
	if(cnt.size()<=20) {
		//将map中的内容复制到vector中
		vector<pii>a(cnt.begin(),cnt.end());
		int n=a.size();
		int d=a[0].x-K;
		//枚举每一个数
		_for(i,0,n) {
			//枚举每一个数进行两种操作的总的变化量
			for(d=max(d,a[i].x-K); d<=a[i].first+K;d++) {
				//从前往后算一遍答案				
				int res=1;
				_for(j,0,n) {
					//看一下这个数会变成的数,v
					int v=a[j].x-d;
					//1的话对res没有影响
					if(v==1) {
						continue;
					}
					//-1的话看值为这个数的有多少个
					if(v==-1) {
						if(a[j].y%2==1) {
							res*=-1;
						}
						continue;
					}
					//两个都不是的话就把,所有值为这个数的都乘上去
					_for(c,0,a[j].y) {
						res*=v;
						//中间溢出范围直接退出
						if(abs(res)>inf) {
							break;
						}
					}
					//溢出的话直接退出
					if(abs(res)>inf) {
						break;
					}
				}
				//满足的话用set存一下,供查询
				if(abs(res)<=inf) {
					s.insert(res);
				}
			}
		}
	}
	while(Q--) {
		int M;
		cin>>M;
		if(s.count(M)) {
			cout<<"Yes"<<endl;
		} else {
			cout<<"No"<<endl;
		}
	}
}

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	int _;
//	cin>>_;
//	while(_--)
	solve();
	return 0;
}

E

e题看到数据范围n和m都很小,dfs,对于每场比赛,ab两位选手,考虑每场比赛。
ab两位选手

  1. a胜b败
  2. a败b胜
  3. ab平局
#include <bits/stdc++.h> 
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define ls p<<1
#define rs p<<1|1
#define PII pair<int, int>
#define pll pair<long long, long long>
#define ll long long
#define ull unsigned long long
#define db double
#define endl '\n'
#define debug(a) cout<<#a<<"="<<a<<endl;
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define INF 0x3f3f3f3f 
#define x first
#define y second

using namespace std;

const int N=20,mod=1e9+7;
int n,m,ans;
struct node
{
	int val,idx;
	bool operator <(const node t)
	{
		return val>t.val;
	}
}a[N],b[N];

PII op[N];

void dfs(int u)
{
	if(u==m+1)
	{
		memcpy(b,a,sizeof a);
		sort(b+1,b+1+n);
//		cout<<"AAAAAA"<<endl;
//		rep(i,1,n)	cout<<a[i].idx<<' '<<a[i].val<<endl;
		int k=0;
		rep(i,1,n)	if(b[i].idx==1)	k=i;
		ans=min(ans,k);
		return;
	}
	int x=find(op[u].x),y=find(op[u].y);
	//x胜
	a[x].val+=3;
	dfs(u+1); 
	a[x].val-=3;
	
	//y胜
	a[y].val+=3;
	dfs(u+1); 
	a[y].val-=3;
	
	//平局
	a[x].val+=1;
	a[y].val+=1;
	dfs(u+1); 
	a[x].val-=1;
	a[y].val-=1;
}

void solve()
{
	cin>>n>>m;
	ans=n;
	rep(i,1,n)
	{
		int x;cin>>x;
		a[i]={x,i};
	}
	int k=0;
	rep(i,1,m)
	{
		int x,y;cin>>x>>y;
		if(x>y)	swap(x,y);
		op[++k]={x,y};
	}
	dfs(1);
	cout<<ans<<endl;
    return;
}

signed main()
{
	IOS	
//  	freopen("1.in", "r", stdin);
  	int _;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

F

考的是知识点 第二类斯特林数
从题目还是比较容易看出来这是一道第二类斯特林数的题目的,直接从前往后求一遍通项公式。
需要补一下组合数学的知识
d7039fd6bc9ff6fe6361180a79f2f5b.jpg
image

#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define pdd pair<double,double>
#define ll long long
#define db double
#define endl '\n'
#define x first
#define y second
#define pb push_back
#define vi vector<int>

using namespace std;
const int maxn=1e6+10,mod=1e9+7;

int ksm(int a,int b, int p){
	int res=1;
	while(b){
		if(b&1)	res=res*a%p;
		a=a*a%p;
		b>>=1;	
	}
	return res;
}
int fac[maxn],invfac[maxn];
void solve() {
	int n,m;
	cin>>n>>m;
// 	vi fac(n+1),invfac(n+1);
	fac[0]=invfac[0]=1;
	rep(i,1,maxn){
		fac[i]=fac[i-1]*i%mod;
		invfac[i]=ksm(fac[i],mod-2,mod);
	}      
	int ans=0;
	rep(i,0,m){
		ans+=((m-i)&1?-1:1)*ksm(i,n,mod)%mod*invfac[i]%mod*invfac[m-i]%mod;
        ans%=mod;
	}
	cout<<(ans+mod)%mod<<endl;
}

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	int _;
//	cin>>_;
//	while(_--)
	solve();
	return 0;
}

G

前缀和,先对优惠卷按价格排序,然后根据优惠卷可叠加,我们可以知道只要优惠的钱+m>=商品原价就可以更新答案。

#include <bits/stdc++.h> 
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define ls p<<1
#define rs p<<1|1
#define PII pair<int, int>
#define pll pair<long long, long long>
#define ll long long
#define ull unsigned long long
#define db double
#define endl '\n'
#define debug(a) cout<<#a<<"="<<a<<endl;
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define INF 0x3f3f3f3f 
#define x first
#define y second

using namespace std;

const int N=1e5+10,mod=1e9+7;
int n,m;
struct node
{
	int x,y;
	bool operator <(const node t)
	{
		return x<t.x;	
	} 
}a[N];

void solve()
{
	cin>>n>>m;
	rep(i,1,n)	cin>>a[i].x>>a[i].y;
	sort(a+1,a+1+n);
	int ans=0,sum=0;
	rep(i,1,n)
	{
		sum+=a[i].y;
		if(sum+m>=a[i].x)
		{
			ans=max(ans,sum+m);
		}
	}
	if(!ans)	cout<<m<<endl;
	else	cout<<ans<<endl;
}

signed main()
{
	IOS	
//  	freopen("1.in", "r", stdin);
  	int _;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

H

位运算贪心
涉及到位运算的题一定要把数字当成二进制串看
并且不存在进位意味着–位和位之间是独立的
一般都是贪心的考虑每一位。

对于m我们设第x位为1,设选中的物品与起来为sum,如果sum的第x位为0,那么第x位之后所有的位都是任意的

  • 枚举第x位
  • 选择物品的第x位是0
  • 选择物品的高位应该是m高位的子集
  • 低位任意

#include <bits/stdc++.h> 
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define pll pair<long long, long long>
#define ll long long
#define ull unsigned long long
#define db double
#define endl '\n'
#define x first
#define y second
#define pb push_back

using namespace std;

void solve()
{
	int n,m;cin>>n>>m;
	vector<int>v(n+1),w(n+1);
	rep(i,1,n)	cin>>v[i]>>w[i];
	
	int ans=0;
	auto check=[&](int s)
	{
		int res=0;
		rep(i,1,n)
		{
            //==的优先级高于&
			if((s&w[i])==w[i])
			{
				res+=v[i];
			}
		}
		ans=max(ans,res);
	};
	
	check(m);
	fep(i,29,0)
	{
		if((m>>i)&1)
		{
			check(m^(1<<i)|((1<<i)-1));	
		}
	}

	cout<<ans<<endl;
	return;
}
signed main()
{
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
//   	freopen("1.in", "r", stdin);
  	int _;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

I


两种方式的区别在于半径。
我们可以模拟题目中的过程然后在本地多跑几组数据看看r的均值有什么规律
技巧就是打表找规律


#include <bits/stdc++.h> 
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define pii pair<int, int>
#define pll pair<long long, long long>
#define ll long long
#define ull unsigned long long
#define db double
#define endl '\n'
#define x first
#define y second
#define pb push_back

using namespace std;
const int N=2010;

int mod=1e9+7;

void solve()
{
	int n;cin>>n;
	int s=0;
	rep(i,1,n)
	{
		int x,y,r;cin>>x>>y>>r;
		s+=r;
	}
	if(s/n<20.0)	cout<<"bit-noob"<<endl;
	else	cout<<"buaa-noob"<<endl;
	return;
}
signed main()
{
	ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
//   	freopen("1.in", "r", stdin);
  	int _;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

J

#include <bits/stdc++.h>
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define _for(i,a,b) for(int i=(a); i<(b); ++i)
#define pii pair<int, int>
#define pdd pair<double,double>
#define ll long long
#define db double
#define endl '\n'
#define x first
#define y second
#define pb push_back
#define vi vector<int>

using namespace std;
const int maxn=1e5+10,mod=1e9+7,K=4e4,inf=1e9;
int a[maxn];
int n,x,y;

bool check(int tar) {
	set<int>S;
	if(abs(x-y)<=tar)	S.insert(y);
	int lst=x;
	rep(i,1,n){
		if(S.size()&&abs(a[i]-lst)<=tar){
			S.insert(lst);
		}
		while(S.size()&&abs(*S.begin()-a[i])>tar)	S.erase(*S.begin());
		while(S.size()&&abs(*S.rbegin()-a[i])>tar)	S.erase(*S.rbegin());
		lst=a[i];
	}
	return S.size();
}

void solve() {
	cin>>n>>x>>y;
	rep(i,1,n) {
		cin>>a[i];
	}
	int l=0,r=1e9;
	while(l<r) {
		int mid=(l+r)>>1;
		if(check(mid)) {
			r=mid;
		} else {
			l=mid+1;
		}
	}
	cout<<l<<endl;
}

signed main() {
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
//	freopen("1.in", "r", stdin);
	int _;
//	cin>>_;
//	while(_--)
	solve();
	return 0;
}


K

基环树

L


这道题应该是个签到题。主要是题面有点吓人。
直接考虑光源在最下面,这种情况地上的未被照射到的面积应该是最大的。
面积很好求,就是一个等腰梯形的面积。


#include <bits/stdc++.h> 
#define int long long
#define rep(i,a,b) for(int i = (a); i <= (b); ++i)
#define fep(i,a,b) for(int i = (a); i >= (b); --i)
#define ls p<<1
#define rs p<<1|1
#define PII pair<int, int>
#define pll pair<long long, long long>
#define ll long long
#define ull unsigned long long
#define db double
#define endl '\n'
#define debug(a) cout<<#a<<"="<<a<<endl;
#define IOS ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);
#define INF 0x3f3f3f3f 
#define x first
#define y second

using namespace std;

const int N=1e5+10,mod=1e9+7;
int n,q,tc;

void solve()
{
	int c,d,h,w;cin>>c>>d>>h>>w;
	db ans=1.0*(6*w)*c/2;
	printf("%.5lf\n",ans);
}
signed main()
{
// 	IOS	
//  	freopen("1.in", "r", stdin);
  	int _;
	cin>>_;
	while(_--)
	solve();
	return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

图片生成 Stable Diffusion Web 安装教程

一 Stable Diffusion Web介绍 1 什么是stable diffussion web &#xff1f; Stable Diffusion Web 是一个基于 Stable Diffusion 模型开发的图形用户界面&#xff08;GUI&#xff09;应用程序&#xff0c;它允许用户通过简单的网页交互方式来利用人工智能技术进行艺术创作和图像…

2024数字中国创新大赛·数据要素赛道“能源大数据应用赛”正式上线!参赛指南请查收

近日&#xff0c;由国网福建电力承办的2024数字中国创新大赛能源大数据应用赛正式上线发布。赛事按照数字中国建设、能源革命的战略要求&#xff0c;围绕能源数据要素x、能源数字技术、能源商业模式等热点设置赛题&#xff0c;诚邀社会各界为加快建成新型电力系统出谋划策&…

LVGL 环境搭建-基于WSL

背景说明 小白刚开始接触LVGL&#xff0c;前些日子狠心花198元入手了一块堪称LVGL 入门利器~HMI-Board 开发板&#xff0c;虽然有RT-Thread 集成好的LVGL 环境&#xff0c;只需要几个步骤就能成功把lvgl 的示例运行起来&#xff0c;对于爱折腾的我来说&#xff0c;过于简单也并…

亿道信息新品EM-T195轻薄型工业平板,隆重登场!

EM-T195是一款轻巧但坚固的平板电脑&#xff0c;仅 650克重、10.5mm毫米厚&#xff0c;即使没有额外的便携配件进行辅助&#xff0c;您也可以轻松将其长时间随身携带。耐用性外壳完全密封&#xff0c;防尘防潮&#xff1b;出色的坚固性和可靠性&#xff0c;使T195天生适合在苛刻…

Java技术发展历程中的六大春天:从Web开发到大数据战略

Java技术发展历程中的六大春天&#xff1a;从Web开发到大数据战略 Six Springs in the Development Journey of Java Technology: From Web Development to Big Data Strategy 自Java诞生以来&#xff0c;其发展历程中出现了多个关键的“春天”时刻&#xff0c;每一段历程都伴随…

使用Node.js开发一个文件上传功能

在现代 Web 应用程序开发中&#xff0c;文件上传是一个非常常见且重要的功能。今天我们将通过 Node.js 来开发一个简单而强大的文件上传功能。使用 Node.js 来处理文件上传可以带来许多好处&#xff0c;包括简单的代码实现、高效的性能和灵活的配置选项。 首先&#xff0c;我们…

springboot+vue+mysql+easyexcel实现文件导出+导出的excel单元格添加下拉列表

Excel导出 EasyExcel官方文档 官方文档本身写的非常详细&#xff0c;我就是根据官方文档内的写Excel里web中的写实现的导出 后端 对象 需要写一个实体类 其中涉及到一些用到的EasyExcel的注解 ColumnWidth(20) 列宽设为20&#xff0c;自定义的&#xff0c;放在实体类上面是…

Java玩转《啊哈算法》之模拟链表

人应该支配习惯&#xff0c;而绝不是让习惯支配人。一个人要是不能改掉坏习惯&#xff0c;那么他就一文不值。 目录 缘代码地址模拟链表创建遍历打印插入插入优化 完整代码 缘 各位小伙伴们好呀&#xff01;本人最近看了下《啊哈算法》&#xff0c;写的确实不错。 但稍显遗憾…

文生图项目总结

文生图 功能点 页面进来获取背景图url和图片宽高&#xff08;根据比例和手机屏幕处理过的宽高&#xff09;渲染图片&#xff08;背景图最后生成图片模糊&#xff0c;换成img展示解决&#xff09;添加多个文字&#xff0c;编辑文字内容&#xff0c;拖拽改变文字位置&#xff0c…

计算机网络:IP

引言&#xff1a; IP协议是互联网协议族中的核心协议之一&#xff0c;负责为数据包在网络中传输提供路由寻址。它定义了数据包如何在互联网上从源地址传输到目的地址的规则和流程。IP协议使得各种不同类型的网络设备能够相互通信&#xff0c;实现了全球范围内的信息交换。 目录…

HTML-基础标签

1. HTML初识 1.1 什么是HTML HTML&#xff08;英文Hyper Text Markup Language的缩写&#xff09;中文译为“超文本标签语言”&#xff0c;是用来描述网页的一种语言。所谓超文本&#xff0c;因为它可以加入图片、声音、动画、多媒体等内容&#xff0c;不仅如此&#xff0c;它还…

nginx---------------重写功能 防盗链 反向代理 (五)

一、重写功能 rewrite Nginx服务器利用 ngx_http_rewrite_module 模块解析和处理rewrite请求&#xff0c;此功能依靠 PCRE(perl compatible regular expression)&#xff0c;因此编译之前要安装PCRE库&#xff0c;rewrite是nginx服务器的重要功能之一&#xff0c;重写功能(…

数据结构(C语言)代码实现(九)——迷宫探路表达式求值

目录 参考资料 迷宫探路 顺序栈头文件SqStack.h 顺序栈函数实现SqStack.cpp 迷宫探路主函数 表达式求值 链式顺序栈头文件LinkStack.h 链式顺序栈函数实现LinkStack.cpp 表达式求值主函数 测试结果 参考资料 数据结构严蔚敏版 2021-9-22【数据结构/严蔚敏】【顺序…

Django学习笔记-django使用pandas将上传的数据存到MySQL

1.models中创建与excel表结构相同模型 2.模型映射 python manage.py makemigrations myapp01,python manage.py migrate 3.创建index,添加form,enctype使用multipart/form-data 4.urls中导入views,填写路由 5.views中创建index 6.如果为GET请求,直接返回index.html,如果为PO…

历史新知网:寄快递寄个电脑显示器要多少钱?

以下文字信息由&#xff08;新史知识网&#xff09;编辑整理发布。 让我们赶紧来看看吧&#xff01; 问题1&#xff1a;快递寄电脑显示器要多少钱&#xff1f; 此物有多重&#xff1f; 顺丰寄就可以了&#xff0c;但是必须是原包装的&#xff0c;不然不好寄。 问题2&#xff1…

阿里云中小企业扶持权益,助力企业开启智能时代创业新范式

在数字化浪潮的推动下&#xff0c;中小企业正面临着转型升级的重要关口。阿里云深知中小企业的挑战与机遇&#xff0c;特别推出了一系列中小企业扶持权益&#xff0c;旨在帮助企业以更低的成本、更高的效率拥抱云计算&#xff0c;开启智能时代创业的新范式。 一、企业上云权益…

光伏预测 | Matlab基于CNN-SE-Attention-ITCN的多特征变量光伏预测

光伏预测 | Matlab基于CNN-SE-Attention-ITCN的多特征变量光伏预测 目录 光伏预测 | Matlab基于CNN-SE-Attention-ITCN的多特征变量光伏预测预测效果基本描述模型简介程序设计参考资料 预测效果 基本描述 Matlab基于CNN-SE-Attention-ITCN的多特征变量光伏预测 运行环境: Matla…

【初中生讲机器学习】12. 似然函数和极大似然估计:原理、应用与代码实现

创建时间&#xff1a;2024-02-23 最后编辑时间&#xff1a;2024-02-24 作者&#xff1a;Geeker_LStar 你好呀~这里是 Geeker_LStar 的人工智能学习专栏&#xff0c;很高兴遇见你~ 我是 Geeker_LStar&#xff0c;一名初三学生&#xff0c;热爱计算机和数学&#xff0c;我们一起加…

Day04:APP架构小程序H5+Vue语言Web封装原生开发Flutter

目录 常见APP开发架构 APP-开发架构-原生态-IDEA APP-开发架构-Web封装-平台 APP-开发架构-H5&Vue-HBuilderX WX小程序-开发架构-Web封装-平台 WX小程序-开发架构-H5&Vue-HBuilderX 思维导图 章节知识点&#xff1a; 应用架构&#xff1a;Web/APP/云应用/三方服…

[CISCN 2019华东南]Web11

打开题目 看到xff就应该想到抓包 看回显也是127.0.0.1&#xff0c;我们盲猜是不是ssti模板注入 输入{{7*7}}显示49 可以看的出来flag在根目录下 输入{system(‘cat /flag’)} 得到flag 知识点&#xff1a; 漏洞确认 一般情况下输入{$smarty.version}就可以看到返回的smarty…