![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
UVa
ModestCoder_
一个modest的coder
展开
-
【题解】UVA10271:佳佳的筷子 Chopsticks
@luogu 贪心策略,如果知道当前一组筷子最小的那根,那么与他组合的肯定是与他相邻的,然后剩下那根最长的不用管 dpi,jdp_{i,j}dpi,j表示组了jjj组筷子,最后一组最短的筷子是第iii根,倒着推导 dpi,j<−−−(ai−ai+1)2+dpi+2,j−1dp_{i,j}<---(a_i-a_{i+1})^2+dp_{i+2,j-1}dpi,j<−−−(ai−ai+1)2+dpi+2,j−1 这样其实转移意义不明,换言之会有漏掉,可以改变定义,当前用了i−ni-n原创 2020-09-16 20:54:11 · 394 阅读 · 0 评论 -
【题解】UVA10817:Headmaster‘s Headache
@vjudge 记录有0、1、2个老师教的课的状态s0,s1,s2s0,s1,s2s0,s1,s2,并记录当前枚举到第几个老师ttt dfs(t,s0,s1,s2)dfs(t,s0,s1,s2)dfs(t,s0,s1,s2) 用记忆化,状态方面,s0,s1,s2s0,s1,s2s0,s1,s2中保存两个就好了,剩下一个用另外两个算出来,所以状态合理 Code: #include <bits/stdc++.h> #define maxn 310 #define maxm 210 using nam原创 2020-09-13 16:31:45 · 187 阅读 · 0 评论 -
【题解】UVA1252:Twenty Questions
@vjudge 状压 可以这样设计状态 dfs(s,a)dfs(s,a)dfs(s,a)表示当前已经猜测的集合,目前还没有确定的数在sss集合里面的共同特征为aaa,还要猜几次 枚举下一次猜的位为kkk 对于当前状态的答案是 sum=max(dfs(s∣2k,a),dfs(s∣2k,a∣2k))+1sum=max(dfs(s|2^k,a),dfs(s|2^k,a|2^k))+1sum=max(dfs(s∣2k,a),dfs(s∣2k,a∣2k))+1 对于每个kkk,取答案的最小值 至于边界,若满足状态(s原创 2020-09-13 15:34:04 · 192 阅读 · 0 评论 -
【题解】UVA1633:Dyslexic Gollum
@vjudge 只要保证不出现长度为kkk或k+1k+1k+1的回文串就可以 状压保存最后kkk位的状态,每次转移时判断一下是否合理就好了 Code: #include <bits/stdc++.h> #define maxn 410 #define maxm 2010 #define qy 1000000007 using namespace std; int power[25], n, m, dp[maxn][maxm]; inline int read(){ int s = 0, w原创 2020-09-13 14:24:45 · 221 阅读 · 0 评论 -
【题解】UVa1665:Islands
题目传送门 题目大意 输入一个n*m的矩阵,每个格子里都有一个[1,10^9]的正整数。再输入T个整数ti,对于每个ti,输出矩阵中大于ti的数组成了多少个联通块(上下左右相连,斜着不联通)。 有Z组数据 数据范围 1≤n,m≤1000 0≤t1≤t2≤···≤tT≤10^9 1≤T≤10^5 0≤Z≤20 【题解】 首先想到暴力方法,对于每个ti,进行遍历,时间复杂度O(ZT...原创 2018-08-22 15:47:42 · 336 阅读 · 1 评论