[选拔赛1]花园(矩阵快速幂),JM的月亮神树(最短路),保护出题人(斜率优化)

多年不考试,一夜回到解放前

  • T1:花园
    • title
    • solution
    • code
  • T2:月亮神树
    • title
    • solution
    • code
  • T3:保护出题人
    • title
    • solution
    • code

T1:花园

title

小 L 有一座环形花园,沿花园的顺时针方向,他把各个花圃编号为 1∼n。花圃 1 和 n 是相邻的。
他的环形花园每天都会换一个新花样,但他的花园都不外乎一个规则:任意相邻 m 个花圃中都只有不超过 k 个 C 形的花圃,其余花圃均为 P 形的花圃。
例如,若 n=10 , m=5 , k=3 ,则
CCPCPPPPCC 是一种不符合规则的花圃。
CCPPPPCPCP 是一种符合规则的花圃。
请帮小 L 求出符合规则的花园种数对 109+7 取模的结果。
【输入格式】
只有一行三个整数,分别表示 n, m, k。
【输出格式】
输出一行一个整数表示答案。
【样例1】
garden.in garden.out
10 5 3 458
【样例2】
garden.in garden.out
6 2 1 18
【数据规模与约定】
对于 40% 的数据,保证 n≤20。
对于 80% 的数据,保证 n≤105。
对于 100% 的数据,保证 2≤n≤1015 ,2≤m≤min(n,5),1≤k≤m。

solution

不得不说一句,这个出题人是很有良心的
在这里插入图片描述


首先40分,直接暴力枚举出每一种花圃装修,然后进行checkcheckcheck


接着80分,看数据范围就可以明显被n,mn,mn,m的量级差给冲击到,mmm极其小,花圃不是CCC就是PPP
顺其自然的联想到状压dpdpdp求解,设dp[i][s]dp[i][s]dp[i][s]表示到第iii个花圃为止,最后连续的mmm个花圃状态为sss
dp[i][s]=∑s=0(1<<m)−1dp[i−1][s]dp[i][s]=\sum_{s=0}^{(1<<m)-1}dp[i-1][s]dp[i][s]=s=0(1<<m)1dp[i1][s]
当然这中间的转移需要判断一下sss中是否111过多(假设CCC为1)
两者是否有转移关联性,因为对于iii而言的前m−1m-1m1个花圃应该是与i−1i-1i1的后m−1m-1m1个花圃是一样的


最后100分
显而易见,我们需要消除掉nnn带来的巨大不可承受的时间复杂度,一般来说这么大的nnn
要么发现实现根本与nnn不挂钩(通过某些转移方程式),要么压缩成logloglog,亦或各种优化
在80分状压的时候,我画了个示意图,要求转移之间某些花圃必须一一对应,连线段之间的相同
让我的灵感一瞬闪过——矩阵快速幂!!!
在这里插入图片描述

只要两个之间可以转移我就置为111,最后把对角线的值加起来即可

code

#include <cstdio>
#include <cstring>
using namespace std;
#define mod 1000000007
#define ll long long
ll n, ans;
int m, k, cnt;
int t[205];bool count( int S ) {int tot = 0;while( S ) tot += S & 1, S >>= 1;return tot > k;
}bool comp( int s1, int s2 ) {for( int i = 0;i <= m - 2;i ++ ) {int x1 = ( s1 >> i ) & 1;int x2 = ( s2 >> ( i + 1 ) ) & 1;if( x1 != x2 ) return 1;}return 0;
}
struct Matrix {ll c[50][50];Matrix() {memset( c, 0, sizeof( c ) );}Matrix operator * ( const Matrix &p ) {Matrix res;for( int i = 1;i <= cnt;i ++ )for( int k = 1;k <= cnt;k ++ )for( int j = 1;j <= cnt;j ++ )res.c[i][j] = ( res.c[i][j] + c[i][k] * p.c[k][j] % mod ) % mod;return res;}}A, B;Matrix qkpow( Matrix x, ll y ) {Matrix res;for( int i = 1;i <= cnt;i ++ ) res.c[i][i] = 1;while( y ) {if( y & 1 ) res = res * x;x = x * x;y >>= 1;}return res;
}int main() {scanf( "%lld %d %d", &n, &m, &k );int S = 1 << m;for( int i = 0;i < S;i ++ )if( count( i ) ) continue;else t[++ cnt] = i;for( int i = 1;i <= cnt;i ++ )for( int j = 1;j <= cnt;j ++ )if( comp( t[i], t[j] ) ) continue;else A.c[i][j] = 1;B = qkpow( A, n );for( int i = 1;i <= cnt;i ++ )ans = ( ans + B.c[i][i] ) % mod;printf( "%lld", ans );return 0;
}

