[2020-11-30 contest]数列(矩阵加速),秘密通道(dijkstra最短路)小X游世界树(换根dp),划分(数学)

文章目录

数列

a[1]=a[2]=a[3]=1 a[x]=a[x-3]+a[x-1] (x>3) 求 a 数列的第 n 项对 1000000007(10^9+7)取余的值。

输入格式
第一行一个整数 T,表示询问个数。 以下 T 行,每行一个正整数 n。

输出格式
每行输出一个非负整数表示答案。

样例
输入样例
3
6
8
10
输出样例
4
9
19
数据范围与提示
对于 30%的数据 n<=100; 对于 60%的数据 n<=2x107
对于 100%的数据 T<=100,n<=2x109

solution

一眼题,没得说
在这里插入图片描述

[a1,a2,a3]×[001100011]=[a2,a3,a4]\begin{bmatrix} a_1,a_2,a_3 \end{bmatrix}\times\begin{bmatrix} 0&0&1\\ 1&0&0\\ 0&1&1 \end{bmatrix}=\begin{bmatrix} a_2,a_3,a_4 \end{bmatrix}[a1,a2,a3]×010001101=[a2,a3,a4]

code

#include <cstdio>
#include <cstring>
#define mod 1000000007
#define ll long long
struct Matrix {ll c[4][4];Matrix() {memset( c, 0, sizeof( c ) );}Matrix operator * ( const Matrix &p ) {Matrix ans;for( int i = 1;i <= 3;i ++ )for( int j = 1;j <= 3;j ++ )for( int k = 1;k <= 3;k ++ )ans.c[i][k] = ( ans.c[i][k] + c[i][j] * p.c[j][k] % mod ) % mod;return ans;}}base, v, result;
int T, n;Matrix qkpow( Matrix x, int y ) {Matrix res;res.c[1][1] = res.c[2][2] = res.c[3][3] = 1;while( y ) {if( y & 1 ) res = res * x;x = x * x;y >>= 1;}return res;
}int main() {freopen( "seq.in", "r", stdin );freopen( "seq.out", "w", stdout );base.c[1][1] = base.c[1][2] = base.c[1][3] = 1;v.c[1][3] = v.c[2][1] = v.c[3][2] = v.c[3][3] = 1;scanf( "%d", &T );while( T -- ) {scanf( "%d", &n );if( n <= 3 ) {printf( "1\n" );continue;}result = base * qkpow( v, n - 3 );printf( "%lld\n", result.c[1][3] );}return 0;
}

秘密通道

有一副n×mn\times mn×m的地图,有n×mn\times mn×m块地,每块是下列四种中的一种: 墙:用#表示,墙有 4 个面,分别是前面,后面,左面,右面。 起点:用 C 表示,为主角的起点,是一片空地。 终点:用 F 表示,为主角的目的地,是一片空地。 空地:用 . 表示。 其中除了墙不能穿过,其他地方都能走。 主角有以下 3 种操作:

移动到相邻的前后左右的地方,花费一个单位时间。
向前后左右其中一个方向发射子弹,子弹沿直线穿过,打在最近的一堵墙的一面,然 后墙的这面就会形成一个开口通往秘密通道。同一时间最多只能有两个开口,若出现有 3 个 开口,出现时间最早的开口会立即消失。该操作不用时间。
可以从一个与开口相邻的空地跳进去,进入秘密通道,从另外一个开口正对的空地跳 出来。这个过程花费一个单位时间。 地图四周都是墙,问主角最少用多少时间从 C 走到 F。C 和 F 只会出现一次。
输入格式
第一行输入两个正整数 n,m。 接下来 n 行,每行 m 个字符描述地图。

输出格式
输出 1 个整数,表示最短时间完成路途。如果无解输出 nemoguce

样例
输入样例1
4 4

#.F#
#C.#

输出样例1
2
输入样例2
6 8
########
#.##…F#
#C.##…#
#…#…#
#…##
########
输出样例2
4
数据范围与提示
对于 50%的数据,4 ≤ 𝑛, 𝑚 ≤ 15。 对于 100%的数据,4 ≤ 𝑛, 𝑚 ≤ 500。

solution

