P3084 [USACO13OPEN]照片Photo

给出$m$个区间$[l_i,r_i]$覆盖$S=[1,n]$,试确定最大特殊点的数使得这每一个区间覆盖且仅覆盖一个特殊点。

如果无解,输出$-1$ 对于100%的数据$n\leq 2\times 10^5 , m\leq 10^5$,数据较弱。

Sol1 : 设$ w_i$ 表示$ [1,i] $特殊点数目,那么对于每个区间的约束,有且仅有$1$个就等价于$w_r-w_{l-1}=1$

我们考虑每一个点只可能是特殊点或不是特殊点,那么就是$0 \leq w_i - w_{i-1} \leq 1$

又上面的式子$w_r-w_{l-1}=1$也可以化成不等式来表示$1 \leq w_r-w_{l-1} \leq 1$

也就是$w_r - w_{l-1} \leq 1 , w_{l-1} -w_r \leq -1$ , 结合$w_{i-1} - w_i \leq 0$我们就可以跑差分约束系统了。

把$dist\{ i,i-1 \} =0 , dist\{l-1,r\}=1 ,dist\{r,l-1\}=-1$建图跑SPFA(注意判负环!!!)然后到时间输出-1弹出就可以啦。

复杂度$O($卡时间$)$

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<deque>
#define Endl endl;//qwq
using namespace std;
const int maxn=1e6;
int n,m,cnt=;
int head[maxn],vis[maxn],dis[maxn];
struct node
{
int nxt;
int to;
int w;
}edge[maxn];
void add(int x,int y,int z)
{
edge[cnt].to=y;edge[cnt].w=z;edge[cnt].nxt=head[x];head[x]=cnt++;
}
//int cn[maxn];
int l,r;
int tot=;
int spfa()
{
deque<int> q;//双端队列优化spfa
memset(dis,0x3f,sizeof(dis));
dis[]=;//从0开始的原因见下面
vis[]=;
q.push_back();
while(q.size())
{
int x=q.front();
q.pop_front();
vis[x]=;
for(int i=head[x];i;i=edge[i].nxt)
{
int y=edge[i].to,z=edge[i].w;
if(dis[y]>dis[x]+z)
{
dis[y]=dis[x]+z;
//cn[y]=cn[x]+1;
if(!vis[y])
{
if(++tot>) return -;//人要有点信仰,这是梦想spfa的核心部分
//if(cn[y]>n)return -1;这是正儿八经的判负环,请一定要学会
vis[y]=;
if(q.size()&&dis[y]>dis[q.front()])q.push_back(y);
else q.push_front(y);
}
}
}
}
return dis[n];
}
int main()
{
cin>>n>>m;
for(int i=;i<=m;i++)
{
cin>>l>>r;
add(l-,r,);
add(r,l-,-);
}
for(int i=;i<=n;i++)
add(i,i-,),add(i-,i,);//i-1可能为0,所以上面最短路要从0开始跑(前后呼应~~手动滑稽)
cout<<spfa()<<Endl;
return ;
}

P3084.cpp-某std

Sol2:作为一个不会差分约束的OIer,一个很显然的想法是线性序列上的Dp。

若不考虑-1的情况,这个Dp应该是可以求出结果的。

设$ f_i $ 表示到第$i$个点为止,且第$i$点为特殊点的最大方案数。

转移可以为$f_i = \max_{i=l_i}^{r_i} f_j + 1$

主要是求取值范围$l_i,r_i$,对于一条线段$[x,y]$把$l_{y+1} = max(l_{y+1},x) , r_y = min(r_y,x - 1)$

然后由于$l[]$前面比后面范围大,所以逐步紧缩,$l_i = max\{l_{i-1},l_i\}$

然后由于$r[]$后面比前面范围大,所以逐步紧缩,$r_i = min\{r_{i+1},r_i\}$

然后做一个dp就可以了(可以单调队列\线段树优化转移!!!)

复杂度$O(n log_2 n)/O(n)/O(nm)[玄学随机数据]$

