AGC004(A~E)

前言

FFF不会做,正解好神仙,爬了

正题


AT2041 [AGC004A] Divide a Cuboid

https://www.luogu.com.cn/problem/AT2041

题目大意

一个A∗B∗CA*B*CABC的立方体,分成两个长方体使得边长都是整数而且体积差最小。

1≤A,B,C≤1091\leq A,B,C\leq 10^91A,B,C109

解题思路

如果有一边是偶数之间这边开始分,不然就找一边分的最小就好了。

code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
ll a,b,c;
signed main()
{scanf("%lld%lld%lld",&a,&b,&c);if((a&1)&&(b&1)&&(c&1))printf("%lld\n",min(a*b,min(b*c,a*c)));else puts("0");return 0;
}

AT2042 [AGC004B] Colorful Slimes

https://www.luogu.com.cn/problem/AT2042

题目大意

nnn个颜色的史莱姆,第iii只可以花费aia_iai获得,或者花费kkk使得所有获得的史莱姆颜色加一后模nnn,求最少花费多少能获得所有颜色的史莱姆。

1≤n≤2000,1≤ai,k≤1091\leq n\leq 2000,1\leq a_i,k\leq 10^91n2000,1ai,k109

解题思路

显然我们可以通过控制获得的顺序使得加一的次数就是次数最多的那个史莱姆,所以处理出最多加iii次的情况下每个史莱姆的最少获得费用。
然后枚举就好了。时间复杂度:O(n2)O(n^2)O(n2)

code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=2100;
ll n,k,ans,a[N],f[N][N];
signed main()
{scanf("%lld%lld",&n,&k);for(ll i=0;i<n;i++)scanf("%lld",&a[i]);for(ll i=0;i<n;i++){f[i][0]=a[i];for(ll j=1;j<n;j++)f[i][j]=min(f[i][j-1],a[(i-j+n)%n]);}ans=1e18;for(ll i=0;i<n;i++){ll sum=0;for(ll j=0;j<n;j++)sum+=f[j][i];ans=min(ans,sum+i*k);}printf("%lld\n",ans);return 0;
}

AT2043 [AGC004C] AND Grid

https://www.luogu.com.cn/problem/AT2043

题目大意

给出一个n×mn\times mn×m的网格图,满足四边上都没有’#’,现在要求求出两个n×mn\times mn×m的网格图使得上面的’#‘四联通且两张图上’#'的并恰好是给出的网格图。

1≤n,m≤5001\leq n,m\leq 5001n,m500

解题思路

突破口应该是四周没有’#’,所以我们可以用四周来保证四联通,然后从四周延伸’#'过来。

对于第一张图我们左边铺满’#’,奇数行除了最右边铺满’#’,偶数行只在有原图有’#'的位置铺。

第二张图相反的右边铺满’#’,偶数行处理最左边铺满’#’,奇数行在原图有’#'的位置铺。

就好了。

code

#include<bits/stdc++.h>
using namespace std;
const int N=510;
int n,m;char s[N][N];
int main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++)scanf("%s",s[i]+1);for(int i=1;i<=n;i++){putchar('#');if(i==1||i==n)for(int j=2;j<=m;j++)putchar('.');else if(i&1)for(int j=2;j<=m;j++)putchar((j==m)?'.':'#');else for(int j=2;j<=m;j++)putchar(s[i][j]);putchar('\n');}putchar('\n');for(int i=1;i<=n;i++){if(i==1||i==n)for(int j=1;j<m;j++)putchar('.');else if(!(i&1))for(int j=1;j<m;j++)putchar((j==1)?'.':'#');else for(int j=1;j<m;j++)putchar(s[i][j]);putchar('#');putchar('\n');}return 0;
}

AT2044 [AGC004D] Teleporter

https://www.luogu.com.cn/problem/AT2044

题目大意

给出nnn个点的一棵基环外向树,保证一号点在环上,每次可以修改一个点的父亲(可以是自己),求最少修改次使得所有点的kkk级祖先都是111号点。

1≤n≤105,1≤k≤1091\leq n\leq 10^5,1\leq k\leq 10^91n105,1k109

