自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 2021HHU校赛部分题解

2021年河海大学程序设计竞赛(低年级组)(部分题解)

2021-12-08 21:17:32 580

原创 上海理工大学第二届“联想杯”全国程序设计邀请赛-A

题目在这里简单读题,发现这道题就是一个比较单纯的DP,上手写代码。暴力写了一遍,果然TLE了,那就老老实实写DP吧。开始使用pair建立的数组下标映射,但是忘了有相同数字这一茬,WA了两发过后,排序然后用map映射,轻松过题。代码如下:#include<bits/stdc++.h>using namespace std;const int MAX_N = 1e5+10;int n,k,a[MAX_N],Max=0,dp[MAX_N];map<int,int>b;i

2021-06-13 15:07:32 186 3

原创 第十八届同济大学程序设计竞赛暨高校网络友谊赛 c-困难的数学题

题目在这里   找规律的题目,一开始死推都出不来,后面发现其实对于一个式子f(n)来说f(n)=∑f(i)(k<=i<=n-k),递推公式出来了,那就直接暴力!  可惜的这道题不能暴力,会TLE,所以就需要寻找另外的解题方法,那么对于这一类问题就只有两种常见思路了——动态规划和前缀和,很明显的前缀和问题,所以直接推导求出前缀和公式f(n) = sum(n-k)-sum(n-2*k);sum(n) = sum(n-1)+f(n); 那么接下来就是直接写代码了(注意这里需要特判一次k==

2021-05-22 18:52:29 149 1

原创 第十八届同济大学程序设计竞赛暨高校网络友谊赛 A-自适应树游走协议

题目链接在这里这道题目难度不大,思维题。第一个时隙检查0号结点,它有三个后代C、D、H均发起了请求,存在冲突。第二个时隙检查0号结点的左儿子,即1号结点。它有两个后代C、D均发起了请求,存在冲突。第三个时隙检查1号结点的左儿子,即3号结点。它没有后代发起请求,不需要继续向下递归检查。第四个时隙检查1号结点的右儿子,即4号结点。它有两个后代C、D发起了请求,存在冲突。第五个时隙检查4号结点的左儿子,即C。它是发起了请求的叶子结点,因此该时隙将信道分配给C。第六个时隙检查4号结点的右儿子,即D。

2021-05-22 18:37:04 170

原创 第十八届同济大学程序设计竞赛暨高校网络友谊赛 D-平衡的字符串

题目在这里  首先分析题目,给定一个带有0、1、?三种字符的字符串,希望将每一个’?‘修改为0或者1(一开始读错了题目,认为是所有的’?‘都要修改为相同的字符,后面发现没有字符的修改都是随机的),是修改后的字符串中所有长度为k的连续子串内的0和1的数量相同。  啥都不需要管,直接按照顺序做一个大小为k的滑动窗口就行了,判定窗口每一次出去的字符与进入的字符是否相同,如果其中出现’?’,那就判定修改后的窗口三种符号的数量是否符合分配规则。  这里并没有完全证明是正确的,可能是出题人太仁慈,没有构造那种我所

2021-05-22 18:19:07 148 4

原创 河童重工的计算机写题记录

**河童重工的计算机写题记录**简单读题发现,大模拟没的说,预估难度不高。一看语句,感觉细节应该会很多,这里和题解里的Vcode和钾肥两位交流后,发现数据并不是特别难搞,本来以为会出现的一行多语句并没有出现,这只是纯粹的单行单语句。话不多说进入分析环节:首先,记录寄存器R1~R4,E1~E4,flag,VAL,Ret,line共12个寄存器,这边根据前面两位的意见我们使用指针模拟第二部存命令名,这里用了map直接存储,不过有个问题,我发现几种命令实际需要的参数不同,所以需要我们...

2021-05-14 00:20:01 199

原创 Codeforces Round #697 (Div. 3) G - Strange Beauty

题目链接在这里:链接对于这一道题其实主要思想当然是dp了,不过有个问题那就是dp的时候不容易找到dp前的下标所以可以想到的办法利用一个新数组存储下标(ptr数组),dp数组另做处理,这样双线并行即可。而对于本题来说,主要思路当然是找到对于a[i]来说的在j=(1,i-1)最近且最长子序列,子序列满足的条件为a[m]%(a[m-1]-1)==0(当然前提条件是事先对数组进行了排序)那么状态转移方程就变成了 **ans[i]=max(ans[i],ans[j]+1)** 不过可惜的是这样的复杂度是

2021-01-27 14:05:16 121

原创 2020年西北工业大学 I- ACM基地招新大会

题目在这里:题目这道题我半懂不懂,感觉主流就两种理解:一种是ST表维护,一种是使用栈来维护(大佬给我讲了很久的这道题ST原理我还是不会做这道题,所以选择放弃),甚至还有人用vector来做,主要思路就是找到数据中最大的数字,然后单方向进行寻找,直接上代码吧,我解释不清(现在还是一脸蒙):#include <cstdio>#include <stack>using namespace std;const int maxn = 100005;int a[maxn], n,

2021-01-16 20:01:52 626

原创 2020年西北工业大学 J- 不讲武德

题目在这里:题目这道题真就和题目一样不讲武德,看一下这个排序算法#define N 100009int tmp[N];void change(int arr[], int begin, int end){ if (begin >= end) return; int mid = (begin + end) / 2, size = 0; for (int i = mid + 1; i <= end; ++i) tmp[++size]

2021-01-16 19:48:45 212

原创 2020年西北工业大学 H-松果痰抖闪电鞭

题目在这里:题目这道其实就是一道比较简单的找规律题,利用x1和x2推出去,发现推到x5和x6的时候x5=x1,x6=x2,没错又回到原点,这就是一个循环,所以我们只需要推出去5个数字即可(具体我就不推了,自己推一下即可),写的时候只需要注意下输出的是8位小数即可,代码如下:#include<stdio.h>int main(){ double a,b,c[6]; int k,i; scanf("%lf%lf%d",&a,&b,&k);

2021-01-16 19:42:35 271

原创 2020年西北工业大学 F-反复读密码锁

题目在这里:题目这道题开始想了一种直接硬做的方式,不过发现有数据量过大会超过数据和string的范围,所以只能选择找规律。首先,先写一段:01101001100101101001011001101001…根据题目描述可以找到一个4个数字的循环,将这两种四个数字的组合再整合程一个新的符号组合即出现ABBABAAB,没错又是四个符号一循环的规律,那就是规律:一个二进制的递推式,那么我们只需要按照数字推回去即可对于任何一个n来说这个规律都是成立的,所核心代码比较简单的,不过这里需要用到一个函数high_

2021-01-16 19:36:36 242 1

原创 2020年西北工业大学 D-玩具

题目在这里:题目这道题读来感觉很难,也确实有一种相对应的的正解(我觉得是权值线段树,可惜我不会),在仔细读题发现这道题的真正意思其实就是把整个数组当做一个区间,里面的区间就是他的子区间,在一定程度上可以认为母区间的出现次数最多的数,在一些子区间里也是出现次数最多的数(也就是我们常数的一列数字的众数),所以代码实现就挺简单了,对数据做一些简单的处理即可:#include <stdio.h>int a[100010],c[100010];int main(){ int n,max = 0

2021-01-16 19:21:16 68

原创 J-母牛烃

题目链接认真读一下题目,发现题目挺难?错,并不难,因为这道题由于答案的多解性,判题机应该选择的是动态判题,也就是每个人答案其实可以不同,给定的数据也可能不同:所以就考虑怎么做到让同一个碳原子上的势力值不同吧:可以想到的是我们分别给1-n的碳原子,随机赋值1~n内不重复的数字,这样也就出现几种不同的判题法。第一种:从开始进行k的赋值是分别将n,1.n-1.2,n-3,3……赋值给主链上第i个碳原子以及它所对应的支链碳原子。第二种:从开始进行k的赋值是s=k/2分别将s,s+1,s-1,s+2,s-2…

2020-12-06 23:43:42 136

原创 L-母牛上柱

题目链接真水题,会立体几何即可,比较经典的蚂蚁爬杆,上代码:#include<stdio.h>const double pi=3.1415926535;int main(){int a,b,r,h,t,i;double m,n;scanf("%d",&t);for(i=1;i<=t;i++){ scanf("%d%d%d%d",&a,&b,&r,&h); if(a>b){ if(a-b>180){n=((3

2020-12-06 19:46:18 158

原创 G-排解忧伤

题目链接一道典型的贪心题目,可以考虑到的就是对所有人的期待座位排序,最后逐个进行计算,贪心进行到底,为了我自己偷懒用了c++的sort快排,用c的话也可以自己写一个快排。另外,大佬用了一个特别巧妙的桶来做这道题,代码长度及难度骤降。下面是我的做法:#include<bits/stdc++.h>using namespace std;const int MAX_N = 100010;int n,m,a[MAX_N],k[MAX_N];int main(){scanf("%d%d

2020-12-06 19:35:41 135 2

原创 A-肥猪的钢琴床

题目:读题即知此题为BFS系列题目,用动规即可,考虑所有可能出现的情况,发现大题分为三种:dp[i][0]=dp[i-1][0]+(a[i]-‘0’);dp[i][1]=min(dp[i-1][0]+‘1’-a[i],dp[i-1][1]+‘1’-a[i]);dp[i][2]=min(dp[i-1][1]+a[i]-‘0’,dp[i-1][2]+a[i]-‘0’);第一个转移好理解,第二个以及第三个枚举所有情况,求出最小的值,注意此处使用了BFS罕见的按排dp,需要好好理解一下,上代码:#inc

2020-12-06 19:20:30 310

原创 K-很基础的模拟题

题目:真就可以纯模拟过题,直接按照题目给定条件模拟即可,不过需要注意一下边界条件及特殊情况,这里也就第三种操作会出现特殊情况:当从输入的数一直到最后一项全是相同数的时候可能会出现数组越界的情况,还有一个如果数组被删除为空数组的情况,不说了上代码:#include<stdio.h>int main(){long long int n,p,i,j,l,d[110]={0};long long int a,b,c;//管他呢,我就要开longlongscanf("%lld%lld",&a

2020-12-06 19:04:45 400

原创 F-合并石子

题目:经典题目改编,原题可以在洛谷上搜到洛谷P1880 石子合并考虑状态转移枚举所有情况,变成一道动规,考虑所有情况加和即可,代码(嫖的超简洁代码):#include <bits/stdc++.h>const int mod = 1000000007;using namespace std;const int N = 2010;long long f[N],n,C[N][N], d[N];void init() { C[0][0] = 1; for (int i

2020-12-06 18:52:38 208

原创 E-枚举求和

题目:又是一道找规律题,知道i,j的最小公倍数与最大公因数之积等于i*j,那就考虑m,n存在多少个k的倍数,两者相乘即为答案,代码极其简单,主要是思路:#include<stdio.h>int main(){int n,m;long long int i,j,k,t,l;scanf("%d",&t);for(l=1;l<=t;l++){ long long int count; scanf("%d%d%d",&n,&m,&k); co

2020-12-06 18:44:34 419

原创 D-中学数学题

题目:所谓的后导0,想一下10进制转n进制是的转法,其实就是求n!是p的多少次方,所以简单求一下即可,代码:#include<stdio.h>int main(){ int t; scanf("%d",&t); while(t--){ int n, p; scanf("%d%d",&n,&p); int ans=0; while(n>=p){ ans+=n/p; n/=p; } printf("%d\n",ans);

2020-12-06 18:40:13 179

原创 2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)-C 母牛的俄罗斯轮盘赌

