- 博客(84)
- 问答 (3)
- 收藏
- 关注
原创 hdu2041超级楼梯 斐波那契数/dp/搜索
当前在1,可以走一级到2,或者走两级到3,到2的时候可以走一级也可以走两级,以此类推12 33 4 4 54 5 5 6 5 6 6 75 6 6 7 6 7 7 8 6 7 7 8 7 8 8 9…可以发现,每季楼梯都可以通过上一级楼梯+1走到当前楼梯,后者前面第二级+2走到当前楼梯,因此,第n级的状态是有上一级和上两级的状态转移而来,得到Fn=Fn-1+Fn-2,可以用dp做这道题(dp的话前面这个公式就是状态转移方程),也可以发现这是斐波那契数的规律,可以用矩阵乘法写斐波那契过这题(虽然
2021-04-29 21:39:11
220
原创 蓝桥杯2015初赛手链样式 枚举全排列/数学排列组合
题目链接方法一:暴力枚举全排列并进行去重,输出去重后的方案数#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<string>#include<cmath>#include<map>using namespace std;map<string,int> mp;int main(
2021-04-14 08:13:56
188
原创 acwing202.最幸运的数字 数学推理 欧拉定理
题目链接思路:连续8组成的数字的表示方法:8*(10^k-1)/9则8*(10^k-1)/9要能整除n则8*(10^k-1)要能整除9*n由于8和9互素,则(10^k-1)能整除9n则10^k = 1 (mod 9n)则
2021-04-13 16:05:59
239
原创 acwing188武士风度 BFS暴搜
题目地址思路:BFS搜索最短路,这题和普通迷宫BFS暴搜不同的是这道题的偏移量不是按照普通的上下左右走,而是按照马走日,所以偏移量要自己处理一下,画图可以知道有8个方向#include<iostream>#include<cstring>#include<queue>#include<algorithm>#include <cmath>#define PII pair<int,int>using namespace
2021-04-12 15:57:13
143
原创 计蒜客2019蓝桥杯省赛B组模拟赛一
比赛地址A.结果填空:钟表注意,冒号也要是英文状态下的#include <stdio.h>int main() { printf("%s\n", "07:55:41"); return 0;}B.结果填空:青蛙爬井
2021-03-29 19:36:34
114
原创 蓝桥2018C++组递增三元组
思路:排序,对b利用二分用一个数组存下b中每个元素对应的c中大于该元素的个数,处理前缀和,枚举a的元素,二分找到第一个大于ai的b中的下标j,显然有bj~bn都会大于ai,对此时的ai满足的三元组个数显然是bj–bn中个数前缀和#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm> using namespace std
2021-03-08 20:59:13
172
原创 Codeforces1291B Array Sharpening思维+构造
题目链接题意:给出一个数组问经过任意次操作(可任意选择一个数将其减小到一个非负数)后该数组是否可以变成a0<a1<a2<a3<…ak+1>ak+2>…>an-1的形式,是输出Yes,否则输出No思路:思维+构造,既然每个数可以减小到非0那就干脆让这个序列变成0,1,2,3,…,k,k-1,k-2,…0的形式,开始的时候老想不明白最高峰怎么确定,如果贪心的话每次走到一个最大的数就停或者走到最大的数停这样都不行,因为最高峰可能会变,那么就可以通过构造这样形式,对a[
2021-02-24 07:06:35
189
原创 Codeforces1372B Omkar and Last Class of Math思维
题意:给出n,输出两个数a和b使得a+b=n且lcm(a,b)最小思路一:开始暴力for循环打表找最小值看规律,猜了一发素数,水过了hh#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;typedef long long ll;const int N=1e6+10;
2021-02-21 18:58:24
168
原创 Codeforces1418B Negative Prefixes
题目链接题意:给定一个序列,对应为1的位置不可移动,对应为0的可以互相交换,定义k为使得小于0的最大前缀和对应的元素个数,要使得k最下输出交换后的序列思路:贪心,要让k尽可能的小,那么就要让前面的前缀和尽可能的大,也就是让大的值尽可能的放前面即可#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>using nam
2021-02-16 17:28:08
139
1
原创 Codeforces1443B Saving the City
题目链接思路:思维题,对于两端连续1中间的0进行计数,0的个数num0与b的乘积即此时将中间连续0填满所需的消费,如果此时的消费小于直接爆破所需的消费a则采取填0爆破的方式,即答案ans+=num0*b,否则直接进行爆破,ans+=a,注意下字符串开头的连续0段是无效的,开始时直接过滤掉,对于第一个连续1段,要先加上,因为上述操作是在已经出现连续1段的情况下进行的,漏了最开始的连续1段,因此要加上去,如果没有第一个连续1段则不加ac代码 46ms:#include<iostream>
2021-02-13 17:23:27
154
原创 2021牛客寒假算法训练营1
比赛地址A 串解法一:数学递推#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<algorithm>using namespace std;typedef long long ll;const ll mod=1e9+7;const int N=1e6+10;ll dp[N];ll quick_pow(ll x,ll
2021-02-05 13:13:42
1911
原创 Codeforces1363 A. Odd Selection
题目链接题意:从数组中选x个数使得这x个数加起来的总和是奇数思路一:暴力枚举分析:统计奇数和偶数个数,x个数一定是由a个偶数和x-a个奇数组成,枚举偶数个数,如果偶数总个数不小于当前枚举的a,且奇数个数不小于x-a,同时x-a也是奇数,此时符合条件#include<iostream>#include<cstring>#include<cmath>#include<algorithm>using namespace std;bool sol
2021-01-30 23:28:52
188
原创 TeacherMa专场题解
比赛地址A 不讲武德思路:高精度加法,java大数类应用import java.util.*;import java.lang.*;import java.math.*;public class Main{ public static void main(String[] args){ Scanner in=new Scanner(System.in); int t=in.nextInt(); for(int i=0;i<t;i++
2020-12-09 20:27:04
115
原创 2020(ICPC)江西省程序设计竞赛正式赛
B 签到题#include<iostream>#include<cstring>#include<cstdio>using namespace std;int main(){ int t; cin>>t; while(t--){ int n,m; cin>>n>>m; if(m*(m+1)/2<=n)puts("possible");
2020-11-18 17:21:53
2337
原创 2020牛客国庆集训day4
A 模拟题#include<iostream>#include<string>#include<cstring>#include<algorithm>using namespace std;string s0,sn;const int N=1e5+10;int a[N],b[N];//字母0,数字1bool solve()//false- true+{ int i=0,j=0; for(;i<s0.length(
2020-10-16 22:06:55
97
原创 EOJ Monthly 2020.9华东月赛
A题意:给定起点s,从s开始每隔x秒停一次,求经过多少次恰好停在给定区间[l,r]内思路:根据到达该区间所需的次数判断,如果r/x*x>=l也就是经过r/x即可跳进[l,r]区间此时只需返回跳进该区间的最小次数(l+x-1)/x即可;否则循环继续遍历,直到符合条件或者l>r就跳出#include<iostream>#include<algorithm>using namespace std;typedef long long ll;ll solve(l
2020-10-05 22:51:52
150
原创 牛客国庆集训赛day2
比赛地址A 约瑟夫环#include<iostream>using namespace std;int main(){ int n,m; while(cin>>n>>m,n!=0){ int s=0; for (int i = 2; i <= n; i++)s = (s + m) % i; cout<<s+1<<endl; } return 0;}
2020-10-02 17:20:13
108
原创 第十七届中国计量大学程序设计竞赛(同步赛)
比赛地址B题意:求使得两个字符串相同的最小操作次数思路:分两种情况,第一种如果原来sb就是全0字符串,那么只需要打击一次空格即可操作完成,此时次数最少;第二种通过当前字符对应的已经翻转的次数及当前字符与目标字符异同来判断是否需要进行翻转,分奇数次和偶数次情况,具体见下方代码注释,这里还需要注意一下,还得判断一下通过单击空格以后进行对应字符串的翻转匹配是否会比前一种得到的操作次数更少,更少的话就采取这种,否则去前一种更优//前面cnt是奇数那当前卡片状态肯定是已经改变了的,如果这个时候sa=sb,毫无
2020-09-29 09:39:40
215
原创 UVA 11881
题意:找出使得等式值为0的irr并输出思路一:二分加线性求等式的值#include<iostream>#include<algorithm>#include<cmath>#include<cstdio>#define eps 1e-8using namespace std;const int N=15;double CF[N];int main(){ int t; while(~scanf("%d",&t)&
2020-09-23 21:21:51
97
原创 uva11879 multiple of 17 -- 高精度大数取模
思路:截取字符串除了最后一位数作为大数,对17进行取模,如果大数能整除17且最后一位数的5倍也能整除17打印1否则0#include<iostream>#include<algorithm>#include<string>#include<vector>using namespace std;//大数取模int mod(vector<int> &v,int b){ int r=0; for(int i=v
2020-09-17 09:22:51
183
原创 hdu1237 简单计算器 --- 栈
题目给出的是中缀表达式,中缀表达式是我们习惯上用的计算表达式,人脑计算方便快速,但是计算机不然,计算机计算波兰和逆波兰表达式都很方便,但对中缀表达式通常需要转化成前缀或后缀表达式才方便计算。举例:4 + 2 * 5 - 7 / 11转化成逆波兰的形式是:4 2 5 * + 7 11 / -对于人脑,转化过程是对表达式按优先级加括号,对每层括号将相应的操作符移到后面(移到后面是逆波兰,移到前面是波兰),最后一层一层去掉括号即得所求表达式((4+(25))-(7/11))–>((4+(25))(7/
2020-09-01 23:06:01
112
原创 hdu1023 Train Problem II ---卡特兰数 压位高精&Java大数
典型的卡特兰数应用题,直接求组合数C(2n,n)-C(2n,n-1)即可,但是要注意,由于这道题n的范围是n<=100,很容易爆longlong,如果是用c++写的话需要写高精度,但是如果用java的话就可以直接调用大数类就行java版本ac 327ms:import java.util.*;import java.lang.*;import java.math.*;public class Main{ public static void main(String[] args){
2020-09-01 19:54:02
150
原创 牛客2020年七夕节比赛题解
比赛地址A直接打印选择题答案就行#include<iostream>using namespace std;int main() { printf("D\nA\nABCD\nD\nA\nC\nAB\nA\nB\nC\nB\nD\nD\nA\nABC\nD\nB\nD\nD\nD\n"); return 0;}B思路:规律题(参考ac代码)#include<cstdio>typedef long long ll;ll solve(ll n
2020-08-26 19:48:26
201
原创 CodeForcesRound665div2
C Mere Array思路一:另开一个数组b用来存储能够整除a数组最小值minv的元素的下标,数组c用来存储能够整除minv的元素的值,对c数组进行sort升序排列,利用b存储的下标把升序排列后的值放回a数组,最后进行一次遍历检查a数组此时是否符合条件ac 342ms#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std
2020-08-23 09:37:44
191
原创 CodeForces Round #661 div3
A.ac 46ms#include<iostream>#include<cstdio>#include<algorithm>#include<map>#include<cmath>using namespace std;int main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int t; cin>>t; while(t-
2020-08-21 19:47:21
79
原创 幼儿园的战争----并查集
ps:谢谢l学长帮忙讲解这道题,以及参考的这位博主的文章,真的写的很好原题链接分析:除了考察并查集的基本操作以外,这里的删除操作以及集合数的返回和集合大小都需要注意一下技巧操作一"query":很明显是返回集合数,那么如何返回集合数?显然只需要开一个全局变量ans来维护,初始让他为n,然后随着每次操作,当集合数增加时ans++,减少时ans–,这样的话每次query只需要直接打印ans的值就可以,很方便。操作二“fight”:考察的是使用并查集对集合进行合并,但这里要注意一下,题目说了,人数多
2020-08-21 15:43:28
192
原创 poj1002 用map操作为什么wa?
这道题直接用map操作的,开始没用迭代器遍历,直接auto然后for一下,但是一直提示编译错误,只好换成迭代器,但是为什么wa掉了呢?自己测试也没问题啊,输出格式注意了,QZ和-都过滤掉了,没有重复行也考虑了,究竟wa在哪里了?请赐教#include<iostream>#include<algorithm>#include<cstring>#include<string>#include<map>using namespace std
2020-08-21 10:21:34
218
2
原创 北京师范大学第十六届程序设计竞赛决赛-重现赛(重现赛)
比赛地址A.#include<iostream>#include<cstring>#include<string>#include<cstdio>using namespace std;int main(){ int t; cin>>t; while(t--){ int n,cnt=0; cin>>n; string s; for
2020-08-21 10:16:53
143
原创 哈尔滨理工大学第七届程序设计竞赛决赛(网络赛-高年级组)(重现赛)
A#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;const ll mod=1e9+7;/*ll quick_mul(ll x,ll y){ ll ans=0; while(y){ if(y&1)ans=(ans+x)%mod
2020-08-20 18:53:05
148
原创 哈尔滨理工大学软件与微电子学院程序设计竞赛(同步赛)(重现赛)
比赛地址A.思路:模拟#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;int main(){ int v1,v2,T,s,L; cin>>v1>>v2>>T>>s>>L; if(v1<v2)cout<<"Ho
2020-08-20 16:36:35
227
原创 湖南大学程序设计竞赛新生赛(重现赛)
比赛地址A思路:直接递归求斐波那契然后求#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;const int N=50;ll F[N];ll fib(){ F[1]=F[2]=1; for(int i=3;i<=45;i++){
2020-08-20 10:27:03
94
原创 湖南师范大学2018年大学生程序设计竞赛新生赛(重现赛)
比赛地址A.#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;const int N=3e3+10;int a[N];int n,k;bool flag=false;void solve(){ for(int i=0;i<n;i++){ for(int j=0;j<n
2020-08-19 18:53:28
146
原创 牛客练习赛66题解
比赛地址A.平方数思路:暴力打表#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cmath>using namespace std;typedef long long ll;const int N=1e6+10;ll a[N];void get_sqrt(int n){ for(ll i=1;i&l
2020-08-14 16:49:55
147
原创 玛朵莉与宇宙 暴力枚举+前缀和
思路:看题目数据范围,每个ai都是小于10的,那么直接暴力枚举前缀和的话是1e6的,不会超时,因此维护一个前缀和数组,对每个前缀和,枚举小于他的完全平方的个数,再用一个数组维护前缀和的完全平方的个数的值就可以了#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const i
2020-08-13 20:22:29
622
原创 哈尔滨理工大学第七届程序设计竞赛决赛(现场赛-低年级组)(重现赛)
比赛地址A.#include<iostream>#include<cstring>using namespace std;typedef long long ll;int main(){ ll a,b; while(cin>>a>>b){ cout<<a+b<<endl; } return 0;}B.#include<iostream>#inclu
2020-08-13 19:11:36
169
原创 数学考试 思维+前缀和
题目链接思路:用前缀和维护一个数组sum,并枚举每个k范围内的元素和的值,sum[i]-sum[i-k],更新每次的区间最大值,同时枚举下一个k区间内的sum值,更新最大值,输出即可#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#define INF 0x3f3f3f3fusing namespace std;typedef long long l
2020-08-13 10:44:32
119
原创 生物节律 中国剩余定理
题目链接思路:很容易可以看出用中国剩余定理,又23,28,33三个数互质,因此选用互素版的中国剩余定理ac:#include<iostream>#include<algorithm>#include<cstring>#include<cstdio>#include<cmath>using namespace std;typedef long long ll;const int N=3;int m[N]={23,28,33}
2020-08-12 15:20:28
227
1
原创 nowcoder 粉樱花之恋 矩阵乘法+递推
原题地址思路:递推构造矩阵+矩阵乘法分析:由第一次为2,第二次为4,第三次为7,第四次为12,第5次20,很容易可以发现,第n次恰好是斐波那契数的第n+3项-1,由Fn=Fn-1+Fn-2直接构造矩阵{{1,1},{1,0}},取n+3次幂后-1即得答案,这道题时间卡的比较紧,一些其他的思路时间复杂度稍大一点就过不了了ac 代码:#include<iostream>#include<cstring>#include<cstdio>#include<al
2020-08-11 23:47:42
160
原创 常州大学新生寒假训练会试(重现赛)
比赛地址A.思路:直接STL调用string类库函数就行#include<iostream>#include<cstring>#include<string>#include<algorithm>using namespace std;int main(){ string s; cin>>s; reverse(s.begin(),s.end()); for(int i=3;i<s.leng
2020-08-11 19:21:24
188
原创 西北大学第四届程序设计竞赛新生赛(同步赛)(重现赛)
A.思路:容斥原理#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;typedef long long ll;const ll N=1e9;ll gcd(ll a,ll b){ return b==0?a:gcd(b,a%b);}int main(){ ios::sync_with_s
2020-08-09 19:52:42
101
空空如也
为什么两份代码一个思路一个wa一个ac?
2020-07-21
为什么题目给的测试案例和自己的案例能过却总是wa?
2020-06-02
hdu1272为什么我的代码本机测试能过提交却老是wa?
2020-04-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人