• 2024-11-1720241112
    T1传送门肯定是准备用传送门的时候才会开。于是打出一个传送门之后肯定是找最近的能走到的墙然后在这面墙上打一个传送门穿过去。因此每一步的决策就是四向移动或者以当前格到最近的墙的距离的代价走到四个方向上最近的墙之一。直接最短路即可。代码#include<iostream>
  • 2024-11-14[USACO07OPEN] Dining G
    和过去的自己不期而遇需要进行点边转化以限制1头牛至多只产生1的贡献点击查看代码#include<bits/stdc++.h>usingnamespacestd;vector<int>a[1005],c[1005],h[1005];intcur[1005],d[1005];ints=0,t=1000;queue<int>q;intread1(){ charcc=getchar(); while(!(
  • 2024-11-09博弈论模板问题
    1.HDU1848任何一个大学生对菲波那契数列(Fibonaccinumbers)应该都不会陌生,它是这样定义的:F(1)=1;F(2)=2;F(n)=F(n-1)+F(n-2)(n>=3);所以,1,2,3,5,8,13……就是菲波那契数列。在HDOJ上有不少相关的题目,比如1005Fibonacciagain就是曾经的浙江省赛题。今天,又一个关于Fibona
  • 2024-11-03数字三角形
    数字三角形题目给定一个如下图所示的nnn层数字三角形,从顶部出发,在每一结点可以选择移动至其左下方的结点或移动至其右下方的结点,一直走到底层,要求找出一条路径,使路径上
  • 2024-11-01计蒜客:修建大桥(并查集/DFS/BFS)
     找到有几张连通图即可解决问题。DFS:1#include<bits/stdc++.h>2usingnamespacestd;3intn,m;4intgraph[1005][1005]={0};5boolvisited[1005]={false};6voiddfs(intp){7if(visited[p]){8return;9}10visited[p]
  • 2024-10-23P7074 [CSP-J2020] 方格取数 题解
    动态规划dp方格取数类似于数字三角形,均可以使用动态规划直接秒杀.但此题有$3$个方向:上、右、下.所以可以定义一个三维数组dp数组.假设$f_{i,j,1}$是从右、上方到达$(i,j)$的和的最大值.又有$f_{i,j,0}$是从右、下方到达$(i,j)$的和的最大值.我们可以先确定
  • 2024-10-231005:地球人口承载力估计
    地球人口承载力估计【题目描述】假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供x亿人生活a年,或供y亿人生活b年。为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿人?【输入】一行,包括四个正整数x,a,y,b,两个整数之间用单个空格隔开
  • 2024-10-18二维 bfs 基础笔记
    一、寻找连通块1.基本思路找到一个未被走过的点,以这个点为起点,将与此点相连的所有点标记为走过,答案数\(+1\)2.代码实现#include<bits/stdc++.h>usingnamespacestd;structp{intx,y;};queue<p>q;intn,m,cnt;//最终答案为cntintdx[]={1,-1,0,0}
  • 2024-10-142024.10.14 1005版
    起于《海奥华预言》的思考◆地球管理结构和参考持续更新中...... 英文地址:https://github.com/zhuyongzhe/Earth/tags中文地址:https://www.cnblogs.com/zhuyongzhe85作者:朱永哲 ---------------------------------------------------------------------------------
  • 2024-10-10PAT甲级1005 Spell It Right
    介绍Givenanon-negativeintegerN,yourtaskistocomputethesumofallthedigitsofN,andoutputeverydigitofthesuminEnglish.InputSpecification:Eachinputfilecontainsonetestcase.EachcaseoccupiesonelinewhichcontainsanN(≤10的1
  • 2024-10-08洛谷P2513 逆序对数列
    Problem给定n,k,求得1~n中有多少种排列使得逆序对个数为k?(n,k<=1000)Solve考虑DP:设f[i][j]为i个数中逆序对数量为j的排列数量但因为我们并不知道我们这i个数到底是谁,难以通过以前的状态得到设f[i][j]为将i放入之前的排列后,逆序对数量为k的排列数此时我们发现可以确定前i-1
  • 2024-09-28题解:P9947 [USACO20JAN] Photoshoot B
    P9947[USACO20JAN]PhotoshootB题解纯模拟!在\(a_{1}\)算出来之后,我们就可以通过\(b\)数组可以求出以后\(a\)数组的所有元素。要判断是否为排列,我们可以使用一个\(vis\)做桶,为了保证字典序最小,我们可以从\(1\)开始枚举,每次枚举前要清空一下\(vis\)数组,最后使用
  • 2024-09-28动态规划(有背包问题)
    目录1.动态规划的介绍2.动态规划的例题第1道题数字三角形(如果想看递归写法可以到我的记忆化递归里去看看记忆化递归_将递归程序记忆化-CSDN博客)第2道题最长公共子序列(模板) 第3道题 最长上升子序列第4道题最大子段和背包系列问题01背包完全背包1.动态规划
  • 2024-09-11CF605E
    (•̀ω•́)y好fan题解#include<bits/stdc++.h>usingnamespacestd;inlineintread(){ charc;intf=1,res=0; while(c=getchar(),!isdigit(c))if(c=='-')f*=-1; while(isdigit(c))res=res*10+c-'0',c=getchar(); returnres*f;}consti
  • 2024-08-20题解:P9944 [USACO21FEB] Comfortable Cows B
    思路由于每次输入\(x\)和\(y\)只改变其上下左右的值,所以每次只要更新其相邻的值即可。当某个位置相邻的奶牛数达到\(3\)时,舒适度加一。当某个位置相邻的奶牛数达到\(4\)时,舒适度减一。注意:每增加一头奶牛以后,如果该位置相邻正好有三头奶牛,则舒适度也要加一。ACcod
  • 2024-08-01HT-018 Div3 能量消耗 题解 [ 绿 ] [ 线性 dp ] [ 前缀和优化 ]
    能量消耗:一个前缀和优化dp的大典题,要是数据水一点\(O(n^3)\)都能硬草过去。思路显然,定义\(dp[i]\)为考虑前\(i\)个塔,并且将前面的精灵全部收集的最小代价。于是转移:\[dp[i]=min(dp[i],dp[j]+w(j,i)+c[i])\]其中\(0\lej<i\lem\),\(w(j,i)\)表示收集从塔\(j\)到
  • 2024-07-302024“钉耙编程”中国大学生算法设计超级联赛(3) 1005 数论
    题意:分析:远看数论题,实则是道数据结构。记\(f_{i}\)表示\(r_{k}=i\)的方案数,\(g_{i}\)表示\(l_{1}=i\)的方案数,那么运用简单容斥,可得:\[ans_{x}=(\sum_{i=1}^{n}f_{i})-((\sum_{i=1}^{x-1}f_{i})+1)\times((\sum_{i=x+1}^{n}g_{i})+1)+1\]先考虑如何计算\(f_{i
  • 2024-07-23P4047 [JSOI2010] 部落划分
    原题链接题解一步一步来,当\(k=2\)的时候,怎么分?当\(k=2\)时,两个点集之间的距离等于两个点集中各取一个点之间的最小距离,我们联想到最小生成树的建立过程,按边权从小到大依次加入,如果两个点所属集合不同便合并因此,当\(k=2\)的时候,答案是最小生成树的最后一个合并边(树边)可
  • 2024-07-201005:地球人口承载力估计 题解
    题目链接题目描述假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供\(x\)亿人生活\(a\)年,或供\(y\)亿人生活\(b\)年。为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿人?解题思路经典的牛吃草问题,只是换了一个问法而已。可以戳这里,也
  • 2024-05-15A. Metro
    原题链接题解思考这类问题之前先考虑完成目标有几种方法,再考虑方法的可行性code#include<bits/stdc++.h>usingnamespacestd;inta[1005],b[1005];intmain(){intn,m;cin>>n>>m;for(inti=1;i<=n;i++)cin>>a[i];for(inti=1;i<=n;i++)cin>>
  • 2024-04-07贪心算法|1005.K次取反后最大化的数组和
    力扣题目链接classSolution{staticboolcmp(inta,intb){returnabs(a)>abs(b);}public:intlargestSumAfterKNegations(vector<int>&A,intK){sort(A.begin(),A.end(),cmp);//第一步for(inti=0;i<A.size
  • 2024-04-0420240404
    T1洛谷P3436PRO-ProfessorSzu首先缩点。然后从所有没有入度的强连通分量开始dfs,进行dp,数一下每个点到终点有多少路径。要注意的是当且仅当一个点能够到达终点时才能够用来更新其他点的dp值。代码#include<iostream>#defineintlonglongusingnamespacestd;in
  • 2024-03-30小红的炸砖块
    题目描述小红正在玩一个“炸砖块”游戏,游戏的规则如下:初始有一个n∗m的砖块矩阵。小红会炸k次,每次会向一个位置投炸弹,如果这个位置有一个砖块,则砖块消失,上方的砖块向下落。小红希望你画出最终砖块的图案。#include<iostream>#include<cstring>#include<algorithm>u
  • 2024-03-19灯泡3
    n*n(n<1000)的棋盘有一些亮着的灯泡,和灭着的灯泡,按行或者列可以将行或者列灯泡翻转。但是没有花费,按某一个格子也可以使灯泡的状态翻转,花费一元,问不超过k元,能否是棋盘的灯泡全亮,k<n。问是否可行及可行方案。#include<iostream>#include<cstdio>#include<cstring>#include<al
  • 2024-03-101005. K 次取反后最大化的数组和c
    intlargestSumAfterKNegations(int*nums,intnumsSize,intk){intt[201]={0};intsum=0;for(inti=0;i<numsSize;i++){t[100+nums[i]]++;sum+=nums[i];}while(k>0){for(inti=0;i<201;i++){