题目:找规律题,推导出:n=1->pign=2->cown=3->pign=4->pign=5->cown=6->pign=7->cown=8->pign=9->pign=10->cow后面的规律基本上就知道了,直接算上代码:#include<stdio.h>int main(){ int t,n; scanf("%d",&t); while(t--){ s

2020-12-06 18:34:15 398 4

原创 2020年广东工业大学第十届文远知行杯新生程序设计竞赛(同步赛)-B 拯救小a

题目水题一道没什么难度:#include<stdio.h>#include<string.h> int main(){char c;int count=0;while((c=getchar())!=EOF){ if(c=='.'){ printf("%d",count); break; }else if(c=='a'){ count++; }}return 0;}

2020-12-06 18:29:03 306

原创 洛谷 P1005 矩阵取数游戏

题目:一道特别简单的题,没啥好说,就更新状态贪心就行了,暴力就能AC系列,不过需要考虑一个高精度的问题,第一遍写的简单程序只过了20%,后面考虑了一下高精度就过了:#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>using namespace std;const int max_n = 85, mod

2020-12-01 23:25:18 77

原创 洛谷p1010 幂次方

题目:这道题其实就是一个简单的进制转换问题,分析一下可能出现的各种情况即可这里需要注意的就是数字2输出的就是2,而很多算法可能会输出2(2(0))也就是2^1,处理细节到1,2还有3即可,直接上代码:#include<stdio.h>#include<math.h>void search(int x)//简单的递归{int i=0,m;if(x==1){//分析0,1,3可能会出现的情况 printf("2(0)");}else if(x==2){ printf(