# include <bits/stdc++.h>
# define int long long
using namespace std;
const int N=2e5+;
int l[N],r[N],f[N];
int n,m;
signed main()
{
scanf("%lld%lld",&n,&m);
for (int i=;i<=n+;i++) r[i]=i-;
for (int i=;i<=m;i++) {
int x,y; scanf("%lld%lld",&x,&y);
l[y+]=max(l[y+],x);
r[y]=min(r[y],x-);
}
for (int i=;i<=n+;i++) l[i]=max(l[i-],l[i]);
for (int i=n;i>=;i--) r[i]=min(r[i+],r[i]);
int ans=-;
for (int i=;i<=n;i++) {
bool st=false;
for (int j=l[i];j<=r[i];j++)
f[i]=max(f[i],f[j]+),st=true;
if (!st) f[i]=-;
ans=max(ans,f[i]);
}
printf("%lld\n",ans);
return ;
}

P3084-90pts(无优化)

# include <bits/stdc++.h>
# define int long long
using namespace std;
const int N=2e5+;
int n,m,l[N],r[N],f[N],q[N],ql,qr;
void add(int x) {
if (f[x]==-) return;
while (qr>=ql&&f[q[qr]]<=f[x]) qr--;
q[++qr]=x;
}
signed main()
{
scanf("%lld%lld",&n,&m);
for (int i=;i<=n+;i++) r[i]=i-,l[i]=-;
for (int i=;i<=m;i++) {
int x,y; scanf("%lld%lld",&x,&y);
r[y]=min(r[y],x-);
l[y+]=max(l[y+],x-);
}
for (int i=;i<=n+;i++) l[i]=max(l[i],l[i-]);
for (int i=n;i>=;i--) r[i]=min(r[i],r[i+]); f[]=;
ql=,qr=;
for (int i=;i<=n+;i++) {
for (int j=r[i-];j<=r[i];j++)add(j);
while (qr>=ql&&q[ql]<=l[i]) ql++;
if (qr<ql) f[i]=-;
else f[i]=f[q[ql]]+;
}
printf("%lld\n",max(f[n+]-,-1ll));
return ;
}

P3084-100pts(单调队列)

P1967 [NOIP2013D1T3] 货车运输

一个$n$个点$m$个边可重边,可不连通的无向图,$q$个询问,$u -> v$所有路径上最小值最大是多少。

对于100%的数据$n\leq 10^5 , m\leq 5\times 10^5 , q\leq 3\times 10^4 $

Sol:一个比较简单的结论,在每一个连通块中所有点对走的路径必然是按照最大生成树上路径走的。

证明如下,设在一个连通块内$dist(u,v) < dist(u,t) + dist(t,v)$那么必然的,如果需要保证$(t,u,v)$连通我可以在之中随意删掉一条边同时加上一条边。

也就是说,构造断开$(u,v)$的这条边加上一条$(u,t)$或者$(v,t)$,这样明显最大生成树要更大,和已知的最大生成树相矛盾。

然后转化为树上问题,可以搞LCA了。

复杂度$O((q+n) {log_2}^2 n)$

# include <bits/stdc++.h>
# define int long long
using namespace std;
const int N=1e5+;
struct rec{
int pre,to,w;
}a[N<<];
int d[N][],g[N][],f[N],head[N],dep[N];
int tot,n,m;
bool vis[N];
struct Edge{ int u,v,w; };
vector<Edge>E;
bool cmp(Edge a,Edge b) { return a.w>b.w;}
inline int read()
{
int X=,w=; char c=;
while(c<''||c>'') {w|=c=='-';c=getchar();}
while(c>=''&&c<='') X=(X<<)+(X<<)+(c^),c=getchar();
return w?-X:X;
}
inline void write(int x)
{
if (x<) putchar('-'),x=-x;
if (x>) write(x/);
putchar(''+x%);
}
void adde(int u,int v,int w)
{
a[++tot].pre=head[u];
a[tot].to=v;
a[tot].w=w;
head[u]=tot;
}
int father(int x) {
if (f[x]==x) return x;
return f[x]=father(f[x]);
}
void kruskal()
{
sort(E.begin(),E.end(),cmp);
for (int i=;i<=n;i++) f[i]=i;
for (int i=;i<E.size();i++) {
int u=E[i].u,v=E[i].v,w=E[i].w;
int fu=father(u),fv=father(v);
if (fu==fv) continue;
adde(u,v,w); adde(v,u,w);
f[fu]=fv;
}
}
void dfs(int u,int fa)
{
vis[u]=true;
for (int i=head[u];i;i=a[i].pre) {
int v=a[i].to; if (v==fa) continue;
g[v][]=u;d[v][]=min(d[v][],a[i].w);dep[v]=dep[u]+;
dfs(v,u);
}
}
void init()
{
memset(d,0x3f,sizeof(d));
memset(vis,false,sizeof(vis));
for (int i=;i<=n;i++) if (!vis[i]) dfs(i,);
for (int i=;i<=;i++)
for (int j=;j<=n;j++)
g[j][i]=g[g[j][i-]][i-],
d[j][i]=min(d[j][i-],d[g[j][i-]][i-]);
}
int getans(int u,int v)
{
if (father(u)!=father(v)) return -;
int ret=0x3f3f3f3f;
if (dep[u]<dep[v]) swap(u,v);
for (int i=;i>=;i--)
if (dep[g[u][i]]>=dep[v]) ret=min(ret,d[u][i]),u=g[u][i];
if (u==v) return ret;
for (int i=;i>=;i--)
if (g[u][i]!=g[v][i]) {
ret=min(ret,d[u][i]);
ret=min(ret,d[v][i]);
u=g[u][i]; v=g[v][i];
}
ret=min(ret,d[u][]);
ret=min(ret,d[v][]);
return ret;
}
signed main()
{
n=read();m=read();
for (int i=;i<=m;i++) {
int u=read(),v=read(),w=read();
E.push_back((Edge){u,v,w});
}
kruskal();
init();
int T=read();
while (T--) {
int u=read(),v=read();
write(getans(u,v)); putchar('\n');
}
return ;
}

