总结:太急躁 没看清楚题目的要求输入输出(知道真相的我眼泪掉下来T T %64d)
Description
Input
Output
Sample Input
Sample Output
一直到最后都没做出来
最后发现是格式错误 ................................................
改为cin完全 可以 蠢b!
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
const int M=1e6;
long long s[M];
int main()
{
int t;
cin>>t;
long long i;
int d=1;
memset(s,0,sizeof(s));
for(i=1; i<M; i++)
{
s[i]=i+s[i-1];
}
while(t--)
{
long long n,m;
cin>>n>>m;
if(n==m)
{
printf("Case %d:No\n",d++);
continue;
}
long long mx=max(n,m);
long long mi=min(n,m);
long long k=0;
while(s[k]<mi)
k++;
// cout<<s[k]<<endl;
if(mi==s[k])
{
if(mi+k==mx||mi+k+1==mx)
printf("Case %d:Yes\n",d++);
else
printf("Case %d:No\n",d++);
}
else
{
if(mi+1==mx||mi+k==mx||mi+k+1==mx)
printf("Case %d:Yes\n",d++);
else
printf("Case %d:No\n",d++);
}
}
}
Description
于是他们开始玩排火车了。。。
现在假设Apple和Gaga各有N张牌,Apple先出牌。请你给出一轮下来Apple和Gaga各获得的牌数。
Input
第一行T,表示T组测试数据,接下来有T部分。
每部分开头是一个整数N(1 <= N <= 50000),表示Apple和Gaga的牌数。接下来有2行,给出Apple和Gaga的牌的情况。首先给出Apple的牌,有N个整数,第i个整数xi(1 <= xi <= 100000)表示Apple的第i张牌面。其次给出Gaga的牌,格式类似。
Output
Sample Input
Sample Output
简答模拟 用stack装扑克
每装一张牌标记一下
出现重复标记 出栈
不要忘记最后注意 suma=+2;
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stack>
using namespace std;
const int M=99999;
int a[M],b[M];
int f[M];
int main()
{
int t;
scanf("%d",&t);
int d=1;
while(t--)
{
int n;
scanf("%d",&n);
memset(f,0,sizeof(f));
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
for(int i=0;i<n;i++)
scanf("%d",&b[i]);
stack<int>tp;
int cnta=0,cntg=0;
for(int i=0;i<n;i++)
{
int k=a[i];
if(!f[k])
{
tp.push(k);
f[k]=1;
}
else
{
while(tp.top()!=k)
{
f[tp.top()]=0;
tp.pop();
cnta++;
}
tp.pop();
cnta+=2;
f[k]=0;
}
k=b[i];
if(!f[k])
{
tp.push(k);
f[k]=1;
}
else
{
while(tp.top()!=k)
{
f[tp.top()]=0;
tp.pop();
cntg++;
}
tp.pop();
cntg+=2;
f[k]=0;
}
}
printf("Case %d:Apple:%d Gaga:%d\n",d++,cnta,cntg);
}
}
第一次变化插入了3个数字移动4个单位 增加了4个好感度
第二次变化插入了1个数字移动2个单位 增加了2个好感度
maxfun=6;
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
const int M=100;
int a[M],f[M];
int main()
{
int t;
scanf("%d",&t);
int tot=1;
while(t--)
{
int n;
scanf("%d",&n);
memset(f,0,sizeof(f));
for(int i=0;i<n;i++)
{
scanf("%d",&a[i]);
}
sort(a,a+n);
int num=n+1,res=0;
for(int i=0;i<n-1;i++)
{
if(!f[a[i]]&&a[i]==a[i+1])
{
num-=2;
res+=num;
f[a[i]]=1;
}
}
printf("Case %d:\n",tot++);
printf("%d\n\n",res);
}
}
Description
Input
数据的第一行包含一个正整数T表示数据组数(1 <= T <= 100) 接下来T组数据。
对于每组数据,
第一行包含一个正整数N,代表平面上点的个数 。(1<= N <= 50,)
接下来N行,每行包含2个实数Xi, Yi,代表第i个点的坐标 (0.00 <= Xi,Yi <= 100.00小数点后至多2位)
数据不保证不会出现坐标相同的点。
Output
Sample Input
Sample Output
当时没看题干直接敲了一个多边形面积代码
发现wa了
然后就不想做了 :-(
海伦公式sqrt(p*(p-a)*(p-b)*(p-c))
求出没条边的长度
直接暴力就过了
#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<math.h>
using namespace std;
const int M=55;
struct point
{
double x,y;
} pi[M];
double d[M][M];
double a,b,c,p;
double b_pow(double x1,double y1,double x2,double y2)
{
return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
}
int main()
{
int t;
scanf("%d",&t);
int tot=1;
while(t--)
{
int n;
scanf("%d",&n);
for(int i=0; i<n; i++)
scanf("%lf%lf",&pi[i].x,&pi[i].y);
for(int i=0; i<n-1; i++)
for(int j=i+1; j<n; j++)
{
d[i][j]=sqrt(b_pow(pi[i].x,pi[i].y,pi[j].x,pi[j].y));
}
// for(int i=0;i<n-1;i++)
// for(int j=i+1;j<n;j++)
// {
// cout<<d[i][j]<<" ";
// }
// cout<<endl;
double sum=0,s;
for(int i=0; i<n-2; i++)
for(int j=i+1; j<n-1; j++)
for(int k=j+1; k<n; k++)
{
a=d[i][j];
b=d[i][k];
c=d[j][k];
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
// cout<<s<<endl;
sum+=s;
}
printf("Case %d: ",tot++);
printf("%.1lf\n",sum);
// cout<<sum<<endl;
}
}