摘要:
题目链接:传送门 思路:建立一个32位的字典树,对每一个要插入的数字查找它异或的最大值(就是尽量全部二进制的值都相反), 然后获得两个数异或的最大值。 #include<iostream> #include<cstdio> #include<cstring> using namespace std; 阅读全文
摘要:
题目链接:传送门 思路:注意是比较人第一天女装的概率和连续两天女装的概率 Ans=P(两次都取到女装P1)/P(第一次取到女装P2) P1=x*(x-1)/n*(n-1)+y*(y-1)/m*(m-1) P2=x/n+y/m; 然后化简,注意四舍五入 代码: #include<iostream> # 阅读全文
摘要:
题目链接:传送门 思路:找最少有几个点,先求出每个点的覆盖范围,就是一个点最大可以到达的地方是y相同的地方而且直线距离是d, 所以x范围在[x-sqrt(d*d-y*y),x+sqrt(d*d-y*y)]内均符合条件;如果有相交的地方就是可以忽略这个点。 #include<iostream> #in 阅读全文
摘要:
题目链接:传送门 思路:字符串hash,终止条件竟然判断错了,真是太大意了。 #include<iostream> #include<cstdio> #include<cstring> using namespace std; const int maxn = 1001000; typedef un 阅读全文
摘要:
题目一(poj-2965):传送门 思路:递归+枚举,遍历每一种情况,然后找出最小步骤的结果,与poj-1753类似。 #include<iostream> #include<cstdio> #include<cstring> //#include<ctime> using namespace st 阅读全文
摘要:
题目一:传送门 思路:动态规划,从每一行来看,每次更新求出这一点的最大值,dp[i]=MAX(dp[i-1],dp[i]+dp[i-2]),不会出现 两个数字相邻的情况;先对行进行更新,再对列进行更新。 #include<iostream> #include<cstdio> #include<cst 阅读全文
摘要:
题目一:传送门 题意:有一个4*4的棋盘,每次翻转一个棋子和它的上下左右的四个棋子,判断翻转多少次之后可以变为纯色的棋盘。 思路:总共有C(0,16)+C(1,16)+C(2,16)+……+C(16,16)=2^16次,所以最多有16个棋子被翻动,然后从(0,0)个棋子开始,依次翻转其他棋子, 判断 阅读全文
摘要:
题目一:传送门 思路:主要是找到状态, 考虑字母有两种状态,大写和小写, 从小写变为大写的变化方式有两种:保持cap状态,或者按住shift键; 从小写变为大写也有一种变化方式:按住shift键; 看起来很乱,但是主要就是是否为cap状态,shift可以看做多按一次键, 不能算作状态,所以一个字母就 阅读全文
摘要:
题目一:传送门 思路:水题,模拟即可 题目二:传送门 思路:dp,决策每个充电站是否要充电。(决策只有搜索,DP两种解决方法) (1)考虑状态的个数,n+2个,因为除了n个还有位置0,终点len两种状态; 前一个状态可以推出后一个状态,所以可以得到循环的顺序外循环1--n,内循环i-1--0。 (2 阅读全文
摘要:
题目一:传送门 思路:就是简单的bfs,注意仔细审题,加上对转弯次数的判断。 题目二:传送门 思路:简单dp,记录每一秒每个位置接到的大饼的数量。 状态转移方程:dp[i][j]=max(dp[i][j] , dp[i-1][j]+a[i][j] , dp[i-1][j-1]+a[i][j] , d 阅读全文