P1967.cpp

P3527 [POI2011]MET-Meteors

有$n$个国家,给定一个含有$m$个节点的环,$k$次事件,每次可以对$[l,r]$之间的节点区间加$d$,

询问至少几次事件后,$n$个国家权值经过多少次事件后获得权值不小于$p_i$。

对于100%的数据 $ n,m,k\leq 3 \times 10^5$ , 数据随机。

Sol :离线后整体二分,考虑队列$ [l,r] $中的所有点的答案都在$ [L,R] $之间。

如果当前答案$mid = \left \lfloor \frac{L+R}{2} \right \rfloor$  是不是可以,

如果可以就表示事件发生次数可以越少,否则,事件发生次数必须越多。

这里可以使用一个技巧,类似于莫队的指针now表示当前发生到次数多少了,如果不够往上加,否则往下减。

这样答案可以保证和$r-l$同级的复杂度。

然后使用树状数组维护区间修改,单点查询。

最后注意一下加起来爆longlong问题:一旦超过了$p_i$的权便不再累加。

# include <bits/stdc++.h>
# define int long long
# define inf (0x7f7f7f7f)
using namespace std;
const int N=3e5+;
struct rec{ int l,r,w;}a[N];
vector<int>Vd[N];
int n,m,T;
int p[N],q[N],t[N],ans[N],cnt[N],q1[N],q2[N];
inline int read()
{
int X=,w=; char c=;
while(c<''||c>'') {w|=c=='-';c=getchar();}
while(c>=''&&c<='') X=(X<<)+(X<<)+(c^),c=getchar();
return w?-X:X;
}
int lowbit(int x){return x&(-x);}
void update(int x,int d){for (;x<=m;x+=lowbit(x)) t[x]+=d;}
int query(int x) { int ret=; for (;x;x-=lowbit(x)) ret+=t[x]; return ret;}
void modify(int l,int r,int d){update(l,d); update(r+,-d);}
void change(int l,int r,int w)
{
if (l<=r) { modify(l,r,w);}
else { modify(l,m,w); modify(,r,w);}
}
int now=;
void solve(int l,int r,int L,int R)
{
if (l>r||L>R) return;
if (L==R) {
for (int i=l;i<=r;i++) ans[q[i]]=L;
return;
}
int mid=(L+R)>>,t1=,t2=;
while (now<mid) ++now,change(a[now].l,a[now].r,a[now].w);
while (now>mid) change(a[now].l,a[now].r,-a[now].w),--now;
for (int i=l;i<=r;i++) {
cnt[q[i]]=;
for (int j=;j<Vd[q[i]].size();j++) {
cnt[q[i]]+=query(Vd[q[i]][j]);
if (cnt[q[i]]>p[q[i]]) break;
}
}
for (int i=l;i<=r;i++) {
if (cnt[q[i]]>=p[q[i]]) q1[++t1]=q[i];
else q2[++t2]=q[i];
}
for (int i=;i<=t1;i++) q[l+i-]=q1[i];
for (int i=;i<=t2;i++) q[l+t1+i-]=q2[i];
solve(l,l+t1-,L,mid);
solve(l+t1,r,mid+,R);
}
signed main()
{
n=read();m=read();
for (int i=;i<=m;i++) Vd[read()].push_back(i);
for (int i=;i<=n;i++) p[i]=read(),q[i]=i;
T=read();
for (int i=;i<=T;i++) a[i].l=read(),a[i].r=read(),a[i].w=read();
T++; a[T].l=,a[T].r=m,a[T].w=inf;
solve(,n,,T);
for (int i=;i<=n;i++)
if (ans[i]==T) puts("NIE");
else printf("%lld\n",ans[i]);
return ;
}