解题思路

显然一号点一定要连自己,因为环上必然只有一个点满足kkk级祖先是111,所以改其他节点还不如改一号点。

然后问题就变成树上的了,之间贪心到必须改的时候再改就好了。

时间复杂度:O(n)O(n)O(n)

code

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1e5+10;
struct node{int to,next;
}a[N<<1];
int n,k,tot,ans,fa[N],ls[N],f[N];
void addl(int x,int y){a[++tot].to=y;a[tot].next=ls[x];ls[x]=tot;return;
}
void dfs(int x){f[x]=0;for(int i=ls[x];i;i=a[i].next){int y=a[i].to;if(y==fa[x])continue;dfs(y);f[x]=max(f[x],f[y]+1);}if(fa[x]!=1&&f[x]+1>=k)ans++,f[x]=-1;return;
}
int main()
{scanf("%d%d",&n,&k);scanf("%d",&fa[1]);if(fa[1]!=1)ans++;fa[1]=1;for(int i=2;i<=n;i++){scanf("%d",&fa[i]);addl(fa[i],i);}dfs(1);printf("%d\n",ans);return 0;
}

AT2045 [AGC004E] Salvage Robots

题目大意

n×mn\times mn×m的网格上有一些机器人和一个出口,每次你可以让所有的机器人上/左/下/右移动,出界的机器人算为死亡,到达出口的机器人算为出逃,求最多能救走多少个机器人。

1≤n,m≤1001\leq n,m\leq 1001n,m100

解题思路

fu,d,l,rf_{u,d,l,r}fu,d,l,r表示所有机器人最多往上/下/左/右走了u/d/l/ru/d/l/ru/d/l/r步时最多能救多少机器人,然后暴力转移即可。

时间复杂度:O(n4)O(n^4)O(n4)

code

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=105;
int n,m,rx,ry,ans,w[N][N],h[N][N];
short f[N][N][N][N];char s[N];
signed main()
{scanf("%d%d",&n,&m);for(int i=1;i<=n;i++){scanf("%s",s+1);for(int j=1;j<=m;j++){w[i][j]=w[i-1][j]+(s[j]=='o');h[i][j]=h[i][j-1]+(s[j]=='o');if(s[j]=='E')rx=i,ry=j;}}for(int u=0;u<rx;u++)for(int d=0;d<=n-rx;d++)for(int l=0;l<ry;l++)for(int r=0;r<=m-ry;r++){ans=max(ans,(int)f[u][d][l][r]);if(l+r<ry-1)f[u][d][l+1][r]=max((int)f[u][d][l+1][r],f[u][d][l][r]+w[min(rx+d,n-u)][ry-l-1]-w[max(rx-u-1,d)][ry-l-1]);if(l+r<m-ry)f[u][d][l][r+1]=max((int)f[u][d][l][r+1],f[u][d][l][r]+w[min(rx+d,n-u)][ry+r+1]-w[max(rx-u-1,d)][ry+r+1]);if(u+d<rx-1)f[u+1][d][l][r]=max((int)f[u+1][d][l][r],f[u][d][l][r]+h[rx-u-1][min(ry+r,m-l)]-h[rx-u-1][max(ry-l-1,r)]);if(u+d<n-rx)f[u][d+1][l][r]=max((int)f[u][d+1][l][r],f[u][d][l][r]+h[rx+d+1][min(ry+r,m-l)]-h[rx+d+1][max(ry-l-1,r)]);}printf("%d\n",ans);return 0;
}

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

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

相关文章

1022. 宠物小精灵之收服

1022. 宠物小精灵之收服 题意&#xff1a; 现在有n个胶囊&#xff0c;m个生命值&#xff0c;k个怪物&#xff0c;每个怪物需要a[i]个胶囊&#xff0c;且会造成b[i]个伤害后才能捕获&#xff0c;问在活着的前提下&#xff0c;最多捕获多少怪物&#xff0c;在怪物最多的情况下剩…

平衡树 - FHQ 学习笔记

