总体情况还算可以。
需要注意以下几点:
1。比赛开始时不要慌,头脑必须清醒,不能乱。
2。对于数据超级大的题,不是公式题就可能是规律题,此时就可以小范围打表,观察是否有规律。
3。相信队友。
最最最重要的是,不要过了样例就TM浪,(T.T) 我想哭。。。。
下面是几道题总结:
Clock
题目描述
钟的一圈是12小时,其中时针、分钟都是匀速移动。一天从00:00~23:59,请问某一时刻,时针与分针的夹角是多少?
输入
第一行是一个整数 T(1≤T≤1440) ,表示样例的个数。以后每行是一个时刻,格式为HH:MM。
输出
每行输出一个样例的结果,如果结果不是整数,小数部分不要输出多余的0。
样例输入
2 00:01 00:30
样例输出
5.5
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int h,m,j=0;
scanf("%d:%d",&h,&m);
if(h>=12)
h-=12;
double p=fabs(h*30*1.0+m*(0.5-6));
if(p>180)
p=360-p;
if(m&1)
printf("%.1lf\n",p);
else
printf("%.0lf\n",p);
}
}
这道题没啥说的,公式题;
角度公式:9点36分:9*30+36*0.5-36*12;
继续:
Finally, which light is on?
题目描述
有n盏灯,编号1~n。一开始灯都是关着的,每个灯有一个开关,按奇数次为打开,按偶数次为关闭。我们先把编号为1的倍数的灯按一下开关,再把编号为2的倍数的灯按一下开关,依次下去,一直到把编号为n的倍数灯按一下,请问最后有多少盏灯是亮的?
输入
第一行是一个整数 T(1≤T≤10000) ,表示样例的个数。以后的每行一个样例,为一个整数 n(1≤n≤109) 。
输出
每行输出一个样例的结果。
样例输入
2
1
5
样例输出
1 2
样例解释
第2个样例,先把1~5都打开;然后把2,4关掉;然后把3关掉;然后把4打开;然后把5关掉;所以,最后剩1和4是亮着的。
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,m=3,i;
int sum=0;
scanf("%d",&n);
for( i=0;sum<n;i++)
sum+=m,
m+=2;
printf("%d\n",i);
}
}
这道题没法说,一直尝试用类似于素数筛法的方法怼出来,可惜没什么卵用,,,
打了前几项的表才发现,原来是个规律题,,,3,,5,,7,,9,,,,,(长个记性)
Balance
题目描述
小明有一架天平,小明想称出
1∼n
克的物品,请问最少需要几颗砝码?
比如小明想称出
1∼4
克的物品,需要2颗砝码,为1和3克。
输入
第一行是一个整数 T(1≤T≤10000) ,表示样例的个数。以后每行一个样例,为一个整数 ( 1≤n≤109 )。
输出
每行输出一个样例的结果。
样例输入
3 1 4 40
样例输出
1 2 4
#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
long long n;
scanf("%lld",&n);
long long ans=0,sum=0,l=1;
while(sum<n)
{
ans++;
sum+=l;
l*=3;
}
printf("%lld\n",ans);
}
}
Estrella's Travel | ||
Accepted : 100 | Submit : 258 | |
Time Limit : 1000 MS | Memory Limit : 65536 KB |
Estrella's Travel题目描述Estrella喜欢旅行,她准备去自己心仪的城市看风景。她精心选择了一条线路,准备自驾游。自驾线路是一条链路,上有 n+1 座城市,编号依次为 0∼n ,Estrella住在 0 号城市,目的地是 n 号城市。Estrella为了环保,驾驶了一辆纯电动车,所以最多只能一次行驶 m 个城市的距离。如果Estrella在某个城市(包括 n 号城市)停留,自然会需要一些费用,当然每个城市的花费是不一样,Estrella想知道,这个花费最小是多少? 输入多组数据输入。 输出对于每个数据,输出一行,表示总的花费。 样例输入5 2 1 2 3 4 5 6 2 6 5 4 3 2 1 样例输出9 9 样例解释第1个样例,依次到城市1,3,5,所以花费为1+3+5=9; |
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#include <vector>
#include <map>
#include <queue>
#include <set>
#include <string>
using namespace std;
typedef long long LL;
const int N=1010;
const int INF=1e9+10;
int a[N],dp[N];
int main()
{
int n,k;
while(~scanf("%d%d",&n,&k))
{
memset(dp,INF,sizeof(dp));
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
dp[0]=0;
for(int i=1; i<=n; i++)
for(int j=i-1; j>=i-k&&j>=0; j--)
dp[i]=min(dp[i],dp[j]+a[i]);
printf("%d\n",dp[n]);
}
}