P3527.cpp

P4390 [BOI2007]Mokia 摩基亚

给出一个$W \times W$的正方形,支持下面2个操作:

1. $ [x,y,A] $向$ (x,y) $这个格子单点$ +A $

2.$[x1,y1,x2,y2]$ 查询子矩阵权值和,保证 $ (x_1,y_1) $在$ (x_2,y_2) $非严格左下方

对于100%的数据$1 \leq W\leq 2\times 10^6,1 \leq 操作数\leq 2\times 10^5$

Sol : 考虑数据范围那么大二维权值线段树或者树状数组会MLE,所以考虑离线的方法。

直接cdq,考虑一个转化,就是每一个格子 (操作的时间,x坐标,y坐标)可以看做一个三元组,直接三维偏序就可以了。

然后对于操作2用容斥原理拆成$ Ans = (x_2,y_2)-(x_2,y_1-1)-(x_1-1,y_2)+(x_1-1,y_1-1)$

注意到这样数组的下标会为0,而lowbit(0) =0 所以整体右移,对应的w的值也需要+1.

# include <bits/stdc++.h>
using namespace std;
const int N=2e6+;
int tot,w;
int t[N],ans[N],tim[N];
bool mark[N];
int lowbit(int x) { return x&(-x);}
inline int read()
{
int X=,w=; char c=;
while(c<''||c>'') {w|=c=='-';c=getchar();}
while(c>=''&&c<='') X=(X<<)+(X<<)+(c^),c=getchar();
return w?-X:X;
}
void update(int x,int d){x++; for (;x<=w+;x+=lowbit(x)) t[x]+=d; }
int query(int x) { int ret=; x++; for (;x;x-=lowbit(x)) ret+=t[x]; return ret;}
struct node{ int op,id,x,y,w;}a[N],b[N];
struct aaa{ int x,d;}tmtm[N];
int cnt;
void cdq(int l,int r)
{
if (l==r) return;
int mid=(l+r)>>;
cdq(l,mid); cdq(mid+,r);
int t1=l,t2=mid+;cnt=;
for (int i=l;i<=r;i++) {
if ((t1<=mid&&a[t1].x<=a[t2].x)||t2>r) {
if (a[t1].op==) {
update(a[t1].y,a[t1].w);
cnt++; tmtm[cnt].x=a[t1].y,tmtm[cnt].d=a[t1].w;
}
b[i]=a[t1++];
} else {
if (a[t2].op==) ans[a[t2].id]+=query(a[t2].y);
b[i]=a[t2++];
}
}
for (int i=;i<=cnt;i++) update(tmtm[i].x,-tmtm[i].d);
for (int i=l;i<=r;i++) a[i]=b[i];
}
int main()
{
memset(mark,false,sizeof(mark));
while (true) {
int opt=read();
if (opt==) w=read();
else if (opt==) {
int x=read(),y=read(),w=read();
a[++tot]=(node) {,tot,x,y,w};
} else if (opt==) {
int x1=read(),y1=read(),x2=read(),y2=read();
mark[tot+]=true;
a[++tot]=(node) {,tot,x2,y2,};
a[++tot]=(node) {,tot,x2,y1-,};
a[++tot]=(node) {,tot,x1-,y2,};
a[++tot]=(node) {,tot,x1-,y1-,};
} else if (opt==) break;
}
cdq(,tot);
for (int i=;i<=tot;i++)
if (mark[i]) printf("%d\n",ans[i]-ans[i+]-ans[i+]+ans[i+]);
return ;
}

P4390.cpp

P1527 [国家集训队]矩阵乘法

给出一个$n \times n$的矩阵,支持询问子矩阵的$K$小值。

对于100%的数据$n\leq 500,Q\leq 60000$

