Problem G. Generators Input file: generators.in Output file: generators.outLittle Roman is studying linear congruential generators — one of the oldest and best known pseudorandom number generator algorithms. Linear congruential generator (LCG) starts w…
题目链接  Points Inside A Polygon 题意  给定一个$n$个点的凸多边形,求出$[ \frac{n}{10}]\ $个凸多边形内的整点. 把$n$个点分成$4$类: 横坐标奇,纵坐标奇 横坐标奇,纵坐标偶 横坐标偶,纵坐标奇 横坐标偶,纵坐标偶 根据鸽笼原理,这$4$类点中至少有一类点数目不小于$[ \frac{n}{4}]\ $ 每一个类别中,每两个点的中点肯定为整点,并且当这两个点不在凸多边形上相邻的时候, 他们一定在凸多边形内. 那么把这$4$个类别里面的点分别处理…
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1393 正解一眼看出来的应该是鸽笼原理.记录每个位置的前缀和,就是dp[i][1]表示前i个数中,1的个数.dp[i][0]同理. 然后计算出每一个位置的dp[i][1] - dp[i][0],如果和前面的出现相同,那么这一段就是贡献. 也可以从化简dp公式来看. 也是一样的都dp[i][0] && dp[i][1] 那么设区间为be, en 如果要相同,则需要dp…
To become the king of Codeforces, Kuroni has to solve the following problem. He is given n numbers a1,a2,-,an. Help Kuroni to calculate ∏1≤i<j≤n|ai−aj|. As result can be very big, output it modulo m. If you are not familiar with short notation, ∏1≤i<…
题目:传送门. 题意:平面上有n个点,问是否存在四个点 (A,B,C,D)(A<B,C<D,A≠CorB≠D)使得AB的横纵坐标差的绝对值的和等于CD的横纵坐标差的绝对值的和,n<10^5,点的坐标值m<10^5. 题解:表面上这道题复杂度是O(n^2)会超时的,而实际上这些坐标差绝对值的和最大是2*10^5,所以复杂度不是O(n^2),而是O(min(n^2,m)),这就是著名的鸽笼原理. #include <iostream> #include <cstdio…
描述 http://poj.org/problem?id=1065 木棍有重量 w 和长度 l 两种属性,要使 l 和 w 同时单调不降,否则切割机器就要停一次,问最少停多少次(开始时停一次). Wooden Sticks Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 21277   Accepted: 9030 Description There is a pile of n wooden sticks. The le…
中学就听说过抽屉原理,可惜一直没机会见识,现在这题有鸽笼原理的结论,但其实知不知道鸽笼原理都可以做 先总结一下鸽笼原理: 有n+1件或n+1件以上的物品要放到n个抽屉中,那么至少有一个抽屉里有两个或两个以上物品. 如果你知道这个结论: a1,a2,a3...am是正整数序列,至少存在整数k和r,1<=k<r<=m,使得ak+a(k+1)+...+a(r)是m的倍数. 证明比较简单: Sk表示前k个数之和, (1)若Sk%m==0,前k个数就是m的倍数 (2)如果Sn与St模m同余,那么从…
关于鸽笼原理的知识看我写的另一篇博客 http://blog.csdn.net/u011026968/article/details/11564841 (需要说明的是,我写的代码在有答案时就输出结果了,但OJ也是从文件读入,所以乍一看我的好像在没输入完就有结果了,但OJ不知道,其实我是直接拿poj3370的代码AC的,32MS,O(∩_∩)O) 直接贴代码 #include<cstdio> #include<cstring> using namespace std; #define…
UVA 10620 - A Flea on a Chessboard 题目链接 题意:给定一个跳蚤位置和移动方向.如今在一个国际象棋棋盘上,左下角为黑格,一个格子为s*s,推断是否能移动到白格子.问要移动多少次才干到白格,边界不算白格. 思路:利用鸽笼原理落在黑格子和边界上的一共同拥有(s + 1)^2个点,也就是说.假设形成循环,周期肯定在这之内.所以能够不断去模拟跳格子,直到踩到白格,或者踩到之前落到过的黑格就结束 只是事实上还有更优的方法,由于跳蚤跳跃路径为直线,观察下能够发现假设能够到白…
题意:现在有函数,每一项Xi=(A*X(i-1)+B)%C.现在给定N个函数以及K:X0,A,B,C.然你再每个函数选择一个数,使得其和最大,而且不被K整除. X0,A,B,C<=1e3 :K<=1e9 思路:因为C比较小,我们可以找到循环节(不一定是从0开始就循环了,所以用vis判定是否出现过).然后保存每个函数的最大值,以及不同余的第二大值. 如果所有数的最大值不被K整除,那么最多有一个数被第二大替代 (一个简单题我居然wa了几发,所以还是写一下. #include<bits/std…