2020-12-01 21:22:59 199

原创 hhuoj 1023 闰年-2

题目:题目描述输出 l <= y <= r 的闰年年份 y 的个数输入第一行一个正整数 T,表示数据组数 ( 1 <= T <= 1000000 )接下来每一行两个正整数 l,r ( 1 <= l <= r <= 5000 )输出每一行一个整数 s,表示l年到r年有多少闰年年份首先读题,应该想到的就是对于每一组输入的数据遍历答案,但是对于1000000*5000的数据量来说,对于题目的限定的1sec的时间肯定超了,暴力求解不是这一道题的最佳方案。其实题

2020-11-25 17:00:28 142

原创 hhuoj 1062 死亡笔记

问题:题目描述Kajitsu发现了一个神秘的笔记本,上面记录写着n个名字。Kajitsu想知道,每个人的名字出现了几次。注意:本题输入不给定n,请自行判断输入末尾。输入输入仅一行,为n个名字,用空格隔开(n≤100,人名长度≤10)输出一共n行按照字典序顺序从小到大,每行为人名与对应出现次数,用空格隔开(字典序:先按照第一个字母、以 a、b、c……z 的顺序排列;如果第一个字母一样,那么比较第二个、第三个乃至后面的字母。如果比到最后两个单词不一样长(比如,sigh 和 sight),那么

2020-11-25 14:25:25 103

原创 HHUOJ 1420 看电视(第一次写见谅)//扩展算法:区间调度问题

***HHUOJ 1420 看电视(第一次写见谅)//扩展算法:区间调度问题***问题:暑假到了,小明终于可以开心的看电视了。但是小明喜欢的节目太多了,他希望尽量多的看到完整的节目。现在他把他喜欢的电视节目的转播时间表给你,你能帮他合理安排吗?输入输入包含多组测试数据。每组输入的第一行是一个整数n(n<=100),表示小明喜欢的节目的总数。接下来n行,每行输入两个整数si和ei(1<=i<=n),表示第i个节目的开始和结束时间,为了简化问题,每个时间都用一个正整数表示。当..

2020-11-19 23:52:01 152

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除