Sol : 直接整体二分,注意二维树状数组的写法(不要像1维树状数组那么写,中间那一维需要重新开始)。

对于每一层二分,矩阵中的元素最多被插入到树状数组一次,也就是说最大复杂度是$O(n^2 {log_2}^2 n)$

对于每一层,每个询问最多只可能被处理一次,即复杂度$O(m  {log_2}^2 n)$

最后二分的总层数最大是$log_2 INF,INF=10^9$

离散化后,层数就是严格的$log_2 n$层了,

复杂度大概是$O((n^2 + Q){log_2}^3 n)$

// luogu-judger-enable-o2
# include <bits/stdc++.h>
using namespace std;
const int N=;
const int Q=;
struct rec{
int x1,y1,x2,y2,x,y,v,id,op,k;
}a[N*N+Q],q1[N*N+Q],q2[N*N+Q];
int c[N][N],ans[N*N+Q];
int n,m,tot;
# define lowbit(x) (x&(-x))
inline int read()
{
int X=,w=; char c=;
while(c<''||c>'') {w|=c=='-';c=getchar();}
while(c>=''&&c<='') X=(X<<)+(X<<)+(c^),c=getchar();
return w?-X:X;
}
inline void write(int x)
{
if (x>) write(x/);
putchar(''+x%);
}
void update(int x,int y,int d)
{
x++; y++;
for (int i=x;i<=n+;i+=lowbit(i))
for (int j=y;j<=n+;j+=lowbit(j))
c[i][j]+=d;
}
int query(int x,int y)
{
x++; y++; int ret=;
for (int i=x;i;i-=lowbit(i))
for (int j=y;j;j-=lowbit(j))
ret+=c[i][j];
return ret;
}
int SubSum(int x1,int y1,int x2,int y2)
{
return query(x2,y2)-query(x2,y1-)-query(x1-,y2)+query(x1-,y1-);
}
void solve(int l,int r,int L,int R)
{
if (l>r||L>R) return;
if (L==R) {
for (int i=l;i<=r;i++) ans[a[i].id]=L;
return;
}
int mid=(L+R)/,t1=,t2=;
for (int i=l;i<=r;i++) {
if (a[i].op==) {
if (a[i].v<=mid) update(a[i].x,a[i].y,),q1[++t1]=a[i];
else q2[++t2]=a[i];
} else if (a[i].op==) {
int t=SubSum(a[i].x1,a[i].y1,a[i].x2,a[i].y2);
if (t>=a[i].k) q1[++t1]=a[i];
else a[i].k-=t,q2[++t2]=a[i];
}
}
for (int i=;i<=t1;i++)
if (q1[i].op==) update(q1[i].x,q1[i].y,-);
for (int i=;i<=t1;i++) a[l+i-]=q1[i];
for (int i=;i<=t2;i++) a[l+t1+i-]=q2[i];
solve(l,l+t1-,L,mid);
solve(l+t1,r,mid+,R);
}
int main()
{
n=read();m=read();
for (int i=;i<=n;i++)
for (int j=;j<=n;j++) {
tot++;a[tot].op=;
a[tot].x=i,a[tot].y=j,a[tot].id=tot;
a[tot].v=read();
}
for (int i=;i<=m;i++) {
tot++; a[tot].id=tot; a[tot].op=;
a[tot].x1=read();a[tot].y1=read();a[tot].x2=read();
a[tot].y2=read();a[tot].k=read();
}
solve(,tot,,1e9);
for (int i=n*n+;i<=tot;i++)
write(ans[i]),putchar('\n');
return ;
}

P1527.cpp

