njczy2010 2068 Accepted 325MS   8052K 1450Byte G++ 2014-11-13 11:20:40.0 爱魔法的露露 时间限制(普通/Java) : 1200 MS/ 4000 MS          运行内存限制 : 65536 KByte总提交 : 47            测试通过 : 3 描述 仙灵女巫露露,对于魔法的热忱可是超出常人,要是发现了什么上古遗留下的魔法,她总是想方设法地获得,然后研究分析.而最近,他又从邪恶小法师维嘉那里获得了一个…
传送门 D. R2D2 and Droid Army time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output An army of n droids is lined up in one row. Each droid is described by m integers a1, a2, ..., am, where ai is th…
acm.hdu.edu.cn/showproblem.php?pid=6127 [题意] 给定平面直角坐标系中的n个点,这n个点每个点都有一个点权 这n个点两两可以连乘一条线段,定义每条线段的权值为线段两端点点权的乘积 现在要过原点作一条直线,要求这条直线不经过任意一个给定的点 在所有n个点两两连成的线段中,计算与这条直线有交点的线段的权值和 最大化这个权值和并输出 题目保证,给定的n个点不重合且任意两个点的连线不经过原点 [思路] 一条经过原点的直线把n个点分成两个半平面A,B 假设A中的点权…
11754936 2014-09-29 10:08:45 Accepted 5056 31MS 392K 1257 B G++ czy 好简单的思路,怎么就没想到呢..... Boring count Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 250    Accepted Submission(s): 98 Problem De…
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转载请注明出处,侵权必究,保留最终解释权! Description 有 N 个彩色糖果在平面上.小奇想在平面上取一条水平的线段,并拾起它上方或下方的所有糖果.求出最多能够拾 起多少糖果,使得获得的糖果并不包含所有的颜色. Input 包含多组测试数据,第一行输入一个正整数 T 表示测试数据组数. 接下…
题目链接 1.对于简单的版本n<=500, ai<=50 直接暴力枚举两个点x,y,dfs求x与y的距离. 2.对于普通难度n<=10000,ai<=500 普通难度解法挺多 第一种,树形dp+LCA 比赛的时候,我猜测对于不为1的n个数,其中两两互质的对数不会很多,肯定达不到n^2 然后找出所有互质的对数,然后对为1的数进行特殊处理.(初略的估计了下,小于500的大概有50个质数,将n个数平均分到这些数中,最后大概有10000*50*200=10^7) 对所有的非1质数对,采用离…
题目链接: http://codeforces.com/contest/676/problem/C 题解: 把连续的一段压缩成一个数,对新的数组求前缀和,用两个指针从左到右线性扫一遍. 一段值改变一部分的情况考虑的不够周到,wa了两次. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<vect…
题目链接: 题目 Copying Books Time limit: 3.000 seconds 问题描述 Before the invention of book-printing, it was very hard to make a copy of a book. All the contents had to be re-written by hand by so called scribers. The scriber had been given a book and after s…
QAQ 从IOI搬了一道题目过来 官方题解貌似理论上没有我的做法优,我交到BZOJ上也跑的飞快 结果自己造了个数据把自己卡成了4s多,真是忧桑的故事 不过貌似原题是交互题,并不能离线 说说我的做法吧 首先我们会写暴力,而我的做法只要会写暴力就可以了 对于一个询问A,B 我们有以下几种方法: 1.搞出所有颜色是A的DFS序对应区间的左右端点和所有颜色是B的DFS序对应区间的左右端点 然后把所有端点排个序,线性扫一遍,维护一个扫描线cnt,当遇到A的左端点时++cnt,遇到A的右端点时--cnt 遇…
今天早上在Quora上看到的一个题目,很不错的!最直观的是枚举n^3,但稍微进步一点的观察是找出3个数,然后最大的减去最小的2倍的结果,然后就有了线性扫一遍就OK. Given three arrays, A, B, and C, what is the best algorithm to find the minimum value of , where  ? 解答: Assuming that the arrays are not sorted, here is an algorithm.1…
比赛时候只做出AB,E题一眼看过去似乎线段树能搞,但是写完过不了样例,才发现看错题了,然后比赛就没啥时间了~~整体状况还是很糟糕,A,B题实在出得太慢,然后持续到现在还没出过C题...不能更弱%>_<% A:在N*N的棋盘上放棋子,使得每一个棋子四周都没有相邻的棋子,问最多能够放置多少棋子. 这个直接每个格子一次判断能不能放就好 代码: #include <cstdio> #include <algorithm> #include <iostream> #i…
好像前几场的题解忘记写了, Orz 状态太差, 平均出两题   都不好意思写了 , 连掉4场, 都要哭晕了. 很水的一场, 写完A B C就去睡了  D题其实不难, E题研究Ing(已用一种奇怪的姿势AC了) Problem_A: 题意: 给一个长度为n的序列, 找出最长不下降子序列. 思路: 线性扫一遍, 每读入一个数就判断下是否和前面的组成不下降子序列, 维护最大答案和当前序列长度即可(注意处理最后一个序列即可). 代码: #include <cmath> #include <cst…
题意一个序列的LIS为MAX, 求连续子序列的LIS为MAX的个数. 先求出LIS,记录以a[i]结尾的LIS的长度,以及LIS起始位置(靠右的起始位置). 然后线性扫一遍,,线段树与树状数组的差距还是蛮大的,,线段树900+MS,险些超时,而树状数组仅仅400+MS 代码里注释部分为线段树做法. #include <set> #include <map> #include <cmath> #include <ctime> #include <queu…
Codechef October Challenge 2018 游记 CHSERVE - Chef and Serves 题目大意: 乒乓球比赛中,双方每累计得两分就会交换一次发球权. 不过,大厨和小厨用了另外一种规则:双方每累计得 K 分才会交换发球权.比赛开始时,由大厨发球. 给定大厨和小厨的当前得分(分别记为 P1 和 P2),请求出接下来由谁发球. 思路: \((P1+P2)\%K\)判断奇偶性即可. 代码链接 BITOBYT - Byte to Bit 题目大意: 在字节国里有三类居民…
题意:给出一个长度为 n的数列 a和一个长度为 m 的数列 b,求 a有多少个长度为 m的连续子数列能与 b匹配.两个数列可以匹配,当且仅当存在一种方案,使两个数列中的数可以两两配对,两个数可以配对当且仅当它们的和不小于 h. 题解:先把b排序,要想能匹配,由hall定理,b的每个子集(大小为x)都至少有x条连向b,bi递增,和bi连的边也递增,那么当bi连边大于等于i时即可,所以当min(bi-i)>=0时满足条件 线性扫一遍即可,每个a二分b更新线段树即可 //#pragma GCC opt…
KMP算法,对于求b串在a串中出现的次数. 在学习KMP之前,希望大家充分掌握hash. HASH: 1.hash表:用来离散化(hash数组,hash链表) 2.Rabin-Kap算法: 可替代KMP(O(n)),Manacher(O(n))等: hs[t]=hs[t-1]*p+s[t]: hash(x,y)=hs[y]-hs[x-1]*p^(y-x+1):  哈希是字符串题目的基础(个人觉得) 一般情况下,hash是可以替代KMP的. 但我们为什么还要学KMP呢? 众所周知,hash会产生h…
由一个题引入: 求一个串A的最长回文串: A=abababa最长回文串长度:5(ababa) 先思考用hash怎么做? 一.暴力 枚举左端,右端点(确定一个区间),线性扫一遍当前区间. Ans=max(ans); 时间复杂度:O(n^3) 貌似也有O(n^2)的暴力,在此不再赘述.二.哈希 分设两个hash数组, ha1记录前缀, ha2记录后缀. 对于任意[l,r] 若ha1[l,mid]==ha2[mid+1,r],则为回文串 Ans=max(ans); 时间复杂度:O(nlog 2 n)三…
[BZOJ1914]数三角形(组合数,极角排序) 题面 BZOJ权限题 良心洛谷 题解 这种姿势很吼啊,表示计算几何啥的一窍不通来着. 题目就是这样,正难则反,所以我们不考虑过原点的三角形, 反过来,总数减去不包含原点的三角形. 这个怎么计算呢? 我们每次先确定一个点,那么,所有在这个点和原点的连线下方的点都是可行的, 那么极角排序之后发现这就是一段连续的区间, 所以直接线性扫一遍就好了,组合数算算就没问题了. #include<iostream> #include<cstdio>…
[CC-SEINC]Sereja and Subsegment Increasings 题目大意: 有长度为\(n(n\le10^5)\)的序列\(A\)和\(B\). 在一次操作中,可以选择一个区间增加\(1\). 求让\(A\)和\(B\)在模\(4\)意义下相等,至少要对\(A\)执行多少次操作. 思路: 对\(A,B\)对应作差,\(C_i=B_i-A_i\). 求\(C\)的查分\(D_i=C_i-C_{i+1}\). 如果不考虑模\(4\),答案即为\(\sum\max(D_i,0)…
题目链接: hdu:http://acm.hdu.edu.cn/showproblem.php?pid=5229 bc:http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid=582&pid=1002 题解: 设字符串a,b; 结论:先手胜的充分必要条件是|a|+|b|为奇数或a==b. 证明: 数学归纳法: |a|+|b|=0:时,先手败,结论成立 假设|a|+|b|<p时结论成立,现在分类讨论|a|+|b|的…
Input示例 5 1 5 2 4 2 8 3 7 7 9 Output示例 4 first try: O(n^2):二层循环,减法取最大 后五个time limit exceeded #include "bits/stdc++.h" using namespace std; #define LL long long #define INF 0x3f3f3f3f3f #define PI acos(-1) #define N 50010 #define MOD 10 using nam…
openjudge  8464 这道题其实很简单,算是DP的基础题,比较适合开拓DP思维. 题目比较有欺骗性,其实稍微想想就可以解决,因为题意说第一次卖出后才能买入,所以我们可以考虑枚举断点,所以题目一下变得简单,我们线性扫两遍,算最大值就好了. 具体为: 由于不能同时进行两次交易,所以枚举断点,一遍扫做1到n的前n个的最大值,由于最大值一定是单调递增的,所以每次读入新的a[i],判断是否有更优解就好了,同理,一遍扫n到1的后n个的最大值,做同样的事,然后枚举断点取最大值. 代码如下: #inc…
2018清华冬令营 又一次由于接连而至的玄学现象跪惨,错失良机,就不再公开提我这次惨痛的经历了,写点干货-- day1 A 零食 (1s, 1G) 试题简述 \(n\) 种物品1,\(m\) 种物品2,要求安排一个两种物品的排列,当且仅当某个物品的有前一个物品前一个物品种类和它一样时才能让总和增加这个物品的权值. 现给出所有物品的权值,求最大总和. 输入 第一行一个整数 \(T\),表示数据组数. 第二行一个正整数 \(n\),表示物品1的个数. 第三行 \(n\) 个整数,\(A_1, A_2…
聪哥的工资 (money/money.in/money.out) 时限1000ms 内存256MB 题目描述 lwher: 了体验劳苦大众的生活,聪哥在暑假参加了打零工的活动,这个活动分为n个工作日,每个工作日的工资为Vi.有m个结算工钱的时间,聪哥可以自由安排这些时间,也就是说什么时候拿钱,老板说的不算,聪哥才有发言权! (因为聪哥是土豪,他是老板的老板,你觉得老板敢给聪哥安排任务吗?所以聪哥的工作就是看心情去拿钱拿完就走人啦...) 聪哥不喜欢身上一次性有太多的钱,于是他想安排一下拿钱的时间…
CodeForces - 204C Little Elephant and Furik and Rubik 个人感觉是很好的一道题 这道题乍一看我们无从下手,那我们就先想想怎么打暴力 暴力还不简单?枚举所有字串,再枚举所有位置,算出所有答案不就行了 我们自然不能无脑暴力,但是暴力可以给我们启发 我们知道所有对答案做出贡献的字符一定是相同的(废话) 所以我们可以O(n^2)首先枚举两个字符串中相同的字符然后再考虑如何贡献 然后计算出所有的方案下的值,再除以n*(n+1)*(2*n+1)/6 [不知…
题目大意: 给定一个数组,求一个最大的长度的子串至少出现过k次 一个子串出现多次,也就是说必然存在2个子串间的前缀长度为所求的值 通过二分答案,通过线性扫一遍,去判断出现次数,也就是说每次遇见一个height[i] , 出现次数就加1,否则重置为1 #include <cstdio> #include <cstring> #include <iostream> using namespace std; ; int rank[N] , sa[N] , height[N];…
今天纠结了一整天============================================================== leetcode66 https://leetcode.com/problems/plus-one/?tab=Description leetcode119 https://leetcode.com/problems/pascals-triangle-ii/?tab=Description leetcode121 https://leetcode.com/…
CF Educational Round 78 (Div2)题解报告A~E A:Two Rival Students​ 依题意模拟即可 #include<bits/stdc++.h> using namespace std; int T; int n, x, a, b; int main() { cin >> T; while(T--) { cin >> n >> x >> a >> b; if(a > b) swap(a, b…
300iq Contest 1 简要题解 咕咕咕 codeforces A. Angle Beats description 有一张\(n\times m\)的方阵,每个位置上标有*,+,.中的一种.你要用尽可能多的\(I\)型和\(L\)型覆盖这个方阵(均占恰好\(3\)个位置),要求\(I\)型中间那个位置必须是+,\(L\)型中间那个位置必须是*或者+,两者非中间的两个位置必须都是.. \(1 \le n, m \le 100.\) solution 由于某种原因,这道题咕咕咕了. B.…
题目描述 对于一个给定的序列a1, -, an,我们对它进行一个操作reduce(i),该操作将数列中的元素ai和ai+1用一个元素max(ai,ai+1)替代,这样得到一个比原来序列短的新序列.这一操作的代价是max(ai,ai+1).进行n-1次该操作后,可以得到一个长度为1的序列. 我们的任务是计算代价最小的reduce操作步骤,将给定的序列变成长度为1的序列. 输入格式 第一行为一个整数n( 1 <= n <= 1,000,000 ),表示给定序列的长度. 接下来的n行,每行一个整数a…