T2:月亮神树

title

JM今天过得实在是太惨了,他肥肠不爽,因此他搬出了他祖传的月亮神树。月亮神树的光辉照耀XJTUACM,每分钟都可以从所有被照射的人的手中夺取他1%的财产。JM觉得他很快就能赚得盆满钵满。然而月亮神树不久后突然失控了,不仅不把它夺来的财产交给JM,甚至开始夺取JM的财产,把JM气疯了,赶紧关闭了月亮神树。
因为月亮神树没运行多久就被关掉了,所以大家并没有损失多少,迫于月亮神树的威压,并没有人去理它。可是wzk昨天刚中了彩票,赚了100000000000¥,转眼就被剥夺了很多。因为wzk太rich了,所以他的损失格外大。为了夺回财产,无敌的wzk决定消灭月亮神树。
月亮神树的构造非常神奇,它的枝杈交错纵横,树上甚至存在环路,可以视为一个无向带权连通图的结构。月亮神树有一个核心节点,记为 s 。要想消灭月亮神树,必须找到月亮神树的严格最不科学生成树,这是它的弱点,这样就能将其一举摧毁。
定义:一个图 G 的不科学生成树是 G 的一棵子树,在这棵子树上,从核心节点 s 到任意一个节点 u 的最短路径长度,和在原图上是等长的。其中节点 s 是月亮神树的核心节点。
定义:一个图 G 的最不科学生成树是 G 的所有不科学生成树中,边权和最小的一棵树。
定义:一个图 G 的严格最不科学生成树是 G 的所有最不科学生成树中,有序边序列的字典序最小的一棵树。
定义:一个图 G 的有序边序列是指,将图上所有边按编号从小到大排序后得到的编号序列。当然,子图子树也适用。
现在给定月亮神树,即给定一个 n 个点 m 条边的无向带权连通图,点的编号从1到n,边的编号从1到m,给定核心节点的编号 s ,求其严格最不科学生成树。

【输入格式】
第一行三个正整数 n,m,s 。
接下来 m 行,第 i 行三个正整数 u,v,w ,表示编号为 i 的边。
输入保证图是连通的,保证图上不含重边和自环。。
【输出格式】
第一行两个正整数 cnt 和 sum ,用空格隔开,其中 cnt 表示严格最不科学生成树的边的个数, sum 表示严格最不科学生成树的边权和。
接下来一行 cnt 个正整数,用空格隔开,为树上所有边的编号,按编号从小到大输出。
【样例1】
moontree.in moontree.out
3 3 3
1 2 1
2 3 1
1 3 2 2 2
1 2
【样例2】
moontree.in moontree.out
4 4 4
2 3 1
1 2 1
3 4 1
4 1 2 3 4
1 3 4
【数据规模与约定】
对于25%的数据, 1≤n,m≤10 。
另有25%的数据, 1≤n,m≤100 。
对于100%的数据, 1≤n,m≤3*105 ,1≤wi≤109 。

solution

