随笔分类 - ACM
摘要:【题解】:二进制拆分 任意一个整数都可以拆分成 2^0 + 2^1 + 2^2 + 2^3 + ....+ m【code】: 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 int main() 9 {10 int n;11 while(~scanf("%d",&n))12 {13 int i,sum=0;14 for(i=0;;i++)15 {16 sum+=pow(2,i);17 ...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=1057【题意】:给定x的值,带入f(x)求函数值【题解】:注意第一个数的符号可能是'+',这里把我坑死了。。。【code】: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 char str[100000],tstr[1000];10 int stack[10000];11 void init()12 {13 int i;14 for(i=0;i='...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=1053【题意】:基本上就是求直线与圆的交点坐标【题解】:这种题我都比较喜欢用二分,三分做,果然可以完爆,哈哈,特有成就感的说。。。【code】: 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 #define eps 1e-12 8 9 struct Point 10 { 11 double x,y; 12 Point(){} 13 Point(dou...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=4187【题意】:如题【题解】:取n,m的最小值进行遍历就可以了: 注意 0 1 这组测试数据【code】: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 int main()10 {11 int t;12 scanf("%d",&t);13 while(t--)14 {15 int n,m;16 ch...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=27987【题意】:给定坐标输出图形【题解】:处理坐标上的小技巧【code】: 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 #define N 100 9 10 char str[N*3][N*3];11 12 void init()13 {14 int i,j;15 for(i=0;ix) x1=x;50 if(y1>y) y1=y;51 ...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=4225【题意】:给定任意杨辉三角的行数n,请输出杨辉三角中前n行中总共有多少偶数。【题解】: 找规律:1为奇数 0为偶数 打出表1111011111100011100111010101111111111000000011100000011101000001011111000011111000100010001110011001100111010101010101011111111111111111该发现什么了吧!!!【code】: 1 #include 2 #include 3 #inclu...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/contest_show.php?cid=2876#problem/31796【题意】: 如题,注意大小写情况【code】: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 using namespace std; 9 10 struct Nod 11 { 12 int x,y,step; 13 }nd1,nd2; 14 15 int step[500][500]; 16 char temp[500]; ...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=27874【题意】:给你一个三角形三个顶点的坐标ABC,三角形各边取一点DEF,将三角形周长平均分割成两部分,求AE,DC,FB是否相交于一点,是,输出交点坐标,否,输出ERROR【题解】:几何体,一看就有点慌,就怕它卡精度,以前坑怕了,这里给出思路以及解题过程:先求出DEF的坐标再说,拿D举例:D在AB线段上,并满足AC+AD==DB+BC,这里我们可以用二分枚举来枚举出D的坐标EF点同上然后,CD与AE的交点O,判断O是不是也同时在BF上,在输出O的坐标,不在输出ERROR【ACcode】: .
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=20838【题意】: 有点长,略。【code】: 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 using namespace std; 9 10 double rat[220][220];11 double drat[220][220];12 13 struct Nod14 {15 int id;16 double rt;17 }node[220];18 19 int ...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=20832【题意】:给你一串字符串,求一个ST(0 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 using namespace std; 9 10 int getST(char *names)11 {12 int a[100];13 int len = strlen(names);14 int i;15 int ST;16 int b[1000],cnt=0;17 f...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=20834【题意】:每次减少一半的空格,问经过多少次操作能得到每个单词之间的空格为1,输入字符串大小小于等于1MB【题解】:1、如果单词之间最大的空格数为2的n次方,那么输出22、否则输出n+1注意字符串大小1MB,这里用C++中string进行处理【code】: 1 #include 2 #include 3 #include 4 #include 5 #include 6 7 using namespace std; 8 9 int main()10 {11 string ...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=1071【题意】:经过四个点的顺逆时针旋转,得到最终拼图【题解】:康拓展开+BFS,注意先预处理,得到所有状态,然后用hash来调用存在的状态【code】: 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 #define N 363000 8 9 struct Nod 10 { 11 int b[10]; 12 int pos; 13 }nd1,nd2; 14 ...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=4357【题意】:在1000个数中选择3个之和是m的倍数,可能有多种选择方案,请输出标号排序最小的一组,并且三个标号按升序输出【题解】:三层循环,转化成两层循环 先将1000个数对m取余,存入mod数组,表示是否存在,并对该余数出现的位置进行标记保存,两层循环遍历两个数,用m-这两个数之和,看是否存在mod中,并且位置没有在之前的循环i、j中出现就可以。。。【code】: 1 #include 2 #include 3 #include 4 #include 5 #include 6 ...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=4359【题意】:输入N,表示几位数,0-这个N位数,有多少个满足条件的号码,不满足的情况为出现4,13的情况【题解】: 写暴力代码找规律 1 92 80 3 711 4 6319得出规律 a[i] = a[i-1]*9 - a[i-2]另外注意处理减法出现负数的情况【code】: 1 #include 2 #include 3 #include 4 #include 5 6 #define MOD 100000000 7 #define N 1000000 8 ...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=4358【题意】:给定起始位置和方向和目的地,按照左转、前进、右转、后退的优先级递减,也就是说能左转就左转,不能则继续前进,。。。,能走到T的位置输出YES,不能则输出NO。。。【题解】: 首先我们知道YES肯定就是走到了,若出现NO的情况,肯定是出现了死循环,这题主要考标记,什么时候表示已经进入了死循环呢?每个位置有一个方向,我们将这个位置第一次出现方向的时候标记下来,注意是第一次的方向噢,第二次经过的时候判断,是否方向相同,相同则表示出现了跟之前一样的状态,也就是说出现了循环。。。【code】.
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=4353【题意】:每次选择一个小格后,该小格的右上部分就全被删去了,且要求每次至少删去一个格子,选中左下角格子的人算输。【题解】:这个题嘛,这个题嘛,这个题嘛,还是看代码吧,不解释。。。【code】: 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 int main() 9 {10 int t;11 scanf("%d",&t);12 while(t--)13 ...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=4352【题意】:给你个长串,输出该长串中能第一放出的技能,每个技能有对应的一个小子串,不能放出任何技能输出“Nothing Happened”【题解】:暴力匹配(数据量不大),若数据量巨大,则得用ac自动机解【code】: 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 #define INF 1e9 8 9 struct Nod10 {11 char str1[40];12 ...
阅读全文
摘要:http://www.bnuoj.com/bnuoj/problem_show.php?pid=4351【题意】:用最小的矩形框,框住像素点差超过5的点。【题解】:求坐标x,y最大最小值【code】: 1 #include 2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 int map[220][220]; 9 10 int abs(int x)11 {12 return x5)36 {37 exist=1;38 ...
阅读全文
摘要:题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4740【题意】: 森林里有一只驴和一只老虎,驴和老虎互相从来都没有见过,各自自己走过的地方不能走第二次,都会朝着一个方向走,直到这个方向不能走,然后转向,驴只会右转,老虎只会左转,当转过一次之后还是不能往前走,那么它就停下来不再移动了。。。问驴和老虎是否能相遇在一个坐标点。。。【题解】: 暴力搜索,模拟过程就能过,不存在超时问题【code】: 1 /* 2 JudgeStatus:Accepted time:15MS 3 Memory:4212K codeLenght:2591B...
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=3714【题意】: 题目意思看了很久很久,简单地说就是给你n个二次函数,定义域为[0,1000], 求x在定义域中每个x所在的n个函数的最大值的最小值。很拗口吧,显然这题不是组队或者耐心的做是不知道性质的,至少我没看出来。网上说是三分,我画了几个图,确实是。根据二次函数的性质,增长的快慢已经确定了,那的确是单峰的。那就OK了。另外eps的问题1e-8还是wa,1e-9AC。想了下,因为有系数a,b,c的缘故,一乘就WA了。代码就是三分了,没什么特殊的。(三分,什么时候我能主动的看出你???)【题解】: 第二..
阅读全文

浙公网安备 33010602011771号