一些简单题(2)(Source : NOIP历年试题+杂题)的更多相关文章

  1. 一些简单题(1)(Source : NOIP历年试题+杂题)

    最近也写了些许题目吧,还是写写博客,捋捋思路. P2216 [HAOI2007]理想的正方形 求一个$a \times b(a,b \leq 10^3)$的矩阵,求出一个$n \times n (n ...

  2. NOIP 历年试题大致考点总结

    总的来说,水平还不够-- 要努力了! NOIP2012 D1T1 模拟, 字符串 D1T2 贪心, 数学 (推导贪心策略), 高精度 D1T3 unsolved 开车旅行 倍增 D2T1 解线性模方程 ...

  3. noip历年试题

      noip2018 铺设道路 货币系统 赛道修建 一眼贪心.随便实现. 旅行 环套树枚举删除环上哪条边. 填数游戏 找规律,这谁会啊. 保卫王国 动态Dp,去问这位神仙.   noip2017 小凯 ...

  4. 2016 10 26考试 NOIP模拟赛 杂题

    Time 7:50 AM -> 11:15 AM 感觉今天考完后,我的内心是崩溃的 试题 考试包 T1: 首先看起来是个贪心,然而,然而,看到那个100%数据为n <= 2000整个人就虚 ...

  5. 贪心/构造/DP 杂题选做Ⅲ

    颓!颓!颓!(bushi 前传: 贪心/构造/DP 杂题选做 贪心/构造/DP 杂题选做Ⅱ 51. CF758E Broken Tree 讲个笑话,这道题是 11.3 模拟赛的 T2,模拟赛里那道题的 ...

  6. 剑指Offer——网易校招内推笔试题+模拟题知识点总结

    剑指Offer--网易校招内推笔试题+模拟题知识点总结 前言 2016.8.2 19:00网易校招内推笔试开始进行.前天晚上利用大约1小时时间完成了测评(这个必须做,关切到你能否参与面试).上午利用2 ...

  7. NOIP前的刷题记录

    因为这几天要加油,懒得每篇都来写题解了,就这里记录一下加上一句话题解好了 P4071 [SDOI2016]排列计数   组合数+错排 loj 6217 扑克牌 暴力背包 P2511 [HAOI2008 ...

  8. CCF认证历年试题

    CCF认证历年试题 不加索引整理会死星人orz 第一题: CCF201712-1 最小差值(100分) CCF201709-1 打酱油(100分) CCF201703-1 分蛋糕(100分) CCF2 ...

  9. 11.14 noip模拟试题

      题目名称 正确答案 序列问题 长途旅行 英文名称 answer sequence travel 输入文件名 answer.in sequence.in travel.in 输出文件名 answer ...

随机推荐

  1. Maximum XOR Sum 系列问题

    给定 $n$ 个两两不同的正整数 $a_1, a_2, \dots, a_n$,$a_i < 2^k$ . Problem 1(经典问题) 求 $a_i \xor a_j$ 的最大值,$ 1\l ...

  2. springmvc默认配置文件

    当在新建的maven web项目的web.xml中直接加入下面的<servlet>和<servlet-mapping>后,直接运行就会出现这个报错,意思就是找不到默认的spri ...

  3. idea中模块累积编写

    idea中新建Empty Project名为myproject,新建模块mymodel1 要想复制该模块,再在该模块的基础上开发怎么弄? 选中该模块右键Copy,在Project空白区域右键Paste ...

  4. Android layout_marginBottom无效

    layout_marginBottom属性无效的原因可能是顶部没有View组件(进行相对绘制)

  5. CVE-2018-19824漏洞学习

    简介 在Linux内核4.19.6之前,本地用户可以通过在Sound / USB /card.c.的usb_audio_probe中错误处理一个恶意USB声音设备(没有接口)来利用ALSA驱动程序中的 ...

  6. js设计模式--发布订阅模式

    前言 本系列文章主要根据<JavaScript设计模式与开发实践>整理而来,其中会加入了一些自己的思考.希望对大家有所帮助. 概念 发布-订阅模式又叫观察者模式,它定义对象间的一种一对多的 ...

  7. Maximum path CodeForces - 762D

    大意: 3*n矩阵, 求从(1,1)->(3,n)路径最大点权和. 核心观察是每个点回头一定不会超过1, 这是因为只有三行, 若回头两格一定是$9$个位置全走, 显然可以找到一种只会头一格的方案 ...

  8. spring boot 配置文件动态更新原理 以Nacos为例

    配置文件的动态更新 通常获取配置文件的方式 1, @Value 2. @ConfigurationProperties(Prefix) 如果是在运行时要动态更新的话, 第一种方式要在bean上加@Re ...

  9. pat (B)_1002

    1002 写出这个数 (20 分) 读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字. 输入格式: 每个测试输入包含 1 个测试用例,即给出自然数 n 的值.这里保证 n 小于 1 ...

  10. 8.支撑向量机SVM

    1.什么是SVM 下面我们就来介绍一些SVM(Support Vector Machine),首先什么是SVM,它是做什么的?SVM,中文名是支撑向量机,既可以解决分类问题,也可以解决回归问题,我们来 ...