2019icpc南京网络赛
B. super_log(扩展欧拉函数)
题意:求aa...(b个a)模M的值。
思路:递归用欧拉函数求解,我们知道欧拉降幂公式:

如果讨论b和φ(p)的关系会很麻烦,网上证明了一种精妙的方法,只需重新Mod,就能把a和p当作互素处理,从而统一处理。
要注意的点是:快速幂中取模也要用重写的Mod,最终的答案要%M,递归终点为b=0,如果终点为b=1时,当b=0会WA。
AC代码:
#include<cstdio>
#include<algorithm>
#include<bitset>
using namespace std; typedef long long LL;
const int maxn=1e6+;
int T;
LL a,b,M,eu[maxn]; void eular(){
eu[]=;
for(int i=;i<maxn;++i)
if(!eu[i])
for(int j=i;j<maxn;j+=i){
if(!eu[j]) eu[j]=j;
eu[j]=eu[j]/i*(i-);
}
} LL Mod(LL x,LL M){
return x<M?x:x%M+M;
} LL qpow(LL a,LL b,LL M){
LL ret=;
while(b){
if(b&) ret=Mod(ret*a,M);
a=Mod(a*a,M);
b>>=;
}
return ret;
} LL dfs(LL b,LL M){
if(b==) return Mod(,M);
if(M==) return Mod(a,M);
return qpow(a,dfs(b-,eu[M]),M);
} int main(){
eular();
scanf("%d",&T);
while(T--){
scanf("%lld%lld%lld",&a,&b,&M);
printf("%lld\n",dfs(b,M)%M);
}
return ;
}
H. Holy Grail(Floyd求最短路)
题意:给定一个图,没有多重边和自回路,有负权边,但没有负权环。n个点,m条有向边,n<=300,m<=500,现加入6条边,使得加入的边权最小,并且不会出现负权环。并且保证一定有解。
思路:
因为保证一定有解,如果加入的边为(u,v),那么原图一定有一条v->u的路径。所以我们用floyd求出各点之前的最短路即可,那么新加的边的最小权值就是v到u的最短路的相反数。新加一条边后重新floyd。
AC代码:
#include<cstdio>
#include<algorithm>
using namespace std; typedef long long LL;
const int maxn=;
const LL inf=0x3f3f3f3f3f3f3f3f;
int T,n,m;
LL dp[maxn][maxn]; void floyd(){
for(int k=;k<=n;++k)
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j]);
} int main(){
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&m);
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
dp[i][j]=inf;
for(int i=;i<=m;++i){
int x,y;LL w;
scanf("%d%d%lld",&x,&y,&w);
dp[++x][++y]=w;
}
for(int i=;i<=;++i){
floyd();
int x,y;
scanf("%d%d",&x,&y);
++x,++y;
printf("%lld\n",-1LL*dp[y][x]);
dp[x][y]=-1LL*dp[y][x];
}
}
return ;
}
F. Greedy Sequence(暴力)
题意:化简之后题意就是对于给定排列,求元素i向左向右扩展k个元素后的第一个比i小的元素。
思路:
最开始以为是单调队列扩展,后来发现单调队列没法做。后来让队友试了一发主席树,T了。然后我想用set试一试,用set加入窗口大小为k的所有元素,每次求出第一个比它小的元素,顺序求一次,逆序再求一次。抱着T的心态交了一发,竟然过了QAQ,激动坏了,数据也太水了,暴力都能过。
AC代码:
#include<cstdio>
#include<algorithm>
#include<set>
#include<cctype>
using namespace std; inline int read()
{
int x=,f=; char ch=;
while(!isdigit(ch)) {f|=ch=='-';ch=getchar();}
while(isdigit(ch)) x=(x<<)+(x<<)+(ch^),ch=getchar();
return f?-x:x;
} const int maxn=1e5+;
int T,n,k,a[maxn],id[maxn],b[maxn],ans[maxn];
set<int> st; int main(){
scanf("%d",&T);
while(T--){
st.clear();
scanf("%d%d",&n,&k);
for(int i=;i<=n;++i){
a[i]=read();
id[a[i]]=i;
b[i]=;
}
st.insert(a[]);
for(int i=;i<=n;++i){
st.insert(a[i]);
if(i-k->) st.erase(a[i-k-]);
if(*(st.begin())==a[i]) continue;
set<int>::iterator it=st.find(a[i]);
--it;
b[i]=max(b[i],*it);
}
st.clear();
st.insert(a[n]);
for(int i=n-;i>=;--i){
st.insert(a[i]);
if(i+k+<=n) st.erase(a[i+k+]);
if(*(st.begin())==a[i]) continue;
set<int>::iterator it=st.find(a[i]);
--it;
b[i]=max(b[i],*it);
}
for(int i=;i<=n;++i)
if(b[id[i]]==) ans[i]=;
else ans[i]=ans[b[id[i]]]+;
for(int i=;i<=n;++i){
printf("%d",ans[i]);
if(i!=n) printf(" ");
}
printf("\n");
}
return ;
}
2019icpc南京网络赛的更多相关文章
- 2019ICPC南京网络赛A题 The beautiful values of the palace(三维偏序)
2019ICPC南京网络赛A题 The beautiful values of the palace https://nanti.jisuanke.com/t/41298 Here is a squa ...
- 2019icpc南京网络赛_F_Greedy Sequence
题意 题意不明,队友告诉我对于每个\(i\),所在下标\(p[i]\),在\([p[i]-k,p[i]+k]\)中找到小于\(i\)的最大数\(x\),然后\(ans[i]=ans[x]+1\)即可. ...
- 2019ICPC南京网络赛B super_log——扩展欧拉定理
题目 设函数 $$log_a*(x) = \begin{cases}-1, & \text{ if } x < 1 \\ 1+log_a*(log_ax) & \text{ if ...
- 2019icpc南京网络赛 A 主席树
题意 给一个\(n\times n\)的螺旋矩阵,给出其中的\(m\)个点的值分别为各个点上数字的数位之和,给出\(q\)个询问,每次询问从\((x1,y1)\)到\((x2,y2)\)的子矩阵的和. ...
- 2019icpc南京网络赛 F 主席树
题意 给一个\(n\)的全排列数组\(a\),求一个递推数组每一项的值:\(ans[i]=ans[j]+1\),\(j\)为\(a[pos[i]-k]到a[pos[i]+k],(pos[i]为i在数组 ...
- 2019ICPC南京网络赛总结
这次是在学校打的,总体不算好,过两题校排200多..很惨. 开场一段时间没人过题,但是很多人交I, 我也就再看,看着看着发现不可做,这时候转F,花了半天读懂题意的时候想到主席树查找.但是主席树这种查找 ...
- 2019ICPC南京网络赛F Greedy Sequence
题意:对于1<=i<=n每次找到(pos[i]-k,pos[i]+k)内不大于i的最大那个数,ans[i]=ans[mx]+1,若ans[mx]未知则递归处理ans[mx] PS:这个题比 ...
- 2019ICPC南京网络赛A The beautiful values of the palace
题意:蛇形填数超大版本,需要求出一些给定坐标的值的数位和,然后q次询问,一个矩形区域内值的和是多少 解题思路:二维偏序前缀和的经典题 二维偏序:求(x,y)左下角点的个数,思路是对x,y升序排序,用树 ...
- 2019ICPC南京网络赛B super_log
题意:求a的a的a次方..一直求b次,也就是在纸上写个a,然后一直a次方a次方,对m取模,记为F(a,b,m)=pow(a,F(a,b-1,phi(m)) 解题思路:联系欧拉降幂,这个迭代的过程,我们 ...
随机推荐
- 2、创建MFC应用程序——基于对话框,时间计时器
使用计时器更新MFC界面时间,频率1s. 文件——新建项目——MFC应用程序,下一步,选择基于对话框,其他默认,完成. 双击窗体(或者鼠标右键)进入类向导,自动创建Ontimer()函数 void C ...
- jQuery系列(三):jQuery动画效果
jQuery提供的一组网页中常见的动画效果,这些动画是标准的.有规律的效果:同时还提供给我们了自定义动画的功能. 1.显示动画 方式一: $("div").show(); 解释:无 ...
- ImageSharp跨平台图片处理
添加nuget引用 SixLabors.ImageSharp 和SixLabors.ImageSharp.Drawing 暂时只实现了缩略图..<pre>using SixLabors.I ...
- php框架对比
一.ThinkPHP框架 优势:简单易用(Model,Controller,View负责各自的工作),它拥有支持XML标签库技术的编译型模版引擎,支持两种模版标签, 动态编译,缓存技术.还支持自定义标 ...
- 在windows下安装lxml 报错error: Unable to find vcvarsall.bat
刚开始安装 ,我是使用命令pip install lxml直接进行安装,不过出错了 error: Unable to find vcvarsall.bat 解决方案: 1.首先安装wheel,pip ...
- Leetcode题目62.不同路径(动态规划-中等)
题目描述: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). ...
- 常用css模板
段落超出显示省略号(可单行多行) .p-content{ overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-b ...
- rest-assured学习资料
rest-assured 使用指南 https://blog.csdn.net/wx19900503/article/details/54944841/
- 【MyBatis】【SQL】删除最快纪录诞生,从一千万条记录中删除八百万条仅用2分6秒
在 https://www.cnblogs.com/xiandedanteng/p/11669629.html 里我做个一个循环按时间查ID并删除之的程序,运行时间是4分7秒. 但是这个程序走了很多次 ...
- Android系统服务 —— WMS与AMS
“可以毫不夸张的说,Android的framework层主要是由WMS.AMS还有View所构成,这三个模块穿插交互在整个framework中,掌握了它们之间的关系和每一个逻辑步骤,你对framewo ...