2014区域赛首场。。。当然我没去现场。。。去参加省赛了。。。
后来对内用牡丹江的题做了模拟赛。。
水了两道就出去了。。
A题。。 zoj 3819
唉。。竟然写了好几发。。主要就是做出发之后余数对取值有影响
求大值 如果余数为0 还要再减一 求小值 无论余数为多少都要加一。。OK 就是这样
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string.h>
#include <string>
#define eps 1e-8
#define op operator
#define MOD 10009
#define MAXN 100100
#define INF 0x7fffffff
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define FOV(i,a,b) for(int i=a;i>=b;i--)
#define REP(i,a,b) for(int i=a;i<b;i++)
#define REV(i,a,b) for(int i=a-1;i>=b;i--)
#define MEM(a,x) memset(a,x,sizeof a)
#define ll __int64
using namespace std;
int main()
{
//freopen("ceshi.txt","r",stdin);
int tc;
scanf("%d",&tc);
while(tc--)
{
int n,m;
int s1=0,s2=0;
scanf("%d%d",&n,&m);
for(int i=0;i<n-1;i++)
{
int a;
scanf("%d",&a);
s1+=a;
}
for(int i=0;i<m;i++)
{
int a;
scanf("%d",&a);
s2+=a;
}
// cout<<s1<<" "<<s2<<endl;
int mx=(s1)/(n-1);
int mi=(s2)/m;
if((s1-mx*(n-1))==0)
mx-=1;
mi+=1;
printf("%d %d\n",mi,mx);
}
return 0;
}
I 题。。。zoj 3827
题目蛮长的。。。叙述的也是有点烦 其实就是求加权平均值吧
然后主要的就是log运算 注意 如果要计算的值为0 那就是0。。。。这里需要特判一下
#include <cstdio>
#include <iostream>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <string.h>
#include <string>
#define eps 1e-8
#define op operator
#define MOD 10009
#define MAXN 100100
#define INF 0x7fffffff
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define FOV(i,a,b) for(int i=a;i>=b;i--)
#define REP(i,a,b) for(int i=a;i<b;i++)
#define REV(i,a,b) for(int i=a-1;i>=b;i--)
#define MEM(a,x) memset(a,x,sizeof a)
#define ll __int64
using namespace std;
int a[110];
int main()
{
//freopen("ceshi.txt","r",stdin);
int tc;
scanf("%d",&tc);
while(tc--)
{
char ch[10];
int n;
scanf("%d %s",&n,ch);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
double sum=0.0;
if(strcmp(ch,"bit")==0)
{
for(int i=0;i<n;i++)
{
if(a[i]==0)
continue;
sum+=(double)(1.0*(a[i]*1.0/100.0)*log10(a[i]*1.0/100.0)/log10(2.0));
}
// printf("%.12lf\n",sum);
// sum=sum/(1.0*n);
}
if(strcmp(ch,"nat")==0)
{
for(int i=0;i<n;i++)
{
if(a[i]==0)
continue;
sum+=(double)(1.0*(a[i]*1.0/100.0)*log(a[i]*1.0/100.0));
}
// printf("%.12lf\n",sum);
// sum=sum/(1.0*n);
}
if(strcmp(ch,"dit")==0)
{
for(int i=0;i<n;i++)
{
if(a[i]==0)
continue;
sum+=(double)(1.0*(a[i]*1.0/100.0)*log10(a[i]*1.0/100.0));
}
// printf("%.12lf\n",sum);
// sum=sum/(1.0*n);
}
printf("%.12lf\n",sum*(-1.0));
}
return 0;
}