两眼题
这种走迷宫条件反射就想上bfs,不过很明显⛏最短路
这道题还是很善良的,打枪是没有时间的,当然就算有也一样简单
但是考场上,我想错了,以为走到墙旁边的格子再打枪一定是最优的
然并卵👇
在这里插入图片描述
很明显,我首先就得往下打一枪,再往右走,打枪穿墙瞬移
于是我被卡了30′
在这里插入图片描述
所以,对于地图上的每一个点都有八条建边可能
四个方向相邻格子建边边权111
四个墙相邻格子建边均为四个方向上最近的墙的距离
n×mn\times mn×m个点,普通O(n2)dijkstraO(n^2)dijkstraO(n2)dijkstra整不动,就上堆优化
在这里插入图片描述

code

#include <queue>
#include <cstdio>
#include <cstring>
#include <iostream>
using namespace std;
#define maxn 505
struct node {int i, j, w;node(){}node( int I, int J, int W ) {i = I, j = J, w = W;}bool operator < ( const node &u ) const {return w > u.w;}
};
priority_queue < node > q;
int n, m;
char s[maxn][maxn];
bool vis[maxn][maxn];
int Up[maxn][maxn], Down[maxn][maxn], Left[maxn][maxn], Right[maxn][maxn];bool inside( int x, int y ) {if( x < 1 || x > n || y < 1 || y > m ) return 0;else return 1;
}void Push( int x, int y, int w ) {if( ! inside( x, y ) ) return;if( s[x][y] == '#' ) return;if( vis[x][y] ) return;q.push( node( x, y, w ) );
}void Dijkstra() {while( ! q.empty() ) {node u = q.top(); q.pop();int i = u.i, j = u.j, w = u.w;if( vis[i][j] ) continue;if( s[i][j] == 'F' ) {printf( "%d\n", w );return;}vis[i][j] = 1;Push( i - 1, j, w + 1 );Push( i + 1, j, w + 1 );Push( i, j - 1, w + 1 );Push( i, j + 1, w + 1 );int minn = min( min( i - Up[i][j], Down[i][j] - i ), min( j - Left[i][j], Right[i][j] - j ) );Push( Up[i][j] + 1, j, w + minn );Push( Down[i][j] - 1, j, w + minn );Push( i, Left[i][j] + 1, w + minn );Push( i, Right[i][j] - 1, w + minn );}printf( "nemoguce\n" );
}int main() {scanf( "%d %d", &n, &m );for( int i = 1;i <= n;i ++ ) {scanf( "%s", s[i] + 1 );for( int j = 1;j <= m;j ++ )if( s[i][j] == 'C' ) q.push( node( i, j, 0 ) );}for( int i = 1;i <= n;i ++ )for( int j = 1;j <= m;j ++ ) {if( s[i - 1][j] == '#' ) Up[i][j] = i - 1;else Up[i][j] = Up[i - 1][j];if( s[i][j - 1] == '#' ) Left[i][j] = j - 1;else Left[i][j] = Left[i][j - 1];}for( int i = n;i;i -- )for( int j = m;j;j -- ) {if( s[i + 1][j] == '#' ) Down[i][j] = i + 1;else Down[i][j] = Down[i + 1][j];if( s[i][j + 1] == '#' ) Right[i][j] = j + 1;else Right[i][j] = Right[i][j + 1];}Dijkstra();return 0;
}

小X游世界树

小 x 得到了一个(不可靠的)小道消息,传说中的神岛阿瓦隆在格陵兰海的某处,据说那 里埋藏着亚瑟王的宝藏,这引起了小 x 的好奇,但当他想前往阿瓦隆时发现那里只有圣诞节 时才能到达,然而现在已经春天了,不甘心的他将自己的目的地改成了世界树,他耗费了大 量的时间,终于将自己传送到了世界树下。世界树是一棵非常巨大的树,它有着许许多多的 枝条以及节点,每个节点上都有一个平台。好不容易来到传说中的世界树下,小 x 当然要爬 上去看看风景。小 x 每经过一条边都会耗费体力值。然而世界树之主想给他弄(gáo)些 (d ǐan)麻(shì)烦(qíng),于是他在每条边上都设了一个魔法阵,当小 x 踏上那条边时会 被传送回根节点,魔法阵只生效一次。这岂不是要累死小 x?幸运的是,每个平台上都有无 数个加速器,这些加速器可以让小 x 在当前节点所连的边上耗费的体力值减少,不同平台的 加速器性能不一定相同,但同一个平台的加速器性能绝对相同。世界树之主给了小 x 一次 “换根”的机会,他可以将世界树的任何一个节点变为根,但所有的边都不能改变。小 x 想 问你,将根换为哪个节点能使小 x 爬到世界树上的每个节点耗费的体力值和最少。默认编号 为 1 的点为初始根