老师说这道题最水,可我这道题的分最少
在这里插入图片描述
听完题解后觉得——确实很水
堆优化dijkstradijkstradijkstra时间复杂度O(nlogn)O(nlogn)O(nlogn)凸(艹皿艹 )!!!考试时我就想着先求出最短路,但我想着dijkstradijkstradijkstra时间复杂度不是O(n2)O(n^2)O(n2)唛,我连堆优化写法都想好了!!但是我败在了时间复杂度上面,我就没敲,靠!!一直写的这种,我竟不知是堆优化,鸭血!!!


首先跑出每个点距离超级源点的最短路,然后思考对于每个点可能存在不止一条最短路
此时就要保证权值最小,权值最小的保证下又要编号最小
所以当同时多条最短路出现时,取权值最小,更新编号数组
权值一样时,选编号更小者即可
在这里插入图片描述


code

#include <queue>
#include <cstdio>
#include <vector>
#include <cstring>
#include <algorithm>
using namespace std;
#define ll long long
#define MAXN 300005
struct Gragh {int v, id;ll w;Gragh(){}Gragh( int V, ll W, int ID ) {v = V, w = W, id = ID;}
};
struct node {int v;ll w;node(){}node( int V, ll W ) {v = V, w = W;}bool operator < ( const node &t ) const {return w > t.w;}
};
struct edge {int u, v, id;ll w;edge(){}edge( int U, int V, ll W, int ID ) {u = U, v = V, w = W, id = ID;}
}E[MAXN];
priority_queue < node > q;
vector < Gragh > G[MAXN];
int n, m, s, tot, cnt;
ll ans;
int flag[MAXN];
ll dis[MAXN];
bool vis[MAXN], used[MAXN];void dijkstra() {memset( dis, 0x3f, sizeof( dis ) );dis[s] = 0;q.push( node( s, 0 ) );while( ! q.empty() ) {int u = q.top().v; q.pop();if( vis[u] ) continue;vis[u] = 1;for( int i = 0;i < G[u].size();i ++ ) {int v = G[u][i].v, w = G[u][i].w, id = G[u][i].id;if( dis[v] > dis[u] + w ) {dis[v] = dis[u] + w;q.push( node( v, dis[v] ) );flag[v] = id;}else if( dis[v] == dis[u] + w ) {if( w < E[flag[v]].w ) flag[v] = id;else if( w == E[flag[v]].w && id < E[flag[v]].id )flag[v] = id;}}}
}int main() {scanf( "%d %d %d", &n, &m, &s );for( int i = 1;i <= m;i ++ ) {int u, v; ll w;scanf( "%d %d %lld", &u, &v, &w );G[u].push_back( Gragh( v, w, i ) );G[v].push_back( Gragh( u, w, i ) );E[i] = edge( u, v, w, i );}dijkstra();for( int i = 1;i <= n;i ++ )if( flag[i] ) {++ tot, ans += E[flag[i]].w;used[flag[i]] = 1;}printf( "%d %lld\n", tot, ans );for( int i = 1;i <= m;i ++ )if( used[i] ) printf( "%d ", i );return 0;
}

T3:保护出题人

title

