acm
文章平均质量分 53
杨鹏1234
相信自己,一定会坚持下来的。
展开
-
codeforces 374A
题意:矩形网格中的一点加减a,b,求到四个顶点距离的最小值思路: 归一法;将一个点到四个顶点的距离,归成到其中一个顶点的距离,到其他三顶点的距离归成此点相对于矩形的对称点到特定点距离。因此不需要用bfs或者dfs去搜,同时跟据数据量去搜也会超时。(归成到(0,0)最好处理)#include#include#include#include#includeusing namesp原创 2014-02-22 19:54:35 · 771 阅读 · 0 评论 -
hdu 1097
思路: 模运算:模运算与基本四则运算有些相似,但是除法例外。其规则如下:(a + b) % p = (a % p + b % p) % p (1)(a - b) % p = (a % p - b % p) % p (2)(a * b) % p = (a % p * b % p) % p (3)(a^b) % p = ((a % p)^b) % p (4)原创 2014-03-02 10:51:27 · 798 阅读 · 0 评论 -
codeforces 397B
思路: 其中个数最多有n/l,个数最少有n/r,只要n在(n/l*l,n/l*r)之间,最会有答案使得结果为n#include#include#includeusing namespace std;int main(){ int t,n,l,r,i,j; scanf("%d",&t); while(t--){ scanf("%d%d%d",&n,&l,&r); if(n原创 2014-02-28 09:47:52 · 855 阅读 · 0 评论 -
codeforce 370C
思路:首先很容易发现最多人用的颜色的人数如果大于n/2,就肯定不能让全部人都成功戴上两只不同颜色的手套。反过来想,如果这个人数小于等于n/2又如何呢?的确,这就能让全部人都能戴上两只不同颜色的手套(每个人都留一只自己原本的,再要别人的一只手套就可以了)。#include#include#include#includeusing namespace std;const int N=1000原创 2014-02-23 22:07:15 · 809 阅读 · 0 评论 -
codeforces 370B
思路: 如果一个串是另外一个串的字串,那么此串一定不会成功。#include#include#include#includeusing namespace std;const int N=110;int h[N],g[N];setf[N];set::iterator m;int main(){ int n,i,j,k; while(scanf("%d",&n)!=EOF)原创 2014-02-23 22:01:02 · 773 阅读 · 0 评论 -
codeforces 371B
思路:将每个数都除以2,3,5直到不能再除,如果最后数不一样就返回-1,一样就根据除的次数返回,也可以先求最大公约数,然后看剩下的是不是能被2,3,5除尽。#include#includeusing namespace std;int ans;int x[5],y[5];int gcd(int a,int b){ if(b==0) return a; r转载 2014-02-23 21:56:38 · 772 阅读 · 0 评论 -
codeForces 374B
思路:如果为偶数序列(545454) 那么只有一中,如果为奇数序列(54545)则有995,959,599这三种序列,经过推算满足最大连续奇数序列的数目k,k/2+1,由于此序列中存在多个连续的奇数序列则最终答案为ans*=(k/2+1),(ans初始化为1)#include#include#includeusing namespace std;const int N=100010;in原创 2014-02-22 20:20:03 · 768 阅读 · 0 评论 -
codeFores375A
思路:构造法将1、6、8、9取出来,因为1689的排列所有除7的余数都能得到,所以可以将其他的数放在最前面,然后后面的缺几就用1689的排列去补充就够了。举例:P为1689的排列,xxxP%7=((xxx0000%7)+(P%7))%7,求出xxx0000%7的余数为5的话,那么构造一个P使得(P%7)余2就能够使这个数被7整除了。#include#include#includ原创 2014-02-22 19:46:44 · 742 阅读 · 0 评论 -
codeForces 373B
深刻理解题意,不可大意啊!!!!!!!!!!!!!思路: 简单的模拟,按照流程依次往下做就可以了#include#include#includeusing namespace std;const int N=100010;__int64 getlen(__int64 m){ __int64 res=0; while(m){ res++; m/=10; } retu原创 2014-02-22 21:25:26 · 717 阅读 · 0 评论 -
uva100
思路: 求的过程中应该将原先求过得数保留下来,应用map数组的方式保留下来。否则会出现超时或者用数组保留下来会出现runtime error。#include#include#include#include#includeusing namespace std;maps;int main(){ int n1,n2; while(scanf("%d%d",&n1,&n2)!=E原创 2014-03-02 10:14:43 · 1271 阅读 · 0 评论