输入格式
第一行一个数 n,表示有 n 个节点。 第二行 n 个数 ai,表示每个平台上的加速器的性能。 第三至 n+1 行,每行三个数 bi,ci,di 分别表示这条无向边的起点,终点与耗费的能量值。

输出格式
第一行一个数,表示要换成的节点,如果有多个点为根时耗费的体力值都最小,则输出 编号最小的那个。如果保持为 1 是最优的,就输出 1。 第二行一个数,表示最小耗费的体力值。

样例
输入样例
4
2 1 3 3
1 2 3
1 3 4
2 4 6
输出样例
1
9
数据范围与提示
如果以第一个点为根,则需要耗费 0(到 1)+1(到 2)+2(到 3)+6(到 4)=9 的能量值。 如果以第二个点为根,则需要耗费 2(到 1)+0(到 2)+4(到 3)+5(到 4)=11 的能量值。 如果以第三个点为根,则需要耗费 1(到 1)+2(到 2)+0(到 3)+7(到 4)=10 的能量值。 如果以第四个点为根,则需要耗费 5(到 1)+3(到 2)+7(到 3)+0(到 4)=15 的能量值。 很明显以第一个点为根是最优的。

对于 20%的数据:n<=100 对于 40%的数据:n<=1000 对于 60%的数据:n<=8000 对于 80%的数据:n<=100000 对于 100%的数据:0<n<=700000;ai<=1000;1<=bi,ci<=n;di<=1000。

solution

一眼题,没得跑,换根dp还是很裸的了
g[u]g[u]g[u]uuu子树内每个点到uuu所耗费的体力值之和
f[u]f[u]f[u]uuu子树外所有点到uuu所耗费的体力值之和
很明显👇
g[u]g[u]g[u]uuu儿子挂钩,需要从下往上更新
f[u]f[u]f[u]uuu祖先挂钩,需要从上往下更新
所以两个分开用dfsdfsdfs

然而我因为最后的极大值附小了,于是愉快地又爆掉了30′
在这里插入图片描述

code

#include <cstdio>
#include <vector>
using namespace std;
#define maxn 700005
#define ll long long
vector < pair < int, int > > G[maxn];
int n;
int a[maxn], siz[maxn];
ll f[maxn], g[maxn], ans[maxn];void dfs1( int u, int fa ) {siz[u] = 1;for( int i = 0;i < G[u].size();i ++ ) {int v = G[u][i].first, w = G[u][i].second;if( v == fa ) continue;dfs1( v, u );siz[u] += siz[v];g[u] += g[v] + 1ll * siz[v] * ( w - a[u] );}
}void dfs2( int u, int fa ) {for( int i = 0;i < G[u].size();i ++ ) {int v = G[u][i].first, w = G[u][i].second;if( v == fa ) continue;f[v] = f[u] + g[u] - g[v] - 1ll * siz[v] * ( w - a[u] ) + 1ll * ( n - siz[v] ) * ( w - a[v] );ans[v] = g[v] + f[v];dfs2( v, u );}
}int main() {scanf( "%d", &n );for( int i = 1;i <= n;i ++ )scanf( "%d", &a[i] );for( int i = 1, u, v, w;i < n;i ++ ) {scanf( "%d %d %d", &u, &v, &w );G[u].push_back( make_pair( v, w ) );G[v].push_back( make_pair( u, w ) );}dfs1( 1, 0 );dfs2( 1, 0 );ll result = 1ll << 60; int pos;ans[1] = g[1];for( int i = 1;i <= n;i ++ )if( ans[i] < result ) result = ans[i], pos = i;printf( "%d\n%lld", pos, result );return 0;
}

划分

有一个未知的序列 x,长度为 n。它的 K-划分序列 y 指的是每连续 K 个数的和得到划 分序列,y[1]=x[1]+x[2]+…+x[K],y[2]=x[K+1]+x[K+2]+…+x[K+K]…。 若 n 不被 K 整除,则 y[n/K+1]可以由少于 K 个数加起来。 比如 n=13,K=5,则 y[1]=x[1]+…+x[5],y[2]=x[6]+…+x[10],y[3]=x[11]+x[12]+ x[13]。若小 A 只确定 x 的 K[1]划分序列以及 K[2]划分序列…K[M]划分序列的值情况下, 问她可以确定 x 多少个元素的值。

输入格式
第一行输入两个正整数 n,M。 第二行输入 M 个正整数表示 K[1],K[2]…K[M]。