平衡树 - FHQ 学习笔记 主要参考万万没想到 的 FHQ-Treap学习笔记。 本片文章的姊妹篇&#xff1a;平衡树 - Splay 学习笔记。 感觉完全不会平衡树&#xff0c;又重新学习了一遍 FHQ&#xff0c;一口气把常见套路都学完了。 一、大致内容及分类 FHQ(???)&#xff0c;全称非旋…

【周末狂欢赛6】[AT1219]历史研究(回滚莫队),大魔法师(矩阵+线段树),单峰排列

文章目录T1&#xff1a;单峰排列题目题解codeT2&#xff1a;历史研究题目题解codeT3&#xff1a;大魔法师题目题解code我可能这辈子都更不出来狂欢赛5了&#xff0c;先咕咕 T1&#xff1a;单峰排列 题目 一个n的全排列A[i]是单峰的&#xff0c;当且仅当存在某个x使得A[1]<…

YBTOJ:圈套问题(分治法、鸽笼原理)

文章目录题目描述数据范围解析代码图片转载自&#xff1a; https://blog.csdn.net/weixin_43346722/article/details/118435430题目描述 平面上有 n个点&#xff0c;用n个大小相同的圆分别将一个点作为圆心&#xff0c;同时满足圆圈不相交&#xff0c;求圆的最大半径。 数据范…

CF1598E-Staircases【计数】

正题 题目链接:https://www.luogu.com.cn/problem/CF1598E 题目大意 给出一个nmn\times mnm的网格图&#xff0c;开始所有都是黑色的&#xff0c;qqq次取反一个格子的颜色&#xff0c;然后求楼梯的数量。 楼梯定义为全黑色的下/右交替的格子集。 1≤n,m≤1000,1≤q≤1041\le…

ASP.NET Core 实战:使用 NLog 将日志信息记录到 MongoDB

一、前言在项目开发中&#xff0c;日志系统是系统的一个重要组成模块&#xff0c;通过在程序中记录运行日志、错误日志&#xff0c;可以让我们对于系统的运行情况做到很好的掌控。同时&#xff0c;收集日志不仅仅可以用于诊断排查错误&#xff0c;由于日志同样也是大量的数据&a…

532. 货币系统

532. 货币系统 题意&#xff1a; 有 n 种不同面额的货币&#xff0c;第 i 种货币的面额为 a[i]&#xff0c;每一种货币都有无穷多张&#xff0c;货币之间可以彼此代替&#xff0c;比如6等于两张3&#xff0c;问有多少种货币是不可替代的 题解&#xff1a; 我们换一个问…

概率期望题(期望 DP)做题记录

概率期望题(期望 DP)做题记录 P3830 [SHOI2012]随机树 难点在于第二问&#xff1a;生成树的期望深度。 不 wei zhuo 捏&#xff0c;设 \(dp_{i,j}\) 表示已经有了 \(i\) 个叶子结点&#xff0c;深度大于 \(j\) 的概率。 考虑枚举一棵子树的大小&#xff0c;转移方程如下&#x…

[学习笔记] 伸展树splay详解+全套模板+例题[Luogu P3369 【模板】普通平衡树]

文章目录引入概念全套模板变量声明updaterotate旋转splay操作insert插入delete删除查找x的位置查找第k大前驱/后继极小值-inf和极大值inf的作用例题&#xff1a;P3369 【模板】普通平衡树题目code声明一下&#xff0c;许多代码的注解都在模板代码里面写了的&#xff0c;所以正文…

2021.9.23模拟

前言 174pts 40502460 四个暴力分 qwq T1想切结果矩乘T飞了。。。 不要迷信矩乘&#xff0c;这玩意也是会T的… 考场 先看题 感觉T1和T最可做 T3期望想到zld的全排列大法了&#xff0c;但是似乎只能线性… T4是初始化加强版&#xff0c;思路倒是有&#xff0c;但是不想写&am…

AT1981-[AGC001C]Shorten Diameter

正题 题目链接:https://www.luogu.com.cn/problem/AT1981 题目大意 给出nnn个点的一棵树&#xff0c;每次你可以删除一个叶子&#xff0c;求最少的操作数使得树的直径长度不超过kkk。 1≤n,k≤20001\leq n,k\leq 20001≤n,k≤2000 解题思路 开始以为是dpdpdp啥的&#xff0c…

