![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
思维
Jinx_jinx_again
啊啊啊啊哈哈哈
展开
-
2013 成都网络赛 1004 Minimum palindrome
题目大意:用m个字母组成一个长度为N的字符串,使得最长的回文子串 的长度最小。 并且要求字典序最小。 思路:分类模拟。 当M为1 的时候就直接输出N个A 当M大于2的时候就循环ABC 当M等于2的时候 先枚举出当N 而当N>9的时候。 其实就是 aababb 为循环节的一个循环。但是此时是建立在最长串为4的基础上得到 但是有另外的情况就是 m==2 n%6 例如: m=2原创 2013-09-14 18:11:16 · 1228 阅读 · 0 评论 -
ural 1932 The Secret of Identifier (容斥原理)
题目大意: 求出给的n个串中。 精确到只有一个字符不同,两个字符不同,三个字符不同,四个字符不同的对数。 思路分析: 枚举状态。 dp[i] [j] ...表示当前串取出 i 状态下的所有字符转化成十进制数为 j 的出现的次数。 这样的话,就记录了所有串的子串的状态。 然后计数就得到了所有的状态。 然后我们要得到精确不同的,可以用补集的思想,如果要精确到三个不相同,意味着要原创 2014-08-04 20:36:19 · 849 阅读 · 0 评论 -
hdu 4909 String (map + 状压)
题目大意: 给定一个可能含‘?’的字符串。然后问这个字符串有多少个子串是含有所有的字符都只出现两次。 其中'?' 可以被替换成任意字符,也可以被remove... 思路分析: 这是bestcoder的round #3的第三题。 这道题的做法和 4908 的做法差不多。 我们把 ‘?’ 左右两边的状态分别处理出来。 然后用map 计数。然后枚举左边的状态。同时枚举? 对应的字符原创 2014-08-04 08:30:06 · 996 阅读 · 0 评论 -
hdu 1387 Team Queue (链表)
题目大意: 不同的人在不同的队伍里,插入链表的时候如果这个链表里有他的队友,就把它放到最后一个队友的最后,如果没有队友,就把它放到整个链表的最后面。 出链表的时候把第一个人拿出来。 思路分析: 要模拟这个链表就要记录这整个链表中的队伍存在的情况。 所以要再开一个链表的头指针和尾指针,在整个大的链表中再模拟小区域的链表。 然后就是deque部分,也就是注意head的判断以及更新。原创 2014-06-16 13:07:08 · 939 阅读 · 0 评论 -
Codeforces Round #213 (diy.2) C.Matrix
题目大意: 用题目中的方法构造一个矩阵。 然后求出矩阵中长方形的和等于a的长方形的数量 思路: 长方形的和 等于构成它的长的那些数字的和 加上构成它的宽的那些数字的和 两个和的积 比如第一个样例 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25 自己去体会吧~~~哈哈原创 2013-11-20 20:05:47 · 1124 阅读 · 0 评论 -
hdu 4279 Number (欧拉函数 - 约数个数)
详解请戳 点击打开链接 mark 一下 当n>2的时候 所有的n的欧拉函数的个数都是一个偶数 约数的个数只有当n为完全平方数的时候是奇数个 其他情况下为偶数个 #include #include #include typedef long long LL; using namespace std; LL solve(LL x) { if(x<6)return 0;原创 2013-10-30 00:05:16 · 1349 阅读 · 0 评论 -
hdu 3333 Turing Tree
神思维线段树原创 2013-10-04 16:54:28 · 986 阅读 · 0 评论 -
hdu 4608 I-number
直接暴力 最后一位加1 之后 进位。。 然后求和 看是不是十的倍数。 #include #include #include #include using namespace std; int X[100005]={0}; int solve(int ct) { int m=ct; int sum=0; while(1) {原创 2013-10-22 23:29:40 · 917 阅读 · 0 评论 -
Codeforces Round #202 (Div. 2) B.Color the Fence
大坑题啊大坑题 以为过了 5 2 2 2 2 2 2 2 2 3 就对了的。 结果。。。 19 9 9 9 9 9 9 5 6 8 输出 987 哈哈哈 跟上面那种是一样的原理。先刷小的。刷不够了换一个小的加剩余的 看能不能凑一个大的 但是凑了一个大的以后呢。可能还有余数。那就还要去凑。 #include #include原创 2013-09-28 01:32:17 · 1671 阅读 · 1 评论 -
HDU 4602 Partition
思维递推题。 题目大意:以题目的那种形式列出来 问在N 的这些排列中有多少个K 一开始想的是把所有的式子列出来 然后看 1 - N 出现的次数的规律 后来发现就算求出来的话也无法递推出来。 其实换一种想法。想K这个数会出现多少次 不管别的数 那么把数看成N个点。 比如 K=2 N=5 (1 1 1 1 1 )在这之间插入若干斜杠隔开。组成不同的组合。原创 2013-09-19 21:48:32 · 828 阅读 · 0 评论 -
Codeforces Round #204 (Div. 2) A Jeff and Digits
= = 能被90整除的数。。。 要最后一位是零,前面的位数要 和能被9整除。 #include #include #include #include using namespace std; int main() { int n; int s1=0,s2=0; scanf("%d",&n); while(n--) { i原创 2013-10-05 10:17:47 · 1230 阅读 · 0 评论 -
hdu 4915 Parenthese sequence (贪心+模拟)
题目大意: 一个序列中有左括号和右括号,还有问号,问号可以任意转换成左右括号。 问这个序列有多少种情况的转变使得这个序列变成合法的括号匹配序列。 思路分析: 首先我们分析一下,如何使得一个序列是合法的括号匹配序列。 我们很容易想到的是用栈模拟匹配过程。 当遇到左括号就进栈,当遇到右括号就让栈顶的左括号出栈。 那么在模拟的过程中,造成这个序列的不合法的原因只有当右括号来的时候,原创 2014-08-06 14:31:55 · 658 阅读 · 0 评论