输出格式
输出 1 个整数,表示能确定的元素

样例
输入样例1
3 1
2
输出样例1
1
输入样例2
6 2
2 3
输出样例2
2
数据范围与提示
【样例解释】 【样例 1 解释】 小 A 知道 x 的 2-划分序列,即分别知道 x[1]+x[2],x[3]的值。 小 A 可以知道 x[3]的值。 【样例 2 解释】 小 A 知道 x 的 2-划分序列,即分别知道 x[1]+x[2],x[3]+x[4],x[5]+x[6] 的值。 小 A 知道 x 的 3-划分序列,即分别知道 x[1]+x[2]+x[3] ,x[4]+x[5]+x[6] 的值。 小 A 可以知道 x[3],x[4]的值,个数为 2. 【数据范围】 对于 20%的数据,3 ≤ 𝑁 ≤ 2000, 𝑀 ≤ 3。 对于 40%的数据,3 ≤ 𝑁 ≤ 5 ∗ 10^6。 对于 100%的数据,3 ≤ 𝑁 ≤ 10^9, 1 ≤ 𝑀 ≤ 10,2 ≤ 𝐾[𝑖] < 𝑁。

solution

一眼题
一眼做不出来的题
在这里插入图片描述
首先很明显可以发现,若要确定xxx,当且仅当我们知道Sx,Sx−1S_x,S_{x-1}Sx,Sx1
x=k1×a=k2×b+1=>k1×a−k2×b=1x=k_1\times a=k_2\times b+1\ =>\ k_1\times a-k_2\times b=1x=k1×a=k2×b+1 => k1×ak2×b=1

发现这个式子长得很像扩展欧几里得ax+by=1ax+by=1ax+by=1,当且仅当gcd(a,b)=1gcd(a,b)=1gcd(a,b)=1有解
可以搞可以搞可以搞

求出最小正整数解a1,b1a_1,b_1a1,b1
则通解aaaa1+p×b1,p∈Za_1+ p\times b_1,p∈Za1+p×b1,pZ
去解一个不等式p×b1×ki+a1∗b1≤np\times b_1\times k_i+a_1*b_1\le np×b1×ki+a1b1n

要是真这么简单就欧儿啦
我们不仅可以很明显的发现有解的条件是相差为111,也能很明显地发现我们会算重
就算发现不了样例也会告诉你血的教训
容斥就好了,可我容斥不行啊!!
在这里插入图片描述

我们设s1s_1s1表示所有aaa集合,s2s_2s2表示所有bbb的方程。
这样每一个kik_iki只会存在于s1,s2s_1,s_2s1,s2或者都不存在。
这样枚举的复杂度是O(3m)O(3^m)O(3m)
容斥系数就是(−1)∣A∣+∣B∣(−1)^{|A|+|B|}(1)A+B 推一推找找规律就知道了
在这里插入图片描述

这里涉及了同余方程的合并,就是他们的lcmlcmlcm

在这里插入图片描述

code

#include <cmath>
#include <cstdio>
#define int long long
#define maxm 15
#define maxn 60000
int n, m, ans;
int k[maxm], f[maxn];int gcd( int x, int y ) {if( ! y ) return x;else return gcd( y, x % y );
}int lcm( int x, int y ) {int d = gcd( x, y );return x / d * y;
}int exgcd( int a, int b, int &x, int &y ) {if( ! b ) {x = 1, y = 0;return a;}else {int d = exgcd( b, a % b, y, x );y -= x * ( a / b );return d;}
}int calc( int a, int b ) {int x, y;if( exgcd( a, b, x, y ) != 1 ) return 0;x = ( x % b + b ) % b;if( x * a > n ) return 0;else return ( n - x * a ) / ( a * b ) + 1;
}void dfs( int s1, int s2, int x, int t1, int t2 ) {if( s1 > n || s2 > n ) return;if( x > m ) {if( ! t1 || ! t2 ) return;ans += ( ( t1 + t2 ) & 1 ? -1 : 1 ) * calc( s1, s2 );return;}dfs( lcm( s1, k[x] ), s2, x + 1, t1 + 1, t2 );dfs( s1, lcm( s2, k[x] ), x + 1, t1, t2 + 1 );dfs( s1, s2, x + 1, t1, t2 );
}signed main() {scanf( "%lld %lld", &n, &m );for( int i = 1;i <= m;i ++ )scanf( "%lld", &k[i] );k[++ m] = n;dfs( 1, 1, 1, 0, 0 );printf( "%lld", ans );return 0;
} 

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

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

