好题
FawkesLi
这个作者很懒,什么都没留下…
展开
-
Long Permutation
题意:A permutation is a sequence of integers from 1 to n of length n containing each number exactly once. For example, [1], [4,3,5,1,2], [3,2,1] — are permutations, and [1,1], [4,3,1], [2,3,4] — no.Permutation a is lexicographically smaller than permutatio原创 2020-11-25 23:24:33 · 179 阅读 · 0 评论 -
poj 3290
这个题做了三个多小时,前2个小时没用理解到这句话Given a collection of symbols resulting from throwing a set of dice,我以为是最优子序列问题,各种dp回溯都过不了,但是人家说a set of dice,就是输入的是一个集合,而不是一个序列。隐含的意思是没有顺序问题,可以乱序构造。后面一个小时是没用理解到这句话p, q, r, s, and t are WFFs我光看到p, q, r, s,没用看到and t,然后一直wa。读原创 2020-07-18 12:58:27 · 147 阅读 · 0 评论 -
poj 1952 线性dp
需要排除重复的,仔细想一下就知道为什么要这样写了,官方的标准答案写的莫名其妙的,完全不晓得他是怎么搞的。#include <cstdio>#include <iostream>#include <iomanip>#include <string>#include <cstdlib>#include <cstring>#include <queue>#include <set>#include &原创 2020-06-09 22:49:00 · 163 阅读 · 0 评论 -
ch 1809 kmp中f数组的应用
思路:搞了一天了,好累啊。就是kmp里面f[i]数组表示的是 :a串以i为结尾的字串,与b串的前缀的最大匹配长度。所以对于题上说的某些前缀,你不用管是那个前缀,你只需要知道前缀的匹配长度就行了啊,所以for (int i = 1; i <= n; i++) cnt[f[i]]++;不过有可能f[i]既可以匹配5位字符,又可以匹配3位字符,那么你就应该都算上去啊,所以cnt[i]数组应该保存的是匹配长度大于等于i的有多少种情况,但是你刚刚少算了一些情况的嘛,所以for (int i = n; i.原创 2020-06-16 23:27:39 · 355 阅读 · 0 评论 -
poj 3667
写了4个小时,人都给我弄傻了,很有参考意义的一道题#include <cstdio>#include <iostream>#include <iomanip>#include <string>#include <cstdlib>#include <cstring>#include <queue>#include <set>#include <vector>#include <原创 2020-06-08 14:27:58 · 152 阅读 · 0 评论 -
cf edu 87 e (图论+可行性dp)
题目:给你一个图(邻接表形式),让你给每个点染色,共有三种颜色1,2,3,相邻的两个点的颜色的差值要等于1(1可以和2连,2可以和3连,1不能和3连),要求最后有n1个1,n2个2,n3个3,问你能不能染出来,如果不能输出NO,可以就输出任意一种染色方案。输入16 3 //6个点3条边2 2 2 //n1 n2 n33 15 42 5输出1YES112323输入25 90 2 31 21 31 52 32 42 53 43 54 5输出2NO思路,实际上1和原创 2020-05-19 13:56:37 · 168 阅读 · 0 评论 -
poj 1112 经典最小差值dp(超级好题)
题意:给你n个人,告诉你谁认识谁。要求将他们分成两组,每组的人相互都认识,且每组人数尽量接近(人数的差值最小)。思路:先抽象成二分图,然后看能不能二分,如果不能直接输出,如果能,就抽象成可以dp的问题,用dp找差值最小的解。抽象过程:对于每一个节点,都有跟他相互连接的一堆节点,组成一个强连通分量,然后给这个强连通分量染色。问题就抽象成了这样,有t个物品,每个物品有u价值和v价值,同时你...原创 2020-03-14 18:08:16 · 652 阅读 · 0 评论 -
cf edu round 87 d (树状数组新模板)
我恨张宇昊,题读错了害得我们搞半天做不出来题意:告诉你n,q,再给你n个数,把这些数放入一个multiset(可重复的有序集合),给你q个数(ki),如果ki>0,那么把ki放入集合,如果ki<0,那么把集合里第-ki个数删去,问你最后集合有那些数,随便输出一个就可以了,没有就输出0(1≤n,q≤106, 1≤a1≤a2≤⋯≤an≤n, ki≤n)输入15 41 2 3 4 5-5 -1 -3 -1输出13输入26 21 1 1 2 3 45 6输出26思路:因原创 2020-05-18 12:28:13 · 201 阅读 · 0 评论 -
cf round 643 E
题意:告诉你n,a,r,m,然后给你n个数,要求你把这n个数变得一样大。你可以进行三种操作,给某个数+1,或者给某个数-1,或者把某个数移动1到另一个数(任选两个数,一个+1,一个-1),这三种操作的代价分别是a,r,m。问你要达成目标的最小代价。输入13 1 100 1001 3 8输出112输入25 1 2 25 5 3 6 5输出23思路:首先考虑把所有数都变成x的代价是最小的,那么min(a[i])<x<max(a[i]),假设我们已知x,那么我们就可以暴力的计原创 2020-05-17 11:43:30 · 168 阅读 · 0 评论 -
cf #641 d
题意:告诉你n和k的值,然后给你n个数,允许你进行一种操作:选择一个区间[l,r],然后将区间里的数全部变成区间的中位数(如果区间长度为偶数,则选择中间两个数里面小的那个)操作可以进行无限次,问你能不能把这个数组全部变成k思路:刚开始的思路是找一个区间,把这个区间的数全部变成k,每次将区间长度扩大1,就能多生成一个k,直到全部变成k,然后我又想,将数组中的数标记,大于k的标记为1,小于k的标记为-1,等于k的标记为0。问题就转化成了找一个区间,区间和为0,且区间中包含k。对于区间和为0这个原创 2020-05-13 13:26:04 · 167 阅读 · 0 评论 -
poj 3233
#include <iostream>#include <cstdio>#include <iomanip>#include <string>#include <cstdlib>#include <cstring>#include <queue>#include <set>#include <vector>#include <map>#include <alg..转载 2020-05-10 00:03:08 · 201 阅读 · 0 评论 -
poj 2185 二维kmp
题意:求最小的模式块,使其无限扩展后包含给你的矩阵块(看别人题解才懂的题意);分析:假设存在一个模式块可以满足上述条件,那么必然存在一个起点在(0,0)的模式块满足上述条件;对于每一行,我们找出所有可以满足条件的前缀记录下长度,那么满足所有行的最短的长度就是该模式块的宽r;对于模式块的长,我们把宽r的字符串压缩看出一个字符,然后再进行KMP,找出该字符串的最小循环串,即长l;答案就是r *...原创 2020-05-08 12:57:03 · 181 阅读 · 0 评论 -
poj 2102 桥dp 好题
题意:给你n行3列的矩阵,告诉你每列和是多少(c0,c1,c2),每行和是多少(num0,num1,num2…),问你能构造出多少种这样的矩阵,输入3 //有三行1 2 3 //c0,c1,c22 3 4 //n0,n1,n2…输出0思路:这个是dp的题,定义dp[x][a][b][c]是在x行第一列剩下a,第二列剩下b,第三列剩下c的时候有多少种可能的情况。那么dp[x][a...原创 2020-04-27 13:16:05 · 282 阅读 · 0 评论 -
poj 2069
题意:给你n个点,求这n个点的最小外接球的最小半径淬火法#include <iostream>#include <cstdio>#include <iomanip>#include <string>#include <cstdlib>#include <cstring>#include <queue>...转载 2020-04-18 21:05:08 · 103 阅读 · 0 评论 -
poj 2057 好题
他说的对,他说的好#include <iostream>#include <cstdio>#include <iomanip>#include <string>#include <cstdlib>#include <cstring>#include <queue>#include <set&g...转载 2020-04-17 22:52:35 · 121 阅读 · 0 评论 -
poj 2018 O(n)求最长后缀
题意给你一个正整数序列,找出一个区间使得平均值最大,要求该区间的长度大于等于f,输出ans*1000的直接取整。输入10 6 //n f64210385941输出6500#include <iostream>#include <cstdio>#include <iomanip>#include <string>...原创 2020-04-10 14:55:55 · 120 阅读 · 0 评论 -
poj 2009
留给将来成为大佬的我#include <iostream>#include <cstdio>#include <iomanip>#include <string>#include <cstdlib>#include <cstring>#include <queue>#include <set&...转载 2020-04-10 13:12:25 · 159 阅读 · 0 评论 -
poj 2015
#include <iostream>#include <cstdio>#include <iomanip>#include <string>#include <cstdlib>#include <cstring>#include <queue>#include <set>#includ...原创 2020-04-09 21:52:41 · 101 阅读 · 0 评论 -
poj 2008 通过排序把O(n^3)变成O(n^2)
题意:给你n只小牛的身高H和体重W(1<=n<=1000),给你三个整数A,B,C,满足A*(H-h) + B*(W-w) <= C的一堆小牛可以组成一个队伍,h和w分别是这个队伍中最小的身高和最小的体重(不一定是同一头牛),问你这个队伍最多多少人输入8 //n1 2 4 //A B C5 1 //每只小牛的身高体重3 22 32 17 26 45 14 3...原创 2020-04-09 17:16:00 · 112 阅读 · 0 评论