随笔分类 -  贪心

上一页 1 2 3 4 5 6 7 8 9 10 ··· 20 下一页
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 设k为最大的正整数满足 $2^0+2^1+...+2^k2^0+2^1+...+2^k$ 那么只用$2^0,2^1,...2^k$和$m (2^0+2^1+...+2^k)$这k+2个数就能表示出0..m这m+1个数字了。 (原 阅读全文
posted @ 2018-03-18 19:30 AWCXV 阅读(105) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 第一个位置确定了。 那么可以通过a[i 1]来推测出第i个位置应该放什么。 所以分两种情况就好。 第一个位置为0 或第一个位置为1 最多只有这两种可能。 判断合法性就好。 【代码】 cpp include define LL l 阅读全文
posted @ 2018-03-15 14:40 AWCXV 阅读(1073) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 用小的质数去凑那个数字。 显然比用大质数去凑划算。 因为 对于$x = p1^{q1} p2^{q2} ... pn^{qn}$ x的因子个数等于(q1+1) (q2+1).... (qn+1); 显然 你用的质数越小。 这个指 阅读全文
posted @ 2018-03-10 21:53 AWCXV 阅读(146) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 思路来自hzwer.. 设xi表示第i个人往左传递了xi个糖果。 (如果小于0表示旁边的人给他了糖果。 则ans=∑|xi| 最后所有人的糖果数都变成sum/n avg 则 a1 x1+x2 = avg a2 x2+x3= av 阅读全文
posted @ 2018-03-07 10:39 AWCXV 阅读(141) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 会发现,如果把连续4个数字进行一次翻转的话。 假设这连续的4个数字的逆序数为x; 那么翻转过后,逆序数就会变成6 x; (最多6个逆序数,现在翻转了 那么这4个逆序数的变化为6 2x 显然变化值为一个偶数。 而1..l 1和r+ 阅读全文
posted @ 2018-02-24 15:25 AWCXV 阅读(181) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 a1+a2+...+aka1a2=0 且a[j] =0 那么按a[i]+1,a[i]+2..顺序递增代替问号就好 a[i]0的话,就从0的两边交替选数字就好,取出0两边交替的数字的最小值$ \frac{(i j 1)}{2}$, 阅读全文
posted @ 2018-02-13 17:25 AWCXV 阅读(161) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 KMP算法可以把"i前缀"pre[i] 分成ssssst的形式 这里t是s的前缀。 然后s其实就是pre[i]中的前 i+1 f[i]个字符组成的 字符串。 特殊的,t可能就是一个空串。 比如abcdefg 这里f是kmp算法中 阅读全文
posted @ 2018-02-11 18:19 AWCXV 阅读(164) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 感觉很像一道最短路。 然后就试了一发。 结果真的是。。 只要用一个优先队列优化的dijkstra算法求出每个点的最短路上的前一个点是什么就可以了。 相同大小的话.取每个边的前一个边的边权较小的那个。 然后把每个点的前缀边输出就好 阅读全文
posted @ 2018-02-08 20:17 AWCXV 阅读(137) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 显然l..r这一段连续的1可以把l..r+1变成有序的。 那么就把所有的连续1段变成有序的就好。 看看最后是不是升序即可。 【代码】 cpp include using namespace std; const int N = 阅读全文
posted @ 2018-02-03 10:25 AWCXV 阅读(234) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 所给的li,ri是左括号从左到右的顺序给的。 (且注意长度是2 n 现在我们先把第一个左括号放在第1个位置。 然后考虑第二个位置。 如果这个位置能放右括号和第一个匹配(位置满足在1+l[i]..1+r[i]之间. 那么我们就在第 阅读全文
posted @ 2018-02-02 20:14 AWCXV 阅读(132) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 一开始所有的数字单独成一个集合。 然后用v[0]和v[1]记录 集合的和 为 偶数 和 奇数 的集合 它们的根节点 (并查集 然后先让v[0]的大小变成p //奇数+偶数是奇数 //奇数+奇数是偶数 //偶数+偶数是偶数 如果v 阅读全文
posted @ 2018-02-02 11:32 AWCXV 阅读(199) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 紫书上的原题; "链接" 【代码】 cpp include define ll long long using namespace std; const int N = 1e5; ll m,c1,c2,v1,v2; int ma 阅读全文
posted @ 2018-02-01 11:50 AWCXV 阅读(135) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 优先把不是10的倍数的变成10的倍数。 (优先%10比较大的数字增加 如果k还有剩余。 剩下的数字都是10的倍数了。 那么先加哪一个都可以了。 【代码】 cpp include using namespace std; cons 阅读全文
posted @ 2018-02-01 11:39 AWCXV 阅读(122) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 假设现在每个人收到的信息条数存在cnt里面 那个人猜的条数为target 则如果cnt[i]==target[i] 则我们就让第i个人来就好了。 因为s[i][i]=1恒成立。 所以第i个人它的cnt个数肯定递增了。 因此第i个 阅读全文
posted @ 2018-01-29 15:26 AWCXV 阅读(129) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 用cnt[i]记录数字i出现的次数就好。 然后i从1e6逆序到1 如果cnt[i+1]和cnt[i] 0同时成立的话。 那么得到一条边。加入到vector中。 然后 如果cnt[i] 1 则cnt[i] =2 加入i到vecto 阅读全文
posted @ 2018-01-29 11:44 AWCXV 阅读(90) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 排序,逆序。贪心选较大的就好。 【代码】 cpp include define ll long long using namespace std; const int M =1e5; int f[M+10],a[1000+10] 阅读全文
posted @ 2018-01-27 12:22 AWCXV 阅读(144) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 肯定是放在m 1或者m+1的。 (m 1是左边的点都离a最近,而m+1则是右边的点都离他最近。 看看哪个更好就行 【代码】 cpp include define ll long long using namespace std; 阅读全文
posted @ 2018-01-27 12:21 AWCXV 阅读(107) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 先搞一条a到b的路径 a c x3 x4 x5....xn 2 d b 然后第二个人的路径可以这样 c a x3 x4 x5...xn 2 b d 也即加两条边[a,x3] [xn 2,b] 所以最少只需要n+1条边。 (尽量让 阅读全文
posted @ 2018-01-26 15:52 AWCXV 阅读(123) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 根据题意:先明确以下规则: 1.如果两个点之间没有边,那么这两个点只能是a或c,且不能相同 2.如果两个点之间有边,那么他们之间的差的绝对值 【代码】 cpp include using namespace std; const 阅读全文
posted @ 2018-01-26 12:10 AWCXV 阅读(134) 评论(0) 推荐(0)
摘要:【链接】 "我是链接,点我呀:)" 【题意】 在这里输入题意 【题解】 枚举第一种方法。 剩下的全都个第二种方法。 看看能组成多少个队伍就可以了。 【代码】 cpp include define ll long long using namespace std; int n,m; int main( 阅读全文
posted @ 2018-01-25 12:00 AWCXV 阅读(116) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 9 10 ··· 20 下一页