相关文章

Docker最全教程——数据库容器化之持久保存数据(十二)

上一节我们讲述了SQL Server容器化实践&#xff08;注意&#xff0c;SQL Server现在也支持跨平台&#xff09;&#xff0c;本节将讲述如何持久保存数据&#xff0c;并且接下来将逐步讲解其他数据库&#xff08;MySql、Redis、Mongodb等等&#xff09;的容器化实践&#xff0c;中…

【李超树】李超线段树维护凸包(凸壳) (例题:blue mary开公司+线段游戏+ZZH的旅行)

文章目录前言李超树引入(斜率优化)什么是李超树&#xff1f;李超树活着能干点什么&#xff1f;算法思想(使用手册&#xff1f;)插入查询模板判断是否覆盖(优不优)插入查询例题板题&#xff1a;BlueMary开公司分析code线段游戏分析code拓展——(动态开点李超树维护凸包)ZZH的旅行…

老牌开源Office操作组件NPOI现已支持.NET Core

昨天在微信群里听到老牌Excel开发利器NPOI的作者瞿总说4.6.1版本的NPOI已经支持.NET Standard 2.0了&#xff0c;这也就意味着你可以在.NET Core中使用NPOI了。作者&#xff1a;依乐祝原文地址 &#xff1a;https://www.cnblogs.com/yilezhu/p/10269281.html写在前面曾经的.NET…

.NET西安社区 [拥抱开源,又见 .NET] 第二次活动简报

「拥抱开源, 又见 .NET」随着 .NET Core的发布和开源&#xff0c;.NET又重新回到人们的视野。 .NET Core的下个3.0即将release&#xff0c;加入非常多的新功能&#xff0c;越来越拥抱变化&#xff0c;DevOps和Microservice的最佳实践已经在 .NET Core落地&#xff0c;比如 Ocel…

[dsu on tree]树上启发式合并总结(算法思想及模板附例题练习)

文章目录前言树上启发式合并引入算法思想时间复杂度模板练习例题&#xff1a;CF600E Lomsat gelralsolutioncodeCF208E Blood CousinssolutioncodeCF570D Tree RequestssolutioncodeCF1009F Dominant Indicessolutioncode前言 最近不是在⛏李超树嘛&#xff0c;然后就去玩了下…

领域驱动设计,让程序员心中有码(七)

领域驱动设计- 让程序员心中有码&#xff08;七&#xff09;-设计原则和设计模式&#xff0c;互联网开发者们共同的追求前言多年来&#xff0c;笔者一直从事传统软件企业的软件开发和项目管理工作。笔者发现在众多的传统软件企业中&#xff0c;评判优秀开发者的标准往往是技能的…

cf1504. Travelling Salesman Problem

cf1504. Travelling Salesman Problem 题意&#xff1a; n个城市&#xff0c;编号1~n&#xff0c;每个城市有美丽值a[i]&#xff0c;现在要从城市1出发&#xff0c;其他所有城市走一遍&#xff0c;最后回到城市1&#xff0c;城市i到j的花费为max(ci,aj-ai)&#xff0c;ci为第…

[NOIP-S 2020]游记(附考前注意事项)

呜呼起飞T1&#xff1a;排水系统T2&#xff1a;字符串匹配T3&#xff1a;移球游戏T4&#xff1a;微信步数总述考前注意事项T1&#xff1a;排水系统 嗯—— 怎么说呢&#xff1f;&#xff1f; 比赛开始后迅速通读三遍题 顶着第一题肯定是打卡题的心态 哪怕是恶心模拟也得上&…

程序猿修仙之路--数据结构之你是否真的懂数组?

数据结构但凡IT江湖侠士&#xff0c;算法与数据结构为必修之课。早有前辈已经明确指出&#xff1a;程序算法数据结构 。要想在之后的江湖历练中通关&#xff0c;数据结构必不可少。数据结构与算法相辅相成&#xff0c;亦是阴阳互补之法。开篇说道数组&#xff0c;几乎每个IT江…

Rolling The Polygon Gym - 102222B

Rolling The Polygon Gym - 102222B 题意&#xff1a; 给你一个多边形&#xff0c;给你内部一个点Q&#xff0c;多边形在平面上滚动一周&#xff08;当有一个边第二次触地滚动停止&#xff09;&#xff0c;问Q的轨迹长度 题解&#xff1a; 计算几何题目 自己一直不是很擅长…