出题人铭铭认为给 SDOI2012 出题太可怕了,因为总要被骂,于是他又给 SDOI2013 出题了。
参加 SDOI2012 的小朋友们释放出大量的僵尸,企图攻击铭铭的家。而你作为 SDOI2013的参赛者,你需要保护出题人铭铭。
僵尸从唯一一条笔直道路接近,你们需要在铭铭的房门前放置植物攻击僵尸,避免僵尸碰到房子。第一关,一只血量为 a1 点的僵尸从距离房子 x1 米处匀速接近,你们放置了攻击力为 y1点/秒的植物进行防御;第二关,在上一关基础上,僵尸队列排头增加一只血量为 a2 点的僵尸,与后一只僵尸距离 d 米,从距离房子 x2 米处匀速接近,你们重新放置攻击力为y2 点/秒的植物;……;第 n 关,僵尸队列共有 n 只僵尸,相邻两只僵尸距离 d 米,排头僵尸血量为 an 点,排第二的僵尸血量 an-1 ,以此类推,排头僵尸从距离房子 xn 米处匀速接近,其余僵尸跟随排头同时接近,你们重新放置攻击力为 yn 点/秒的植物。
每只僵尸直线移动速度均为 1 米/秒,由于植物射击速度远大于僵尸移动速度,可忽略植物子弹在空中的时间。所有僵尸同时出现并接近,因此当一只僵尸死亡后,下一只僵尸立刻开始受到植物子弹的伤害。
游戏得分取决于你们放置的植物攻击力的总和,和越小分数越高,为了追求分数上界,你们每关都要放置攻击力尽量小的植物。
作为 SDOI2013 的参赛选手,你们能保护出题人么?
【输入格式】
第一行两个空格隔开的正整数 n 和 d,分别表示关数和相邻僵尸间的距离。
接下来 n 行每行两个空格隔开的正整数,第 i + 1 行为 ai和 xi,分别表示相比上一关在僵尸队列排头增加血量为 ai 点的僵尸,排头僵尸从距离房子 xi 米处开始接近。
【输出格式】
一个数,n 关植物攻击力的最小总和 ,保留到整数。

【样例1】
protect.in protect.out
5 2
3 3
1 1
10 8
4 8
2 3 7

【样例1 说明】
第一关:距离房子 3 米处有一只血量 3 点的僵尸,植物最小攻击力为 1.00000;
第二关:距离房子 1 米处有一只血量 1 点的僵尸、3 米处有血量 3 点的僵尸,植物最小攻击力为 1.33333;
第三关:距离房子 8 米处有一只血量 10 点的僵尸、10 米处有血量 1 点的僵尸、12 米处有血量 3 点的僵尸,植物最小攻击力为 1.25000;
第四关:距离房子 8 米处有一只血量 4 点的僵尸、10 米处有血量 10 点的僵尸、12 米处有血量 1 点的僵尸、14 米处有血量 3 点的僵尸,植物最小攻击力为 1.40000;
第五关:距离房子 3 米处有一只血量 2 点的僵尸、5 米处有血量 4 点的僵尸、7 米处有血量 10 点的僵尸、9 米处有血量 1 点的僵尸、11 米处有血量 3 点的僵尸,植物最小攻击力为 2.28571。
【数据规模与约定】
对于 30%的数据,n≤103 。
对于 50%的数据,n≤104 。
对于 70%的数据,1≤n≤105 ,1≤d≤106 ,1≤x≤106 ,1≤a≤106 。
对于 100%的数据, 1≤n≤105 ,1≤d≤1012 ,1≤x≤1012 ,1≤a≤1012 。

solution

