![](https://img-blog.csdnimg.cn/5e398d5c26e74570bed2a76fa699f3b0.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
洛谷
记录做过的洛谷题。
kano_s
天寒地冻,路远马亡。
展开
-
[洛谷]P1910 L国的战斗之间谍
题目信息:题目分析:这题是二维背包,由题意知我们选出的所有间谍的伪装能力值不能超过m,且我们手头上的钱有限,即我们选出的所有间谍的工资和不能超过我们的钱数x,于是便可以推出状态转移方程:d [ j ] [ k ] = max ( d [ j ] [ k ] , d [ j - b [ i ] ] [ k - c [i ] ] + a [ i] )也就是拿到的资料的最大值题解代码:#include<bits/stdc++.h>using namespace s...原创 2022-05-30 19:44:01 · 185 阅读 · 0 评论 -
[洛谷]P1097 [NOIP2007 提高组] 统计数字
这题需要注意100%的数据最大可能达到200000,所以我们创建一个数组 a[200005] 来存它们,由于每个数占一个位置,所以直接用sort排序后相同的数便连续地存在数组里了,接着只需要用一个循环来判断数组里的第i项与第i-1项是否相等即可,若是相等的,数量加1;若不相等,则输出这个数和此时的数量,再让数量归1即可。由于最后输出的是第n-1项,最后再输出第n项即可。代码如下:#include <bits/stdc++.h>using namespace std;typed...原创 2022-05-24 15:04:51 · 322 阅读 · 0 评论 -
[洛谷]P2525 Uim的情人节礼物·其之壱
这题我们只需要判断当前这个序列是否存在上一个字典序即可,这里可以用到一个叫做prev_permutation(a,a+n)的一个函数,它可以用来输出上一个序列,所以只需要用它判断一下是否存在上一个字典序即可,存在就输出它,否则输出ERROR。代码如下:#include <bits/stdc++.h>using namespace std;int main(){ int n,a[10000]; cin>>n; for(int i=0;i<n;i++) ..原创 2022-05-21 13:52:21 · 115 阅读 · 0 评论 -
[洛谷]P4702 取石子
由于每次就取走一个石子,仔细想想其实就是看这堆石子是奇数还是偶数,是奇数就是Alice赢,否则是Bob赢,然后在判断奇数、偶数的问题上可以使用位运算,让这个数&1,看结果是0还是1,是1则说明这个数的最后一位也是1,这个数就是奇数,否则是偶数,不太会位运算的可以看看深入理解计算机系统这本书,里面有详细解释,使用位运算的原因呢也是因为它速度快,在快速幂模板中有同样的运用。所以很快得出代码:#include <bits/stdc++.h>using namespace std..原创 2022-05-16 10:21:04 · 285 阅读 · 0 评论 -
[洛谷]P3353 在你窗外闪耀的星星
这题使用前缀和即可求解,毕竟是求某个数组的某个固定范围内和的最大值,但值得注意的是,某个位置可能会有多个星星叠加,所以亮度也是要累计的,且这里的长度1应该是指1这个位置所占的长度,比如窗的宽度是3,即可包含1,2,3三个数字,而不是算它们的间隔。代码如下:#include <bits/stdc++.h>using namespace std;int main(){ int n,w,x,b; int a[100005]={0},aa[100005]={0},maxo=0,...原创 2022-05-15 15:15:29 · 232 阅读 · 0 评论 -
[洛谷]P1095 [NOIP2007 普及组] 守望者的逃离
这题只需要规定时间t内移动的距离大于或等于到出口的距离s即可成功,否则失败。所以我们按秒来,每一秒跑步和瞬移都一起进行:在每一秒中,跑步的当然不会一直跑而不使用瞬移,所以当这一秒里瞬移后的距离大于了跑步的距离,我们便将跑步的换成瞬移的距离,表明魔法值够先瞬移;瞬移的则是魔法值够10点,就进行一次瞬移,若不够10点,则在这一秒钟待在原地恢复;若在规定时间内有一种方法的移动距离大于或等于到出口的距离s即可输出Yes和当前时间i,否则输出No和最远距离(由于经过替换,最远距离始终是跑步的距离,直接输出跑...原创 2022-05-12 11:22:41 · 272 阅读 · 0 评论 -
[洛谷]P3951 [NOIP2017 提高组] 小凯的疑惑 / [蓝桥杯 2013 省] 买不到的数目
题解不好说。#include <bits/stdc++.h>using namespace std;int main(){ long long a,b; cin>>a>>b; cout<<a*b-a-b<<endl; return 0;}原创 2022-05-10 22:25:16 · 144 阅读 · 0 评论 -
[洛谷]P1403 [AHOI2005]约数研究
先按照题目意思暴力了一波,跟预想一样直接超时,只有30分。#include <bits/stdc++.h>using namespace std;int main(){ int n,sum=0; cin>>n; for(int i=1;i<=n;i++) { for(int j=1;j<=i;j++) { if(i%j==0) { sum++; } } } cout<<sum<<e...原创 2022-05-08 11:22:13 · 451 阅读 · 0 评论 -
[洛谷]P1029 [NOIP2001 普及组] 最大公约数和最小公倍数问题
做这题需要明白一个概念!两个数的积等于它们最大公约数和最小公倍数的积,比如4和6的最大公约数是2,最小公倍数是12,4*6=2*12;所以,我们可以先读入x,y的积,将其设为z,再通过遍历去找能被z整除的一个数,如果这个数的最大公约数仍是x,(由于乘积关系,那么最小公倍数必然是y,则无需再去考虑)便找到了满足要求的一组数了。代码如下:#include <bits/stdc++.h>using namespace std;int gcd(int a,int b) //找a,b(a&原创 2022-05-07 16:10:05 · 409 阅读 · 0 评论 -
[洛谷]P1843 奶牛晒衣服
这题思路是若衣服的湿度能在自然干的条件下用mid天可以晾干,则不需要使用烘干机,否则就使用烘干机,若使用烘干机还需要考虑使用的烘干机的天数会不会超过mid天,若不超过,则可以缩小mid,看更少的天数是否能够烘干衣服,若超过了,就增大mid,换用更长的天数。#include<bits/stdc++.h>#define int long longusing namespace std;int n,a,b;int s[500005];bool check(int mid){ i..原创 2022-04-29 17:22:23 · 710 阅读 · 2 评论 -
[洛谷]P1226 【模板】快速幂||取余运算
解法都在这里了快速幂解法:数的幂次(c++)_kano_s的博客-CSDN博客#include<bits/stdc++.h>using namespace std;typedef long long ll;ll mi(ll n,ll m,ll p){ ll result=1; ll base=n; while(m>0) { if(m&1) { result=result*base%p; } m=m>>1; base=ba.原创 2022-04-24 17:08:12 · 281 阅读 · 0 评论 -
[洛谷]P1008 [NOIP1998 普及组] 三连击
使用全排列函数把所有不重复的三位数找出来后,用结构体处理排序输出的问题即可。#include<bits/stdc++.h>using namespace std;struct node { int min,mid,max;//符合条件的三个数字 }aa[20];bool cmp(node x,node y){ return x.min<y.min;//每一组数字(3个三位数)每组数字以每组的第一个三位数为基准从小到大排}int main(){ int a..原创 2022-04-20 19:07:27 · 527 阅读 · 1 评论 -
[洛谷]P4913 【深基16.例3】二叉树深度
关于求二叉树最深节点的题,用DFS即可。#include<bits/stdc++.h>using namespace std;struct node{ int l,r; //记录左右节点}a[1005000];int n;int maxone=-1; //最大深度void dfs(int root,int step){ if(root==0) //节点为0 返回 { return ; } maxone=max(maxone,step); //找最大..原创 2022-04-13 16:23:27 · 1025 阅读 · 0 评论 -
[洛谷]约瑟夫问题
#include<iostream>#include<queue>using namespace std; int main(){ int n,outnum,nownum = 1; queue<int>q; cin>>n>>outnum; for(int i=1;i<=n;i++)//初始化队列 q.push(i); wh...原创 2022-04-07 20:23:58 · 379 阅读 · 0 评论 -
[洛谷]P1577 切绳子
这题使用二分来写,先找满足条件能让绳子分成K段及以上的长度,再用二分查找找出那个最大的长度即可。#include<bits/stdc++.h>using namespace std; int a[20000];int max_duan=0;//最长的那段绳子长度int N,K; int tongji(int mid){ int sum=0; for(int j=1;j<=N;j++) { sum += a[j]/mid; //这里求每根绳子除...原创 2022-04-11 21:04:54 · 451 阅读 · 0 评论 -
[洛谷]P1996 约瑟夫问题
这题用队列解决非常方便,且很好理解,详情请看下方代码以及注释。#include<iostream>#include<queue>using namespace std; int main(){ int n,outnum,nownum = 1; //隔outnum个数出队一次,nownum现在隔的数字个数 queue<int>q; cin>>n>>outnum; for(int i=1;i...原创 2022-04-11 21:18:36 · 305 阅读 · 1 评论 -
[洛谷]P1551 亲戚
并查集的模板题,什么都不用改,一模一样的,就不解释了,毕竟并查集的解释太多了,我肯定说不详细。#include<bits/stdc++.h>using namespace std;int pre[5010];int n;void init(){ for(int i=1;i<=n;i++) { pre[i]=i; }}int find(int x){ if(pre[x]!=x) { return (pre[x]=find(pre[x])); .原创 2022-04-11 21:23:04 · 541 阅读 · 4 评论