Asp.Net Core 轻松学-经常使用异步的你,可能需要看看这个文章

前言事情的起因是由于一段简单的数据库连接代码引起&#xff0c;这段代码从语法上看&#xff0c;是没有任何问题&#xff1b;但是就是莫名其妙的报错了&#xff0c;这段代码极其简单&#xff0c;就是打开数据库连接&#xff0c;读取一条记录&#xff0c;然后立即更新到数据库中…

try.dot.net 的正确使用姿势

来源&#xff1a;https://www.cnblogs.com/7tiny/p/10277600.html【简介】微软官方前不久发布了 try.dot.net 这个有趣的网址&#xff0c;开始只是图个新鲜看了一下&#xff0c;后面通过自身实践过后&#xff0c;发现这着实算是个“有趣”的站点&#xff01;首先我们大概地列举…

A - TOYS POJ - 2318

A - TOYS POJ - 2318 题意&#xff1a; 一个盒子中有n个隔板&#xff0c;分出n1个空间&#xff08;从左往右空间的编号分别是0…n&#xff09;&#xff0c;&#xff08;隔板之间不会相交&#xff0c;且按照从左往右的顺序给出&#xff09;&#xff0c;现在给你m个坐标的物品&…

[BJOI2017]魔法咒语(AC自动机+DP+矩阵快速幂)

文章目录titlesolutioncodetitle solution 针对数据编程才是坠吊的&#xff01;&#xff01;&#xff01; 观察数据&#xff0c;发现分隔数据的LLL跨度过大&#xff0c;没有衔接——推测很有可能是分数据做法 ①&#xff1a;考虑L≤100L\le100L≤100的情况 可以暴力DPDPDP转移…

[国家集训队]middle(二分+主席树[中位数思维题])

文章目录点击查看solutioncode点击查看 solution 简单口胡一下就跑 考虑二分答案ansansans 区间[x1,x2],x1∈[a,b]&#xff0c;x2∈[c,d][x1,x2],x1∈[a,b]&#xff0c;x2∈[c,d][x1,x2],x1∈[a,b]&#xff0c;x2∈[c,d] 大于等于ansansans的设为111&#xff0c;小于ansans…

使用Roslyn脚本化C#代码,C#动态脚本实现方案

来源&#xff1a;https://www.cnblogs.com/7tiny/p/10279349.html【前言】Roslyn 是微软公司开源的 .NET 编译器。编译器支持 C# 和 Visual Basic 代码编译&#xff0c;并提供丰富的代码分析 API。Roslyn不仅仅可以直接编译输出&#xff0c;难能可贵的就是上述描述中的开放了编…

[构造训练]CF1227G Not Same,CF1375H Set Merging,CF1364E X-OR

文章目录T1&#xff1a;CF1227G Not SamesolutioncodeT2&#xff1a;CF1364E X-ORsolutioncodeT3&#xff1a;CF1375H Set Mergingsolutioncode~~脑子是个好东西&#xff0c;希望人人都有构造真的不是个东西&#xff0c;看了一天视频&#xff0c;没有一道题会做~~ T1&#xff…

asp.net core 环境(Development、Staging 、Production)

一.在asp.net core中使用多个环境ASP.NET Core 配置是基于运行时环境, 使用环境变量。ASP.NET Core 在应用启动时读取环境变量ASPNETCORE_ENVIRONMENT&#xff0c;并将该值存储在 IHostingEnvironment.EnvironmentName 中。ASPNETCORE_ENVIRONMENT 可设置为任意值&#xff0c;但…

ASP.NET Core 2.1 : 图解路由(2.1 or earler)

本文通过一张图来看一下路由的配置以及请求处理的机制。 一、概述路由主要有两个主要功能&#xff1a;将请求的URL与已定义的路由进行匹配&#xff0c;找到该URL对应的处理程序并传入该请求进行处理。根据已定义的路由生成URL这两个功能看起来这两个是相反的。A.路由的配置路由…

[数据结构专训][GXOI/GZOI2019]旧词,[hdu5118]GRE Words Once More!,[hdu6333]Problem B. Harvest of Apples

文章目录T1&#xff1a;[GXOI/GZOI2019]旧词solutioncodeT2&#xff1a;GRE Words Once More!solutioncodeT3&#xff1a;Problem B. Harvest of ApplessolutioncodeT1&#xff1a;[GXOI/GZOI2019]旧词 点击查看 solution 考虑k1k1k1的情况 由于dep[lca(x,y)]∣{z,zdep[lca(…