手写AspNetCore 认证授权代码

在普通的MVC项目中 我们普遍的使用Cookie来作为认证授权方式&#xff0c;使用简单。登录成功后将用户信息写入Cookie&#xff1b;但当我们做WebApi的时候显然Cookie这种方式就有点不适用了。在dotnet core 中 WebApi中目前比较流行的认证授权方式是Jwt (Json Web Token) 技术。…

FWT 学习笔记

FWT 学习笔记 学的时候比较匆忙&#xff0c;于是就学一个 \(\texttt{or,and,xor}\) 卷积跑路。 P4717 【模板】快速莫比乌斯/沃尔什变换 (FMT/FWT) 前置知识&#xff1a;高维前缀和&#xff0c;下面前缀和的操作大多都是用高维前缀和来实现的。 设有两个长度为 \(2^n\) 的序列 …

大盗阿福

大盗阿福 题意&#xff1a; 长度为n的数组a&#xff0c;不能取连续的数&#xff0c;问所能取的最大值是多少 题解&#xff1a; 设dp[i][0]表示第i个数不选&#xff0c;dp[i][1]表示第i个数选 如果第i个数不选&#xff0c;那么第i-1个数可以选也可以不选&#xff0c;我们取最…

YBTOJ:采矿战略(线段树维护dp、树链剖分)

文章目录题目描述解析代码题目描述 所谓线段树维护dp&#xff0c;就是在线段树上维护dp &#xff08;逃&#xff09; 解析 把树剖一下后就变成了区间问题 考虑建一棵线段树&#xff0c;每一个结点都是一个背包 这样就能区间查询&#xff0c;也能带修了 这种做法复杂度其实并不…

【用皇宫三十六计生存法则带你走进LCT(动态树)】LCT概念+模板+例题【洛谷P3690 Link Cut Tree(动态树)】

文章目录LCT概念模板rotatoisrootsplayaccessmakerootsplitfindrootlinkcut封装版例题题目code普通版code封装版这篇博客主要是帮助大家理解各个模板及LCTLCTLCT的意思&#xff0c;方便理解&#xff0c;模板写法的理解在代码里有注释详解&#xff0c;如果要看原理的话&#xff…

AGC002(D~F)【Kruskal重构树,博弈论,dp】

正题 AT1998 [AGC002D] Stamp Rally【Kruskal重构树,倍增】 https://www.luogu.com.cn/problem/AT1998 题目大意 给出nnn个点mmm条边的一张无向图&#xff0c;qqq次询问两个人分别从x,yx,yx,y&#xff0c;要求总共经过zzz个点的情况下经过边的最大编号的最小值。 1≤n,m,q≤…

迈向现代化的 .Net 配置指北

1. 欢呼 .NET Standard 时代我现在已不大提 .Net Core&#xff0c;对于我来说&#xff0c;未来的开发将是基于 .NET Standard&#xff0c;不仅仅是 面向未来 &#xff0c;也是 面向过去&#xff1b;不只是 .Net Core 可以享受便利&#xff0c; .NET Framework 不升级一样能享受…

DP 套 DP

DP 套 DP 学习笔记 大致内容 DP 套 DP 就是将一个简单 DP 的状态压缩起来放到新的 DP 中当做状态进行 DP 的过程。 常用于计算简单 DP 的答案为 \(k\) 的转移方案的数量。 一般都需要 decode 和 recode 操作&#xff0c;这里和 插头DP/轮廓线DP 有异曲同工之妙&#xff01; 例题…

acwing提高组 第一章 动态规划

文章目录数字三角形模型最长上升子序列模型背包模型状态机模型状态压缩DP区间DP树形DP数位DP单调队列优化DP斜率优化DPoj链接数字三角形模型 AcWing 1015. 摘花生1357人打卡 AcWing 1018. 最低通行费1279人打卡 AcWing 1027. 方格取数1158人打卡 AcWing 275. 传纸条933人打卡 …