此题的x,ax,ax,a我们可以抽象在二维平面上,就很想我们做的三分灯泡模型↓↓
在这里插入图片描述dp[i][j]dp[i][j]dp[i][j]表示消灭第iii关卡前i−ji-jij个僵尸所需要的攻击力
为了保证自己不被吃掉,我们就要求第iii关卡的maxdp[i][j]max{dp[i][j]}maxdp[i][j]
对于jjj而言,攻击力要求为(ai+ai−1+...+aj)/(xi+d∗(i−j))(a_i+a_{i-1}+...+a_j)/(x_i+d*(i-j))(ai+ai1+...+aj)/(xi+d(ij))
对于另一个kkk而言,假设j<kj<kj<k,则攻击力要求为
(ai+ai−1+...aj+...ak)/(xi+d∗(i−j+j−k))(a_i+a_{i-1}+...a_j+...a_k)/(x_i+d*(i-j+j-k))(ai+ai1+...aj+...ak)/(xi+d(ij+jk))
A=ai+ai−1+...+aj,B=xi+d∗(i−j)A=a_i+a_{i-1}+...+a_j,B=x_i+d*(i-j)A=ai+ai1+...+aj,B=xi+d(ij)
则两个式子分别为
A/B,(A+aj−1+...+ak)/(B+d∗(j−k))A/B,(A+a_{j-1}+...+a_k)/(B+d*(j-k))A/B,(A+aj1+...+ak)/(B+d(jk))
交叉相成
A∗B+A∗d∗(j−k),A∗B+B∗(aj−1+...+ak)A*B+A*d*(j-k),A*B+B*(a_{j-1}+...+a_k)AB+Ad(jk),AB+B(aj1+...+ak)
相抵消
A∗d∗(j−k),B∗(aj−1+...ak)A*d*(j-k),B*(a_{j-1}+...a_k)Ad(jk),B(aj1+...ak)
在转化
A/B,(aj−1+...+ak)/(d∗(j−k))A/B,(a_{j-1}+...+a_k)/(d*(j-k))A/B,(aj1+...+ak)/(d(jk))
最后推出我们想要的方程式
yi​=(1≤j≤i)max​{(sumi​−sumj−1​)/(xi​+d×(i−j)}y_i​=(1≤j≤i)\ \ max​\{(sum_i​−sum_{j−1}​)/(x_i​+d×(i−j)\}yi=(1ji)  max{(sumisumj1)/(xi+d×(ij)}
类似于斜率优化一样去维护一个下凸包,然后三分找最大斜率即可
在这里插入图片描述

code

#include <cstdio>
#include <iostream>
using namespace std;
#define MAXN 100005
int n, top;
double ans;
long long d;
int st[MAXN];
long long x[MAXN], a[MAXN], sum[MAXN];double calc1( int i, int j ) {return 1.0 * ( sum[i - 1] - sum[j - 1] ) / ( d * ( i - j ) );
}double calc2( int i, int j ) {return 1.0 * ( sum[i] - sum[j - 1] ) / ( x[i] + d * ( i - j ) );
}int main() {scanf( "%d %lld", &n, &d );for( int i = 1;i <= n;i ++ ) {scanf( "%lld %lld", &a[i], &x[i] );sum[i] = sum[i - 1] + a[i];}for( int i = 1;i <= n;i ++ ) {while( top > 1 && calc1( i, st[top] ) < calc1( st[top], st[top - 1] ) )top --;st[++ top] = i;int l = 1, r = top;while( l <= r ) {int tmp = ( r - l + 1 ) / 3;int mid1 = l + tmp - 1, mid2 = l + ( tmp << 1 ) - 1;if( mid1 == mid2 ) break;if( calc2( i, st[mid1] ) < calc2( i, st[mid2] ) ) l = mid1 + 1;else r = mid2 - 1;}ans += max( calc2( i, st[l] ), calc2( i, st[r] ) );}printf( "%0.f", ans );return 0;
}

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

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

相关文章

.NET的关于人脸识别引擎分享(C#)

最近在Github上找合适的人脸识别引擎&#xff0c;想要本地化用&#xff0c;不用开放的一些API&#xff08;比如腾讯AI、百度AI&#xff09;,有些场景联不了网&#xff0c;一开始搜索的是时候&#xff08;关键字&#xff1a;face recognition&#xff09;就找到了最出名的face_r…

UOJ#84-[UR #7]水题走四方【dp】

正题 题目链接:https://uoj.ac/problem/84 题目大意 有nnn个点的一棵树&#xff0c;111为根&#xff0c;两个人从根节点往下走&#xff08;只能从深度小的点走到深度大的点&#xff09;。 两个人每一秒都可以一条边&#xff08;也可以不移动&#xff09;&#xff0c;或者不消…

Docker最全教程——数据库容器化(十一)

终于按时完成第二篇。本来准备着手讲一些实践&#xff0c;但是数据库部分没有讲到&#xff0c;部分实践会存在一些问题&#xff0c;于是就有了此篇以及后续——数据库容器化。本篇将从SQL Server容器化实践开始&#xff0c;并逐步讲解其他数据库的容器化实践&#xff0c;中间再…

[选拔赛2 NOIP2018雅礼集训 Day3 u,v,w]玩个三角形(二维差分),玩个球(状压DP+map),玩个树(树上DP)

文章目录T1&#xff1a;玩个三角形titlesolutioncodeT2&#xff1a;玩个球titlesolutioncodeT3&#xff1a;玩个树titlesolutioncodeT1&#xff1a;玩个三角形 title 题目描述 考虑一个 n ∗ n 的矩阵 A&#xff0c;初始所有元素均为 0。 执行 q 次如下形式的操作&#xff…

2019 年起如何开始学习 ABP 框架系列文章-开篇有益

阅读文本大概需要 3.3 分钟。本系列文章推荐阅读地址为&#xff1a;52ABP 开发文档https://www.52abp.com/Wiki/52abp/latest/Welcome-to-52abp本文的目的是为了让刚刚接触 ABP 框架的同学或者准备接触 ABP 框架的同学&#xff0c;能够理解和搞明白 ABP 框架到底是怎么回事&…

【模板】差分约束算法

【模板】差分约束算法 题意&#xff1a; 题解&#xff1a; 模板题 算法讲解 给出一组包含 m 个不等式&#xff0c;有 n 个未知数。求任意一组满足这个不等式组的解&#xff0c;或判定无解。 连边之后跑最短路&#xff0c;保证每个连通块都没有负环即可。 也可以建源点s 0&a…

数论一之定理证明——裴蜀/威尔逊/费马/扩展欧几里得/[扩展]欧拉/[扩展]中国剩余定理,欧拉函数,逆元,剩余系,筛法

打死没想到会在H老师处学懂数论同余&#xff0c;整除模运算埃式筛法欧拉筛法最大公约数和最小公倍数辗转相除法更相减损术裴蜀定理威尔逊定理费马定理同余等价类、剩余系、缩系欧拉函数欧拉定理扩展欧拉定理区间逆元扩展欧几里得中国剩余定理扩展中国剩余定理利用以上所有知识进…

AT4437-[AGC028C]Min Cost Cycle【结论,堆】

正题 题目链接:https://www.luogu.com.cn/problem/AT4437 题目大意 有nnn个点的一张有向完全图&#xff0c;每个点有两个点权a,ba,ba,b。连接x,yx,yx,y两个点的边权为min{ax,by}min\{a_x,b_y\}min{ax​,by​}&#xff0c;求一条权值和最小的哈密顿回路。 1≤n≤105,1≤a,b≤1…

某银行大型管理系统端到端持续集成和交付实践

背景传统的银行IT系统研发流程从需求提出到产品交付往往具有较长的研发周期&#xff0c;纵观银行当下面临的市场环境&#xff0c;个人信贷消费升级&#xff0c;资管需求旺盛&#xff0c;普惠金融成为国家战略&#xff0c;来自银行同业和互联网金融的压力扑面而来&#xff0c;谁…

排列组合十一个性质公式及证明,错排数公式及证明

文章目录排列数组合数求组合数常用公式定义式递推式杨辉三角组合数常用性质及证明性质一性质二性质三性质四(二项式定理)性质五性质六性质七性质八性质九性质十性质十一错排数排列数 从nnn个物品中不放回地依次选mmm个物品&#xff0c;考虑顺序&#xff0c;有多少种方案&#…

引入用于 Azure IoT Edge 的 Visual Studio 工具

物联网开发人员&#xff1a;工具和经验引入用于 Azure IoT Edge 的 Visual Studio 工具今天&#xff0c;我们很高兴地发布用于 Visual Studio 2017 的 Azure IoT Edge 工具的预览版。Azure IoT Edge 是一个全托管服务&#xff0c;通过直接在跨平台物联网设备上部署并运行人工智…

P4878 [USACO05DEC]Layout G

P4878 [USACO05DEC]Layout G 题意&#xff1a; 题解&#xff1a; 这个题其实是差分约束的裸题&#xff0c;但是有几个坑要注意 1.题目说了&#xff0c;奶牛按照编号1…N排列&#xff0c;对于ML个输入&#xff0c;A< B ,所以关系是B - A < 10,而不是A - B <10,我一开…

【学习笔记】原根 / BSGS / 扩展BSGS证明及模板

文章目录原根BSGS大步小步算法扩展BSGS原根 如果两个整数a,ba,ba,b互质&#xff0c;则有aϕ(b)%b1a^{\phi(b)}\%b1aϕ(b)%b1 定义模bbb意义下的aaa的阶为使ad%b1a^d\%b1ad%b1的最小正整数ddd 显然&#xff0c;模bbb的阶d∣ϕ(b)d|\phi(b)d∣ϕ(b) 如果模bbb意义下aaa的阶为…

.Net Core分布式部署中的DataProtection密钥安全性

在.NetCore中默认使用DataProtection来保护数据&#xff0c;例如Cooike等。一般情况下DataProtection生成的密钥会被加密后存储&#xff0c;例如默认的文件存储可以看到使用了Windows DPAPI加密。但是如果更改默认设置例如使用的外部存储如redis则此时密钥默认是不加密的微软说…

scanf(“%s“)真的只开读入字符串大小就可以了吗??

文章目录前言还原过程计算机程序背后的故事总结瞎逼逼前言 艹艹艹艹艹艹&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;老子没想到没想到&#xff0c;靠&#xff01; 本人刚刚在做树链剖分“染色”一题的代码重构&#xff0c;上午打…

P5299-[PKUWC2018]Slay the Spire【dp】

前言 正题 题目链接:https://www.luogu.com.cn/problem/P5299 题目大意 有2n2n2n张牌&#xff0c; nnn张强化牌&#xff0c;每张上有一个正整数x(x>1)x(x>1)x(x>1)&#xff0c;如果使用后之后的每一张攻击牌伤害都会乘上xxx。nnn张攻击牌&#xff0c;每张上有一个正…

asp.net core2.2 多用户验证和授权

asp.net core2.2 用户验证 和授权有很详细和特贴心的介绍&#xff0c;我感兴趣的主要是这两篇&#xff1a;cookie身份验证基于角色的授权我的项目有两类用户&#xff1a;微信公众号用户&#xff0c;用户名为公众号的openid企业微信的用户&#xff0c;用户名为企业微信的userid每…

P1494 [国家集训队]小Z的袜子

P1494 [国家集训队]小Z的袜子 题意&#xff1a; 有一个长度为 n 的序列c[i] 。现在给出 m个询问&#xff0c;每次给出两个数l,r &#xff0c;从编号在 l 到 r 之间的数中随机选出两个不同的数&#xff0c;求两个数相等的概率。 题解&#xff1a; 很明显&#xff0c;莫队算法…

一文带你快速读懂.NET CLI

dotnet cli 是 .Net Core 功能中最有用的特性之一。在这篇文章里&#xff0c;我们将介绍几个.Net OSS 工具是如何使用 dotnet cli&#xff0c;并介绍如何在日常开发中使用新的 cli 工具。正文关键要点dotnet cli 使得基于. Net 项目的自动化和脚本编写变得非常简单&#xff0c;…

[POJ 3164]Command Network(最小树形图,朱刘算法)

文章目录titlesolutioncodetitle solution 读完翻译后&#xff0c;很明显就是个朱刘算法的板子题 最小树形图&#xff0c;就是给出一个带权有向图 从中指定一个特殊的结点 root 求一棵以 root 为根的有向生成树 T&#xff0c;且使得 T 中所有边权值最小 简单来说&#xff0c…