赞
踩
题目异常友好。
有不懂的,直接留言。
目录
比较两个分数大小;
法一:直接通分时要注意数据范围。
- #include <iostream>
-
- int main()
- {
- long long a , b , x , y ;
- scanf("%d%d%d%d",&a,&b,&x,&y) ;
- a*= y ;
- x*= b ;
- if(a > x)
- printf("H is juanwang!\n") ;
- else if(a < x)
- printf("T is juanwang!\n") ;
- else
- printf("We are juanwang!\n") ;
- return 0;
- }

法二:除法计算注意,double不能直接判等号。
- #include <iostream>
- #include <algorithm>
- #include <cmath>
-
- #define double long double
-
- const double eps = 1e-20 ;
-
- int dcmp(double x,double y){
- if(fabs(x - y ) < eps) return 0 ;
- if(x < y) return -1;
- return 1 ;
- }
- int main()
- {
- double a, b , x , y ;
- scanf("%d%d%d%d" ,&a ,&b ,&x ,&y) ;
- double s = a/b ;
- double u = x/y ;
- if(dcmp(s,u) > 0)
- printf("H is juanwang!\n") ;
- else if(dcmp(s,u) < 0)
- printf("T is juanwang!\n") ;
- else
- printf("We are juanwang!\n") ;
- return 0 ;
- }

算是一个简单博弈吧;
例有两种花色的纸牌:
新生第一次取走了第一种纸牌m张,则S学长取走另一种花色m张;
此后不管新生取走哪一种花色的纸牌,也不论取走多少张,S学长都会取走另一种花色的纸牌同样多张;
这样,最后一张纸牌一定是S学长取走的。
拓展到四种花色,也是同样道理。
这样的话,无论如何,结果都是S学长必胜。
- #include <stdio.h>
-
- int main()
- {
- int n ;
- scanf("%d",&n) ;
- printf("tql\n") ;
- return 0;
- }
这是一道简单的高中数学题;
已知:二项式展开式的系数,奇数项之和等于偶数项之和。
选偶数个人,是:
选奇数个人,是:
则结果为:
二项式展开式得偶数项多一个 ;
则最后结果为 ;
如果,想不起来这个定理的话,建议写几个试试,找规律。
- #include <stdio.h>
-
- int main()
- {
- int n ;
- scanf("%d",&n) ;
- printf("-1\n") ;
- return 0;
- }
简单贪心;
每次只能去买两种东西,必须在第一种东西做好之前回来;
则,每次选取得两个数字不能相等;
最终结果等于每次选择的两个数字的最大值再加和;
为了最后的时间加和最小,则需要让每两个时间中最小的那个时间值,尽可能的大;
做法:先排序,每次选择两个不同的数,消耗的时间为较大的那个数值;
- #include <iostream>
- #include <cstdio>
-
- int a[1010], b[1010];
-
- void Sort(int a[], int n)
- {
- for (int i = n - 1; i > 0; i--)
- for (int j = 0; j < i; j++)
- if (a[j] > a[j + 1])
- {
- int t = a[j];
- a[j] = a[j + 1];
- a[j + 1] = t;
- }
- }
-
- int main()
- {
- int n;
- scanf("%d", &n);
- for (int i = 0; i < n; i++)
- scanf("%d", &a[i]);
- Sort(a , n);
- int ans = 0;
- for (int i = n - 1; i >= 0; i--)
- {
- if (b[i])
- continue;
- ans += a[i];
- for (int j = i - 1; j >= 0; j--)
- {
- if (!b[j] && a[j] < a[i])
- {
- b[j] = 1;
- break;
- }
- }
- }
- printf("%d\n", ans);
- return 0;
- }

本场最签到题;
每次循环当没有达到目标的话,天数加加,分数增长值加加。
- #include <iostream>
- #include <cstdio>
-
- int main()
- {
- int n , k ;
- scanf("%d%d",&n,&k) ;
- int ans = 0 ;
- int day = 0 ;
- while(ans < n)
- ans += k , k++ , day ++ ;
- printf("%d\n" , day) ;
- return 0 ;
- }
如果对每个t都过一遍1~n的话,时间复杂度达到了1e12,这样的话时间超限,所以这个题得要先处理一下。
SO,这个只要把前缀和处理一下,这个题就变成了签到题。
例:
原数组:
前缀和 为数组的前
项和
前缀和:
前缀和算法能够快速的求出某段区间的和;
出题人说:前缀和更深度的学习看这里。
- #include <stdio.h>
-
- int a[1000010] ;
-
- int main()
- {
- int n ;
- scanf("%d" , &n) ;
- a[0] = 0 ;
- for(int i = 1 ;i <= n ; i++)
- {
- int x ;
- scanf("%d" , &x) ;
- a[i] = a[i-1]+x ;//a[i]表示前i个人的分数的和
- }
- int t ;
- scanf("%d" , &t) ;
- while(t--)
- {
- int x ;
- scanf("%d" , &x) ;
- printf("%d\n" , a[x]) ;
- }
- return 0 ;
- }

简单分支;
依照题意可得,如下:
- #include <iostream>
- #include <cstdio>
-
- int a[1000010] ;
-
- int main()
- {
- int n;
- scanf("%d" ,&n) ;
- int ans = 0 , sum = 0 ;
- while(n--)
- {
- int x , y ;
- scanf("%d%d",&x,&y) ;
- if(x > y)
- {
- if(x==40 && (y==10 || y==20))
- sum += 5 ;
- else
- ans += (x-y) ;
- }
- else
- {
- if(y==40 && (x==10 || x==20))
- ans += 5 ;
- else
- sum += (y-x) ;
- }
- }
- printf("%d %d",ans ,sum) ;
- return 0 ;
- }

简单模拟;
六根棍子拼出两个三角形。
法一:枚举,枚举每种可能拼成三角形的情况,判断即可;
- #include <iostream>
- #include <cstdio>
-
- int is_right(int a , int b , int c)
- {
- if(c+b > a)
- return 1 ;
- return 0 ;
- }
-
- int main()
- {
- int a[10] ;
- for(int i = 0 ; i < 6 ; i++)
- scanf("%d", &a[i]) ;
- int flag = 0 ;
- for(int i = 0 ; i < 6 ; i++)
- for(int j = i+1 ; j < 6 ; j++)
- for(int k = j+1 ; k < 6 ; k++)
- {
- int b[5] ;
- int c = 0 ;
- for(int p = 0 ; p < 6 ; p++)
- if(p != i && p != j && p != k)
- b[c++] = a[p] ;
- if(is_right(a[i] , a[j] , a[k])==1 && is_right(b[0] , b[1] , b[2])==1)
- {
- flag = 1 ;
- break ;
- }
- }
- if(flag == 0)
- printf("No\n") ;
- else
- printf("Yes\n") ;
- return 0 ;
- }

法二:也是枚举
- #include <iostream>
- #include <cstdio>
-
- int main()
- {
- int a[10] ;
- for(int i = 0 ; i < 6 ; i++)
- scanf("%d", &a[i]) ;
- if(a[5] + a[4] > a[3] && a[2] + a[1] > a[0])
- printf("Yes\n") ;
- else if(a[5] + a[3] > a[2] && a[4] + a[1] > a[0])
- printf("Yes\n") ;
- else if(a[5] + a[2] > a[1] && a[4] + a[3] > a[0])
- printf("Yes\n") ;
- else if(a[5] + a[1] > a[0] && a[4] + a[3] > a[2])
- printf("Yes\n") ;
- else
- printf("No\n") ;
- return 0 ;
- }

题解简陋,有问题直接提;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。