![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
日常刷题
离开那天
这个作者很懒,什么都没留下…
展开
-
2020牛客多校第一场A题B-Suffix Array(数据卡在1%的原因)
B-Suffix Array题意思路特别注意代码B-Suffix Array题意给定一个字符串长度和字符串,已知B函数定义为说人话就是从字符串第一个字符开始,出现的第一个a或b对应的下标的b数组为0,否则就是离前面最近的和自己相同的字符的距离。如5abaab它的b数组就是00213这就是说每个字符串都有对应的b数组现在我们要求你求出给定字符串的所有后缀字符串的b数组,并对它们进行字典序从小到大排序。我们称后缀i是从i开始的字符串后缀输出字典序排序第一的是后缀几,排序第二的是后缀几原创 2020-07-16 12:51:31 · 228 阅读 · 0 评论 -
poj1101 openjudge 2802:小游戏
那真的是退化了一个简单的bfs都调了这么久。。。题意是有h*w的矩阵里面有空格也有X然后指定两个坐标(这两个坐标都一定有X)问你相连这两个点最短的segments,就是连起来的线段数,(并不是步数,你看看图就明白,一开始我也不是很理解样例)真的毒瘤题一开始就想用bfs走一遍然后记录,就想着应该bfs走的最短路径应该就是最短segment,没想到wa了然后看了discuss的确毒...原创 2020-04-08 12:23:26 · 481 阅读 · 0 评论 -
牛客小白赛22
A 操作序列 B 树上子链 C 交换游戏 D 收集纸片 E 方块涂色 F 累乘数字 G 仓库选址 H 货物种类 I 工具人 J 计算A+B原创 2020-02-23 10:04:26 · 139 阅读 · 0 评论 -
牛客小白赛22 G 仓库选址(容斥/前缀和
这题要求n*m矩阵中选择一个点,使得其他点到这个点的哈密顿距离之和最小题解用的是O(n4)我也是很无语这里可以用O(2)来做做出无权值的二维前缀和,再分别作出以x和y坐标为权值的二维前缀和 for (i=1;i<=n;i++){ for (j=1;j<=m;j++){ scanf ("%d",&a[i][j]); s[i][j]=a...原创 2020-02-23 10:02:45 · 258 阅读 · 0 评论 -
牛客小白赛22 B.树上子链 (树的直径)
先把别人的博客摆上来https://mp.csdn.net/console/article今天有点晚了,明天更新转载 2020-02-22 22:45:53 · 212 阅读 · 0 评论 -
honoka和格点三角形
本题先考虑两边都平行于xy轴的,只需要找1*2矩形数量 *4本人以n作为行数,m作为列数再考虑只有一条边平行x轴的:1、考虑底为2,高为1那你想象一下x轴为底,可以有(m-2)条吧然后以y轴为高,可以有(n-1)条吧然后你的不做底的那个顶点可以随便移动吧,有m-1-1的方法数,后一个-1是因为之前有一个2条边都平行的重复了故为(m-2) * (n-1) * (m-2)同理后面的都是...原创 2020-02-04 20:25:27 · 460 阅读 · 4 评论 -
#596 div2 A. Forgetting Things
很迷惑a+1=b给出a和b的第一位让你猜a和b的数若无解就是-1唯一的坑点在于一组数据9 1输出9 10#include<bits/stdc++.h>using namespace std;#define ll long longinline ll read(){ ll X=0,w=1; char c=getchar(); while...原创 2019-10-31 22:21:51 · 145 阅读 · 0 评论 -
1077 Kuchiguse (20 分)
一题基础的字符串处理看题目戳这最容易出错的应该是从后面开始找共同后缀时 一旦出现不同立即break此外推荐一下reverse这个algorithm里的东西很好用如果是stl里的容器(比如string,vector)那么就用迭代器string s="abcd";reverse(s.begin(),s.end());当然部分容器也可以使用下面的方法如果是普通的数组int d[]...原创 2019-05-01 12:21:11 · 232 阅读 · 0 评论 -
1082 Read Number in Chinese (25 分)
这字符串处理比较难了看题目戳这这个思路是算法笔记上机训练里的不然用我的方法两百行模拟会死人的就是边读边输出的方法注意空格的输出#include<bits/stdc++.h>using namespace std;string num[]={"ling","yi","er","san","si","wu","liu","qi","ba","jiu"},wei[]={"Sh...原创 2019-05-01 15:40:57 · 427 阅读 · 0 评论 -
1062 Talent and Virtue (25 分)
一道排序题看题目戳这我用四个数组模拟四个类别的人只有一个小细节我的cmp函数里的名字按升序排列时这样写就过了return strcmp(x.name,y.name)<0;而return strcmp(x.name,y.name);省去<0则会发生段错误和超时很奇怪我给不出解释以下是通过代码#include<bits/stdc++.h>using na...原创 2019-05-01 16:24:42 · 221 阅读 · 0 评论 -
1021 Deepest Root (25 分)(并查集+图的dfs)
很好的图遍历的入门题看题目戳这主要是这个图有两个性质1、如果图有n个节点,有n-1条边,且只有一个连通块,那么这个图就是树2、符合1的图,从任意一个节点遍历,所能获得的最深节点设为A集合(最深的意思就是遍历不下去的那种点,想不明白继续举例想),然后再从A集合里的任意一个点遍历一遍,所能获得的最深节点设为B集合,那么A∪B的所有节点都是所要的答案。(证明见算法笔记上机训练,其实我也没看证明...原创 2019-05-20 10:21:58 · 170 阅读 · 0 评论 -
洛谷 线段树1
线段树模板看题目戳这多打几遍就好了记住define后面不能加分号aaaaa#include<bits/stdc++.h>#define ll long longusing namespace std;struct node{ int l,r; ll sum,add; #define sum(x) tree[x].sum #define add(x) tree[x]....原创 2019-05-10 08:58:35 · 188 阅读 · 0 评论 -
1013 Battle Over Cities (25 分)
一道图论水题考虑dfs?还有并查集方法?#include<bits/stdc++.h>using namespace std;const int N=1e5;vector<int> v[N];bool vis[N];void dfs(int x,int t){ if(vis[x]||x==t){ return; } vis[x]=1; for(i...原创 2019-05-17 17:25:53 · 186 阅读 · 0 评论 -
牛客训练赛48 华华送奕奕小礼物(二分+数学)
给出两个数组a,b,再给出l,rd数组满足d[i][j]=a[i]*b[j]求d里有几个子矩阵的值v满足l<=v<=r看题目戳这这个题很巧妙我一开始看到的时候感觉是容斥?自己也只是看过类似的二维前缀和书上讲过然后发现穷举要O(n^4)果断放弃了看了题解才知道是用一定的公式来解这个work其实就是ll ans=(ll)(lower_bound(c,c+len+1,l...原创 2019-05-18 15:39:10 · 162 阅读 · 0 评论 -
日更2019.7.3(2017广西邀请赛 HDU 6188 Duizi and Shunzi,covering)
前几天一直在忙小学期arduino和打比赛训练现在补几题题意:给你一堆牌,有两种组合方式,问最多能组合成多少个对子和顺子(同牌面的2张可以组成一个对子,连续牌面数字的3张可以组成一个顺子)这个贪心策略就是1、尽可能多的产生对子;2、在线性判断中,假设现在的牌面数字为i的存在1张多余的组不成对子的,那么判断后面i+1的牌数是否为奇数,若是则继续,最后判断数字i+2的牌是否存在,若是则答案+...原创 2019-07-03 22:55:17 · 142 阅读 · 0 评论 -
2019.6.30
本月最后一天明天就去玩单片机了昨天看到个带正负号的大数给出2个大整数A,B,计算A+B的结果。输入第1行:大数A第2行:大数B(A,B的长度 <= 10000 需注意:A B有可能为负数)输出输出A + B输入样例68932147586468711654886输出样例537643802472纯当练练码力了#include<bits/stdc++.h>...原创 2019-06-30 21:50:02 · 116 阅读 · 0 评论 -
1035 Password (20 分)
又是一题卡输出看题目戳这注意看懂题目,如果只有多个不修改printf(“There are %d accounts and no account is modified”,n);如果一个printf(“There is 1 account and no account is modified”);注意is和are,account和accounts代码如下#include<bi...原创 2019-05-01 11:59:36 · 135 阅读 · 0 评论 -
1073 Scientific Notation (20 分)1024 科学计数法 (20 分)
一道比较复杂的字符串处理看题目戳这首先这个输入的一定是个科学计数法而且一定是第一位数之后才有小数点所以就比较好处理我的代码略微繁琐稍微改进一下可以让程序更为健壮里面用了string的find函数find可以用于很多stl容器中希望各位去了解一下这么好用的东西像下面的代码 string str="abcde"; int pos1=str.find("de"),pose=str...原创 2019-05-01 11:40:15 · 188 阅读 · 0 评论 -
1005 Spell It Right (20 分)
一道简单的入门字符串处理看题目戳这原创 2019-05-01 10:45:57 · 212 阅读 · 0 评论 -
1016 Phone Bills (25 分)
很难的模拟题排序就算了吧。。。这题和模拟比起来排序算什么我用了一个玄学的map我自己都不相信他起作用了这个map很关键省了很多事代码如下下面附了两组数据你们可以试一下还有这个公式挺难推的#include<bits/stdc++.h>using namespace std;struct node{ char name[25]; int mon,day,h,...原创 2019-05-01 21:27:05 · 226 阅读 · 0 评论 -
1025 PAT Ranking (25 分)
不是很难的模拟排序题看题目戳这主要就是看清题目意思输出的时候记得加上总人数我老是忘掉这个代码如下#include<bits/stdc++.h>using namespace std;struct node{ char name[30]; int sco,num,lr,fr;}p[30005],temp[305];bool cmp(node x,node y){...原创 2019-05-01 21:53:01 · 151 阅读 · 0 评论 -
1028 List Sorting (25 分)
一道排序水题看题目戳这#include<bits/stdc++.h>using namespace std;struct node{ char name[10],id[10]; int sco;}p[100005];bool cmp1(node x,node y){ return strcmp(x.id,y.id)<0;}bool cmp2(node x,n...原创 2019-05-02 11:25:44 · 171 阅读 · 0 评论 -
1055 The World's Richest (25 分)
排序题看题目戳这坑点还得看题目超时的话是没划100的范围#include<bits/stdc++.h>using namespace std;struct node{ char name[10]; int age,pro;}p[100005];bool cmp(node x,node y){ if(x.pro!=y.pro){ return x.pro>...原创 2019-05-02 12:12:07 · 135 阅读 · 0 评论 -
1075 PAT Judge (25 分)
又是一道模拟排序看题目戳这注意这个题的序号和下标要从1开始坑点不多一遍过代码如下#include<bits/stdc++.h>using namespace std;struct node{ int p[6],sum,id,r,sol; bool flag,vis[6];}user[10004];bool cmp(node x,node y){ if(x.su...原创 2019-05-02 17:19:16 · 123 阅读 · 0 评论 -
1083 List Grades (25 分)
一道排序水题看题目戳这没啥坑点了吧代码如下#include<bits/stdc++.h>using namespace std;struct node{ char name[11],id[11]; int sco;}p[100005];bool cmp(node x,node y){ return x.sco>y.sco;}int main(){ in...原创 2019-05-02 17:32:28 · 170 阅读 · 0 评论 -
1080 Graduate Admission (30 分)
较难的排序题看题目戳这果然有30分的水准其实题目最重要的是排名的处理以及录取进去的排名判断代码如下#include<bits/stdc++.h>using namespace std;struct node{ int ge,gi,zhi[6],sum,id,r;}p[40006];bool cmp(node x,node y){ if(x.sum!=y.sum)...原创 2019-05-02 18:43:00 · 343 阅读 · 0 评论 -
1095 Cars on Campus (30 分)
这个大模拟写的爽呀看题目戳这不愧为30分甲级题百行代码精髓在于map寻找成对的数据和map累加nowcar注意输入的询问时间一定是递增的所以这里要省一下时间,不然会t代码如下#include<bits/stdc++.h>using namespace std;struct node{ char id[10]; int h,m,s,op,t;}p[10004];...原创 2019-05-03 13:26:29 · 607 阅读 · 0 评论 -
1084 Broken Keyboard (20 分)1029 旧键盘 (20 分)
散列?就是桶的思想吧看题目戳这最近用map上了瘾代码如下#include<bits/stdc++.h>using namespace std;map<char,bool>m;int main(){ string a,b; int fpa=0,fpb=0; cin>>a>>b; while(fpa<a.size()){ ...原创 2019-05-03 16:23:06 · 111 阅读 · 0 评论 -
1019 General Palindromic Number (20 分)
pta里的一道进制转换的水题一开始想用string 直接累加过去结果发现b是1e9的范围然后就想到可能超过10的数不是用字母代替,而是用数字如11 12来代替所以用string的方法是行不通的但是我想直接使用string可向下push的特性,就像vector一样#include<bits/stdc++.h>using namespace std;bool fun(str...原创 2019-04-29 11:17:07 · 165 阅读 · 0 评论 -
1027 Colors in Mars (20 分)
又是一题甲级水题单纯进制转换我写的不够简洁一开始的代码如下#include<bits/stdc++.h>using namespace std;char aa[100],ab[100],ac[100];char z(int x){ if(x<10){ return x+'0'; } if(x==10){ return 'A'; } if(x==11...原创 2019-04-29 11:46:46 · 183 阅读 · 0 评论 -
1058 A+B in Hogwarts (20 分)
算法笔记上机训练上最后一题进制转换依旧很水#include<bits/stdc++.h>#define ll long longusing namespace std;int main(){ int a1,b1,c1,a2,b2,c2; scanf("%d.%d.%d%d.%d.%d",&a1,&b1,&c1,&a2,&b2,&am...原创 2019-04-29 12:06:52 · 131 阅读 · 0 评论 -
1048 数字加密 (20 分)
字符串处理看题目戳这需要注意的是在处理完答案字符后要加一个’\0’这样使用puts或者cout就不会出现乱码或者直接使用答案数组的长度for循环输出#include<bits/stdc++.h>using namespace std;char jin[]={'0','1','2','3','4','5','6','7','8','9','J','Q','K'};int m...原创 2019-04-29 12:55:34 · 222 阅读 · 0 评论 -
1001 A+B Format (20 分)
快要饿死了看题目戳这一题字符串处理重点在啥时候出来 , 这个字符#include<bits/stdc++.h>using namespace std;int main(){ int a,b,len=0; int ans[100]; cin>>a>>b; int c=a+b; if(c<0){ c*=-1; printf("-...原创 2019-04-29 13:15:28 · 95 阅读 · 0 评论 -
1061 Dating (20 分)1014 福尔摩斯的约会 (20 分)
一道经典的pta类型题看题目戳这卡条件很严格注意界限我用了stl里string可以用printf输出的特性比如定义了一个string类的str可以这样输出string str="abcd";printf("%s",str.c_str());以下是通过代码#include<bits/stdc++.h>using namespace std;string day[...原创 2019-04-30 20:24:54 · 127 阅读 · 0 评论 -
1012 The Best Rank (25 分)
是个有码量的题总归还是排序看题目戳这也愈发感受到甲级的难度和坑点下面是通过代码百行代码感觉还是有些操作繁琐命名不太对用了个map起到桶的作用用空间换时间#include<bits/stdc++.h>using namespace std;struct node{ char name[15]; int c,m,e,a; int r1,r2,r3,r4,ans...原创 2019-05-01 17:35:39 · 1958 阅读 · 1 评论