- 博客(57)
- 资源 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 算法竞赛入门经典(第二版)紫书-题目集合【例题+习题】
写在前面还是感觉自己以前一直都是野路子,一直没有系统的照着一本书练完过,现在队友都在学校打多校联赛,我还回不去就先照着这个来,试试效果完善一下自己的技能树。也方便给后人铺路 PS:合集还在不停更新中题解用外链放出来方便查找,不再写到一个博客里了,上次乙级的70题都在一篇,太难找还不方便。第三章 题号 题目 知识点 例1 UVa272 Tex Quotes 水题,字符串 例
2017-08-03 22:52:47
4859
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 PAT乙级题解合集
这么就没练了来练练手,听说乙级都是水题暑假开始正式连前就先把乙级刷完吧,免得开始训练的时候手生,第一步计划是刷完乙级,然后开始水CF 题目在牛客网上刷的据说牛客上的数据比PAT官网要难点儿
2017-07-01 22:41:50
3677
原创 教务系统选课(抢课)技巧
教务系统选课技巧这只是关于选课的一点儿小小的经验,不保证一定成功,只是这样成功的概率更高最重要两点儿:不要盲目刷新!!!要有耐心关于刷新:有两种状态一种是立马就服务器错误,另一种是服务器得到了你的请求但是返回数据缓慢(描述可能不准确) + 第一种的话没别的直接F5就行了 + 第二中状态的特征一般都是浏览器标题栏有一个小圈或网页左下角有个正在连接之类的如下图,这个时候就不要再刷新了要耐心点儿等 登
2017-09-14 14:40:40
22243
3
原创 UVa512-Spreadsheet Tracking
UVa512-Spreadsheet Tracking思路:因为要跟踪单元格而且要查询多次如果同时跟踪所有单元格的改变会很麻烦,所以我们只用把所有的操作给保存下来,然后每次跟踪一个单元格,查询一次就按照顺序再操作一次。另外还要注意的是因为删除和插入的顺序是没有影响的所以同一个操作的所有列或行是同时被改变的,所以要先记录再更改。代码:#include <bits/stdc++.h>using name
2017-08-18 16:38:53
407
原创 UVa133-The Dole Queue
UVa133-The Dole Queue思路:两边同时模拟代码:#include <bits/stdc++.h>using namespace std;int main(){ int n,m,k,ren[30]={0}; while(~scanf("%d %d %d",&n,&k,&m),k+m+n) { int count_k=0,count_m=0,f
2017-08-18 15:07:42
359
原创 UVa213-Message Decoding
UVa213-Message Decoding思路:紫书上的题目刚开始没有把各个功能独立开来能想到的例子都过了但是提交就RE,卡了巨长时间最后无奈按照书上思路把各个功能独立出来,一边过。无奈代码:#include <bits/stdc++.h>using namespace std;char ve[8][1<<9+1];char getcha(){ int ch; while(
2017-08-18 15:02:55
425
原创 UVa489-Hangman Judge
UVa489-Hangman Judge思路:首先将答案串中的字母标记并计数不同字母个数K,然后遍历回答的串,如果标记过K–并取消标记,否则错误次数D++; K==0||D>6时退出,判断输赢。代码:#include <bits/stdc++.h>using namespace std;int main(){ int n,i; char s[101],me[101]; w
2017-08-07 18:31:30
304
原创 UVa1339-Ancient Cipher
UVa1339-Ancient Cipher思路:刚开始以为可以多个字符映射一个,用map来表示映射关系WA了两发,后来发现虽然每个字母之间映射没有关联(B映射后三个字母,A映射后后两个字母),但是映射关系还是要一一对应不能出现一对多的情况。然后改为统计每个字符的数量,然后比较两个串中的数量是否相同。代码:#include <bits/stdc++.h>using namespace std;int
2017-08-07 17:32:26
419
1
原创 UVa11809-Floating-Point Numbers
UVa11809-Floating-Point Numbers思路:看到题目我是懵逼的,先是艰难的理解了double类型的储存方式之后,刚开始准备用直接枚举的方法来算因为是分为阶码和位数来存要求找全为1的这样M最多有十个,E最多有30个这个数就是∑Mi=12−i⋅2E\sum_{i=1}^{M}2^{-i}\cdot 2^{E} 因为E最大为2302^{30} 所以没法儿存,后来看了别人的方法发现只
2017-08-07 16:10:11
392
原创 UVa1588-Kickdown
UVa1588-Kickdown思路:这个题目的思路很好想到就是分别将两个字符串滑动比较他们重叠的每一位,如果有一位都是2则不行,如果这个重叠状态合法,就将这个状态的长度与当前最小值比较取小的那个。刚开始想怎么在一个循环里面把两边都给算上卡了很久发现很难搞,最后发现还是用两个循环分别比较好弄的多。代码:#include <bits/stdc++.h>using namespace std;stri
2017-08-07 15:36:55
385
原创 UVa1587-Box
UVa1587-Box思路:判断条件略多,要想能拼成长方体六个面要满足一下几点儿六个面中要有相同的三组对立面假设面ABC的边分别是X,Y(X<=Y),则三组对立面满足 A.x==B.xA.y==C.yB.y==C.x这样就是可以拼成盒子的条件,处理一下数据排序,if比较即可代码:#include <bits/stdc++.h>using namespace std;pair<int,i
2017-08-07 00:27:01
465
原创 UVa10340-All in All
UVa10340-All in All思路:刚开始看到以为是LCS的模版题直接套上模版就交了果断T,二次读题后发现因为是原串在加密串按照顺序出现过就行,所以暴力遍历对比一遍就找出来了。代码:#include <bits/stdc++.h>using namespace std;#define N 1000005char s[N],s2[N];int main(){ while(~sc
2017-08-06 23:32:00
264
原创 UVa202-Repeating Decimals
UVa202-Repeating Decimals思路:刚开始这个题目无从下手,后来看了别人的思路后恍然大悟,模拟手工运算除法,把每次取余的数存下来,如果这个数第二次出现那就是开始循环了,这个思路有了以后就是细心的问题了。代码:#include <bits/stdc++.h>using namespace std;int main(){ int a,b,num[3005],i,j;
2017-08-06 22:56:36
337
原创 UVa1368-DNA Consensus String
UVa1368-DNA Consensus String 思路:贪心的做法,因为要求与所有字符串的Hamming最低,所以最终串的每一位就是所有最多的那个,这样可以保证每一位不同的都是最少的。因为还要求字典序最小,所以相同时按照字典序输出,也就是按照ACGT的顺序判断就好了。代码:#include <bits/stdc++.h>using namespace std;char dna[55][10
2017-08-05 22:51:04
261
原创 UVa232-Crossword Answers
UVa232-Crossword Answers思路:题意是说有一个r*c的表里面有带字母的白块和黑块,有两种起始块儿横向起始块是左边为黑块或者没有东西,纵起始块是上面为黑块或没有东西,一行一行的将起始块从1开始编号,然后分别输出横纵起始块的编号的他们代表的单词,他们代表的单词就是从这个起始块开始找到边界或者找到黑块为止所有字母(横向往右找,纵向往下找)。没什么坑点儿,注意一下两组数据之间有一个空行
2017-08-05 22:18:39
343
原创 UVa227-Puzzle
UVa227-Puzzle思路:题意是有个5x5的板子上面有一个是空的,用空格表示,四种操作分别是ABRL,分别代表把空格上下右左的字母移动到空格处,然后给出一个初始状态,还有一系列操作输出最终状态,如果存在非法操作输出This puzzle has no final configuration.,非法操作就是越界的操作(比如空格已经在最右边了还要执行R就非法)。 这种模拟题一直都是最不愿意做的,
2017-08-05 19:36:17
267
原创 UVa340-Master-Mind Hints
Master-Mind Hints 思路:原题英文巨长,题意大概就是先给你正确的系列,然后再给你一系列序列如果某个元素位置和值都正确A++,值正确位置不正确B++,最后输出(A,B)。A的数量很好找直接比较,问题是B不好找,要判断是否在原序列出现过,还要判断是不是多了等等。后来看了刘如佳书上的写法,比较两个序列中每个数字出现较少的次数就是对B的贡献(假设正确序列X,猜测序列Y,X中有3个3,Y有2个
2017-08-05 12:06:58
451
1
原创 UVa1586-Molar Mass
UVa1586-Molar Mass思路:计算相对分子质量,因为只有四个元素且没有括号嵌套,就比较好写。但是代码写的还是丑,打了补丁代码:#include <bits/stdc++.h>using namespace std;int main(){ map<char,double>mp; mp['C']=12.01; mp['H']=1.008; mp['O']=1
2017-08-03 23:34:25
284
原创 UVa1585-Score
UVa1585-Score思路:照着题意来就好了没什么坑代码:#include <bits/stdc++.h>using namespace std;int main(){ int k,sum,n; string s; cin>>n; while(n--) { cin>>s;sum=0;k=1; for(int i=0;i<s
2017-08-03 23:33:54
229
原创 UVa1584-Circular Sequence
UVa1584-Circular Sequence思路:数组不长还是暴力,先找出最小的字符,再一这个字符为头找出所有字符串中字典序最小的。代码:#include <bits/stdc++.h>using namespace std;int main(){ int n; string s; cin>>n; while(n--) { string
2017-08-03 23:33:31
235
原创 UVa1583-Digit Generator
UVa1583-Digit Generator思路:打表法,因为每次重新算很费时间,所以预处理一下,从1开始算把算出来的n放到以n为下标的数组中,这样计算的复杂度就是线性的。代码:#include <bits/stdc++.h>#define MAX 100005using namespace std;int a[MAX];int suan(int n){ int ans=n;
2017-08-03 23:33:07
237
原创 UVa1225-Digit Counting
UVa1225-Digit Counting思路:数据小直接暴力算也不会超时,也可以在纸上找规律用公式算这个最快代码:#include <iostream>using namespace std;int main(){ int n,m; cin>>n; while(n--) { int a[10]={0}; cin>>m;
2017-08-03 23:32:40
241
原创 UVa455-Periodic Strings
UVa455-Periodic Strings思路:因为字符串长度很短,所以可以暴力。从长度1开始把长度可以整除的往后滑动比较,找到第一个符合条件的输出代码:#include <bits/stdc++.h>using namespace std;int judeg(string &s,int n){ int l=s.size(); for(int i=n;i<=l-n;i+=n)
2017-08-03 23:32:06
549
原创 UVa401-Palindromes
UVa401-Palindromes思路:判断是否是回文和镜像,同样用字符串常量判断镜像可以好写很多。代码:#include <bits/stdc++.h>using namespace std;char mirrored(char ch){ char s[]="A 3 HIL JM O 2TUVWXY5"; char s2[]=" 1SE Z 8 "; if
2017-08-03 23:04:52
274
原创 UVa10082-WERTYU
UVa10082-WERTYU思路:这个题目又学会一招用字符串常量,本来要是我写就是老长的一堆if了,看了书学会了这个节省时间的技能代码:#include <bits/stdc++.h>using namespace std;string s="`1234567890-=QWERTYUIOP[]\\ASDFGHJKL;'ZXCVBNM,./";int main(){ char ch;
2017-08-03 23:01:42
253
原创 UVa272-TEX Quotes
UVa272-TEX Quotes思路:水题,碰到双引号分奇偶输出新的引号,其他符号原样代码:#include <bits/stdc++.h>using namespace std;int main(){ char ch; int k=1; while(~scanf("%c",&ch)) { if(ch=='"') {
2017-08-03 22:53:23
442
原创 Codeforces #423-Div. 2-C. String Reconstruction
C. String Reconstructiontime limit per test2 seconds memory limit per test256 megabytes题目Ivan had string s consisting of small English letters. However, his friend Julia decided to make fun of him and
2017-07-12 03:00:45
429
原创 Codeforces #423-Div. 2-B. Black Square
B. Black Squaretime limit per test1 second memory limit per test256 megabytes题目:Polycarp has a checkered sheet of paper of size n × m. Polycarp painted some of cells with black, the others remained wh
2017-07-12 02:45:03
400
原创 Codeforces #423-Div. 2—A. Restaurant Tables
题目:A. Restaurant Tablestime limit per test1 second memory limit per test256 megabytes描述:In a small restaurant there are a tables for one person and b tables for two persons.It it known that n groups o
2017-07-12 02:37:26
334
原创 2017计蒜之道第一场题解
文章首发自进击的ACMer写在前面这是第一次参加这种网络赛,点开题目就是浓浓的广告风,全是阿里系列,听群巨巨说下一场是百度系列过题情况第一题比较水,暴力枚举,第二题中和困难基本上卡了所有人1200+的人才过了不到10个。个人比较菜排了309下一场接着战吧!!
2017-05-20 22:41:24
371
原创 HDU2054-A == B ?【字符串处理】
A == B ?Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem DescriptionGive you two numbers A and B, if A is equal to B, you should print “YES”, or print “NO”.Inp
2017-05-18 18:11:37
452
原创 并查集之找假爹(并查集删除操作)-NYOJ-合纵连横
并查集之找假爹(并查集删除操作)并查集我们一般都只进行添加操作,但是有添加必然有删除,当我们需要删除的时候怎么做呢?我们都知道并查集添加的时候每个节点都拿自己做祖先,两个集合合并时候把其中一个作为另一个元素的祖先,最后只要检查有几个根节点就知道有几个集合了,检查两个元素是否属于同一个集合时需要找到他们的祖先查看是否相同即可。但是用这种方式我们删除的时候就很难办了,因为我们要删除一个元素给她找一
2017-05-04 22:00:33
545
原创 NYOJ-导弹发射-河南省第九届省赛D题【LIS】
导弹发射时间限制:1000 ms | 内存限制:65535 KB 难度:4描述Alpha 机构研发出一种新型智能导弹,它能够在雷达检测到的区域内,选择一条前进的路径, 击破路径上所有的目标物。 雷达位于(0,0)处,它能够检测到两条射线之间的区域(不妨设在第一象限)。 导弹一开始置放在(0,0)处,它可以在雷达能检测到的区域内先选择一个目标物击破,然后 再继续前进,选择另一个目标物击破。注意,
2017-05-03 16:58:18
508
原创 hdu-2159-FATE【二维费用背包】
FATETime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 13656 Accepted Submission(s): 6459Problem Description最近xhd正在玩一款叫做FATE的游戏,为了得到极品装备,xhd在不停
2017-05-03 12:52:01
304
原创 hdu-2639-Bone Collector II【第K大背包】
Bone Collector IITime Limit: 5000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4730 Accepted Submission(s): 2462Problem DescriptionThe title of this probl
2017-05-03 10:26:13
282
原创 三种背包模版,01背包,完全背包,多重背包
#include <iostream>#include <cstdio>#include <cstring>#define max(a,b) (a>b?a:b)using namespace std;int f[100005],v,c[20],a[20];void ZeroOnePack(int cost,int weight){ for(int i=v;i>=cost;i--
2017-04-28 16:22:38
339
原创 HDU-1880-魔咒词典【哈希(Hash)+二分】
魔咒词典Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 13648 Accepted Submission(s): 3305Problem Description哈利波特在魔法学校的必修课之一就是学习魔咒。据说魔法世界有100000
2017-04-28 15:20:11
1445
原创 NYOJ-37-回文字符串【LCS】
回文字符串时间限制:3000 ms | 内存限制:65535 KB 难度:4描述所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如”aba”。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。 输入第一行给出整数N(0输出每行输出所需添加的最少字符数 样例
2017-04-27 07:32:53
564
原创 NYOJ-814-又见拦截导弹【最少LIS段数问题】
又见拦截导弹时间限制:3000 ms | 内存限制:65535 KB 难度:3描述大家对拦截导弹那个题目应该比较熟悉了,我再叙述一下题意:某国为了防御敌国的导弹袭击,新研制出来一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度。突然有一天,雷达捕捉到敌国的导弹来袭。由于该系统存在缺陷,所以如果想把所有的导弹都拦截下来,
2017-04-26 22:03:58
448
原创 NYOJ-236-心急的C小加【LIS+Dilworth定理】LIS段数(划分数)问题
心急的C小加时间限制:1000 ms | 内存限制:65535 KB 难度:4描述C小加有一些木棒,它们的长度和质量都已经知道,需要一个机器处理这些木棒,机器开启的时候需要耗费一个单位的时间,如果第i+1个木棒的重量和长度都大于等于第i个处理的木棒,那么将不会耗费时间,否则需要消耗一个单位的时间。因为急着去约会,C小加想在最短的时间内把木棒处理完,你能告诉他应该怎样做吗?输入第一行是一个整数
2017-04-26 21:51:19
466
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人