首先吐槽一下,ca爷出的这套题到处都是坑,bestcoder变成besthack,Ranting已经掉得不能看了
A题:
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5665
分析:这题题目写错,一wa,最后发现是求的非负数
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <map>
#include <bitset>
#include <cmath>
#include <queue>
#include <stack>
using namespace std;
const int maxn=;
long long a[maxn];
int main()
{
int t,n;
cin>>t;
while(t--)
{
cin>>n;
for(int i=;i<n;i++)
cin>>a[i];
int flag=,flag1=;
for(int i=;i<n;i++)
{
if(a[i]==)
{
flag=;
}else if(a[i]==)
{
flag1=;
}
}
if(flag&&flag1) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return ;
}
B题:
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5666
分析:因为p是质数,所以内部线段上不可能有点,直接皮克定理,取模3A
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<vector>
#include<algorithm>
using namespace std;
struct point{
long long x,y;
}p[],m[];
long long gcd(long long a,long long b){
long long c;
while(b){
c=a%b;
a=b;
b=c;
}
return a;
}
long long S(point p1,point p2,point p0){
return abs((p1.x-p0.x)*(p2.y-p0.y)-(p1.y-p0.y)*(p2.x-p0.x));
}
int main(){
long long sum,s,ans;
int t;
long long h,q;
cin>>t;
while(t--){
cin>>h>>q;
p[].x=,p[].y=;
p[].x=h,p[].y=;
p[].x=,p[].y=h;
m[].x=abs(p[].x-p[].x);m[].y=abs(p[].y-p[].y);
m[].x=abs(p[].x-p[].x);m[].y=abs(p[].y-p[].y);
m[].x=abs(p[].x-p[].x);m[].y=abs(p[].y-p[].y);
sum=gcd(m[].x,m[].y)+gcd(m[].x,m[].y)+gcd(m[].x,m[].y);
s=S(p[],p[],p[]);
ans=(s-sum+)/%q;
cout<<ans<<endl;
}
return ;
}
然而事实证明了,这个题目会被hack,因为会爆long long,赛后java写了个大数类才过的,皮克定理最后推出公式是(q-1)*(q-2)/2
import java.math.BigInteger;
import java.util.Scanner; public class Main { @SuppressWarnings("resource")
public static void main(String[] args) {
Scanner cin=new Scanner(System.in);
int t;
t=cin.nextInt();
for(int i=0;i<t;i++){
BigInteger p,q,sum1,sum2;
p=cin.nextBigInteger();
q=cin.nextBigInteger();
sum1=p.subtract(BigInteger.valueOf(1)).divide(BigInteger.valueOf(2));
sum2=p.subtract(BigInteger.valueOf(2));
System.out.println(sum1.multiply(sum2).mod(q));
}
} }
Accept