Apple

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 982    Accepted Submission(s): 323

Problem Description
Apple is Taotao's favourite fruit. In his backyard, there are three apple trees with coordinates (x1,y1), (x2,y2), and (x3,y3). Now Taotao is planning to plant a new one, but he is not willing to take these trees too close. He believes that the new apple tree should be outside the circle which the three apple trees that already exist is on. Taotao picked a potential position (x,y) of the new tree. Could you tell him if it is outside the circle or not?
 
Input
The first line contains an integer T, indicating that there are T(T≤30) cases.
In the first line of each case, there are eight integers x1,y1,x2,y2,x3,y3,x,y, as described above.
The absolute values of integers in input are less than or equal to 1,000,000,000,000.
It is guaranteed that, any three of the four positions do not lie on a straight line.
 
Output
For each case, output "Accepted" if the position is outside the circle, or "Rejected" if the position is on or inside the circle.
 
Sample Input
3
-2 0 0 -2 2 0 2 -2
-2 0 0 -2 2 0 0 2
-2 0 0 -2 2 0 1 1
 
Sample Output
Accepted
Rejected
Rejected
 
Source
 
 

圆的反演,java大数走一波

其实用外接圆半径及点那个不复杂的东西也可以玩

import java.io.*;
import java.util.*;
import java.math.*; public class Main
{
static public BigInteger xu[]=new BigInteger[4];
static public BigInteger xd[]=new BigInteger[4];
static public BigInteger yu[]=new BigInteger[4];
static public BigInteger yd[]=new BigInteger[4];
static public void main(String[] args)
{
Scanner cin=new Scanner(System.in);
int T=cin.nextInt();
while(T-->0)
{
for(int i=0;i<4;i++)
{
xu[i]=cin.nextBigInteger();
yu[i]=cin.nextBigInteger();
xd[i]=BigInteger.ONE;
yd[i]=BigInteger.ONE;
}
for(int i=1;i<4;i++)
{
xu[i]=xu[i].subtract(xu[0]);
yu[i]=yu[i].subtract(yu[0]);
}
for(int i=1;i<4;i++)
{
xd[i]=xu[i].multiply(xu[i]).add(yu[i].multiply(yu[i]));
yd[i]=xu[i].multiply(xu[i]).add(yu[i].multiply(yu[i]));
}
BigInteger t=xu[1].multiply(yu[2]).subtract(yd[1].multiply(xd[2]));
t=t.subtract(yu[1].multiply(xu[2]).subtract(xd[1].multiply(yd[2])));
if(t.compareTo(BigInteger.ZERO)<0)
{
t=xu[1];xu[1]=xu[2];xu[2]=t;
t=yu[1];yu[1]=yu[2];yu[2]=t;
t=xd[1];xd[1]=xd[2];xd[2]=t;
t=yd[1];yd[1]=yd[2];yd[2]=t;
}
for(int i=2;i<=3;i++)
{
xu[i]=xu[i].multiply(xd[1]).subtract(xu[1].multiply(xd[i]));
xd[i]=xd[i].multiply(xd[1]);
yu[i]=yu[i].multiply(yd[1]).subtract(yu[1].multiply(yd[i]));
yd[i]=yd[i].multiply(yd[1]);
}
t=xu[3].multiply(yu[2]).subtract(yd[3].multiply(xd[2]));
t=t.subtract(yu[3].multiply(xu[2]).subtract(xd[3].multiply(yd[2])));
if(t.compareTo(BigInteger.ZERO)>=0)System.out.println("Rejected");
else System.out.println("Accepted");
}
}
}

The Dominator of Strings

Time Limit: 3000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 6778    Accepted Submission(s): 713

Problem Description
Here you have a set of strings. A dominator is a string of the set dominating all strings else. The string S is dominated by T if S is a substring of T.
 
Input
The input contains several test cases and the first line provides the total number of cases.
For each test case, the first line contains an integer N indicating the size of the set.
Each of the following N lines describes a string of the set in lowercase.
The total length of strings in each case has the limit of 100000.
The limit is 30MB for the input file.
 
Output
For each test case, output a dominator if exist, or No if not.
 
Sample Input
3
10
you
better
worse
richer
poorer
sickness
health
death
faithfulness
youbemyweddedwifebetterworsericherpoorersicknesshealthtilldeathdouspartandpledgeyoumyfaithfulness
5
abc
cde
abcde
abcde
bcde
3
aaaaa
aaaab
aaaac
 
Sample Output
youbemyweddedwifebetterworsericherpoorersicknesshealthtilldeathdouspartandpledgeyoumyfaithfulness
abcde
No
从较长串中找子串的
自动机的复杂度太高,挑战上的代码就可以过得
这个暴力strstr也可以过,也就是KMP,一定是我太丑了
#include<bits/stdc++.h>

using namespace std;
const int MAXN = ;
int n,k;
int Paiming[MAXN+],tmp[MAXN+];
int flag;
bool comp_sa(int i, int j)
{
if(Paiming[i] != Paiming[j])
return Paiming[i] < Paiming[j];
else{
int ri = i+k <= n? Paiming[i+k] : -;
int rj = j+k <= n? Paiming[j+k] : -;
return ri < rj;
}
} void calc_sa(string &S, int *sa)
{
n = S.size();
for(int i = ; i <= n; i++)
{
sa[i] = i;
Paiming[i] = i < n ? S[i] : -;
} for( k =; k <= n; k *= )
{
sort(sa,sa+n+,comp_sa);
tmp[sa[]] = ;
for(int i = ; i <= n; i++)
{
tmp[sa[i]] = tmp[sa[i-]] + (comp_sa(sa[i-],sa[i]) ? : );
}
for(int i = ; i <= n; i++)
{
Paiming[i] = tmp[i];
}
}
} int SuffixArrayMatch(string &S, int *sa, string T)
{ int lhs = , rhs = S.size();
while(rhs - lhs > )
{
int mid = (lhs + rhs)>>;
if(S.compare(sa[mid],T.size(),T) < ) lhs = mid;
else rhs=mid;
}
return S.compare(sa[rhs],T.size(),T) == ;
}
int main()
{
int t;
ios::sync_with_stdio(false);
cin>>t;
string s[],longs;
while(t--){
int n,l=-,p=-,i;
cin>>n;
memset(Paiming,,sizeof Paiming);
memset(tmp,,sizeof tmp);
for(i=;i<n;i++){
cin>>s[i];
int len=s[i].size();
if(len>l){
l=len;
longs=s[i];
p=i;
}
}
if(n==){
cout<<longs<<endl;
continue;
}
int *sa = new int[longs.size()+];
calc_sa(longs,sa);
for(i=;i<n;i++){
if(p==i)continue;
if(!SuffixArrayMatch(longs,sa,s[i]))
break;
}
//delete [] sa;
sa = NULL;
if(i>=n){
cout<<longs<<endl;
}else {
cout<<"No"<<endl;
}
}
}

Chinese Zodiac

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 2451    Accepted Submission(s): 1645

Problem Description
The Chinese Zodiac, known as Sheng Xiao, is based on a twelve-year cycle, each year in the cycle related to an animal sign. These signs are the rat, ox, tiger, rabbit, dragon, snake, horse, sheep, monkey, rooster, dog and pig.
Victoria is married to a younger man, but no one knows the real age difference between the couple. The good news is that she told us their Chinese Zodiac signs. Their years of birth in luner calendar is not the same. Here we can guess a very rough estimate of the minimum age difference between them.
If, for instance, the signs of Victoria and her husband are ox and rabbit respectively, the estimate should be 2 years. But if the signs of the couple is the same, the answer should be 12 years.
 
Input
The first line of input contains an integer T (1≤T≤1000) indicating the number of test cases.
For each test case a line of two strings describes the signs of Victoria and her husband.
 
Output
For each test case output an integer in a line.
 
Sample Input
3
ox rooster
rooster ox
dragon dragon
 
Sample Output
8
4
12
中国生肖,随手模拟就可以了
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
using namespace std;
int main()
{
char m[][]={
"rat", "ox", "tiger", "rabbit", "dragon", "snake", "horse", "sheep", "monkey", "rooster", "dog" , "pig"
};
int t,s;
scanf("%d",&t);
while(t--){
char p[],q[];
scanf("%s%s",&p,&q);
if(strcmp(p,q)==){
puts("");
}else {
int i,pp,qq;
for(i=;i<;i++){
if(strcmp(m[i],p)==){
pp=i;
}
if(strcmp(m[i],q)==){
qq=i;
}
}
s=(pp-qq);
if(s>){
s=s-;
}
printf("%d\n",-s);
}
}
}

Smallest Minimum Cut

Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 3297    Accepted Submission(s): 602

Problem Description
Consider a network G=(V,E) with source s and sink t. An s-t cut is a partition of nodes set V into two parts such that s and t belong to different parts. The cut set is the subset of E with all edges connecting nodes in different parts. A minimum cut is the one whose cut set has the minimum summation of capacities. The size of a cut is the number of edges in the cut set. Please calculate the smallest size of all minimum cuts.
 
Input
The input contains several test cases and the first line is the total number of cases T (1≤T≤300).
Each case describes a network G, and the first line contains two integers n (2≤n≤200) and m (0≤m≤1000) indicating the sizes of nodes and edges. All nodes in the network are labelled from 1 to n.
The second line contains two different integers s and t (1≤s,t≤n) corresponding to the source and sink.
Each of the next m lines contains three integers u,v and w (1≤w≤255) describing a directed edge from node u to v with capacity w.
 
Output
For each test case, output the smallest size of all minimum cuts in a line.
 
Sample Input
2
4 5
1 4
1 2 3
1 3 1
2 3 1
2 4 1
3 4 2
4 5
1 4
1 2 3
1 3 1
2 3 1
2 4 1
3 4 3
Sample Output
2
3
求点s到点t的最小割,这个网上就有一道一样的题吧
dinic是过不去的,要用sap算法
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define MAXN 2333
#define MAXM 2333333
struct Edge
{
int v,next;
ll cap;
} edge[MAXM];
int head[MAXN],pre[MAXN],cur[MAXN],level[MAXN],gap[MAXN],NV,NE,n,m,vs,vt;
void ADD(int u,int v,ll cap,ll cc=)
{
edge[NE].v=v;
edge[NE].cap=cap;
edge[NE].next=head[u];
head[u]=NE++; edge[NE].v=u;
edge[NE].cap=cc;
edge[NE].next=head[v];
head[v]=NE++;
}
ll SAP(int vs,int vt)
{
memset(pre,-,sizeof(pre));
memset(level,,sizeof(level));
memset(gap,,sizeof(gap));
for(int i=; i<=NV; i++)cur[i]=head[i];
int u=pre[vs]=vs;
ll aug=-,maxflow=;
gap[]=NV;
while(level[vs]<NV)
{
loop:
for(int &i=cur[u]; i!=-; i=edge[i].next)
{
int v=edge[i].v;
if(edge[i].cap&&level[u]==level[v]+)
{
aug==-?aug=edge[i].cap:aug=min(aug,edge[i].cap);
pre[v]=u;
u=v;
if(v==vt)
{
maxflow+=aug;
for(u=pre[u]; v!=vs; v=u,u=pre[u])
{
edge[cur[u]].cap-=aug;
edge[cur[u]^].cap+=aug;
}
aug=-;
}
goto loop;
}
}
int minlevel=NV;
for(int i=head[u]; i!=-; i=edge[i].next)
{
int v=edge[i].v;
if(edge[i].cap&&minlevel>level[v])
{
cur[u]=i;
minlevel=level[v];
}
}
if(--gap[level[u]]==)break;
level[u]=minlevel+;
gap[level[u]]++;
u=pre[u];
}
return maxflow;
} int main()
{
int T,u,v,w;
scanf("%d",&T);
while(T--)
{
scanf("%d%d",&n,&m);
scanf("%d%d",&vs,&vt);
NV=n,NE=;
memset(head,-,sizeof(head));
for(int i=; i<=m; i++)
{
scanf("%d%d%d",&u,&v,&w);
ADD(u,v,(ll)w*MAXM+);
}
ll ans=SAP(vs,vt);
printf("%d\n",ans%MAXM);
}
return ;
}

A Cubic number and A Cubic Number

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)
Total Submission(s): 4947    Accepted Submission(s): 1346

Problem Description
A cubic number is the result of using a whole number in a multiplication three times. For example, 3×3×3=27 so 27 is a cubic number. The first few cubic numbers are 1,8,27,64 and 125. Given an prime number p. Check that if p is a difference of two cubic numbers.
 
Input
The first of input contains an integer T (1≤T≤100) which is the total number of test cases.
For each test case, a line contains a prime number p (2≤p≤1012).
 
Output
For each test case, output 'YES' if given p is a difference of two cubic numbers, or 'NO' if not.
 
Sample Input
10
2
3
5
7
11
13
17
19
23
29
 
Sample Output
NO
NO
NO
YES
NO
NO
NO
YES
NO
这个我是机房第一个做出来的啊,让你看一个数是不是两个数的立方差
但是这个数是质数,因式分解判断另一段就好的
直接二分答案存不存在就好
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
bool la(LL x)
{
LL l=,r=1e6+;
while(l<=r)
{
LL mi=(l+r)/;
LL y=mi-;
if(mi*mi+y*y+mi*y==x)
return ;
else if(mi*mi+y*y+mi*y<x)
l=mi+;
else r=mi-;
}
return ;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
LL n;
scanf("%lld",&n);
printf("%s\n",la(n)?"YES":"NO");
}
return ;
}
 

2017 ACM/ICPC Asia Regional Qingdao Online的更多相关文章

  1. HDU - 6215 2017 ACM/ICPC Asia Regional Qingdao Online J - Brute Force Sorting

    Brute Force Sorting Time Limit: 1 Sec  Memory Limit: 128 MB 题目连接 http://acm.hdu.edu.cn/showproblem.p ...

  2. 2017 ACM/ICPC Asia Regional Qingdao Online 记录

    题目链接  Qingdao Problem C AC自动机还不会,暂时暴力水过. #include <bits/stdc++.h> using namespace std; #define ...

  3. 2017 ACM/ICPC Asia Regional Qingdao Online解题报告(部分)

    HDU 6206 Apple 题意: 给出四个点的坐标(每个点的坐标值小于等于1,000,000,000,000),问最后一个点是否在前三个点组成的三角形的外接圆内,是输出Accept,否输出Reje ...

  4. 2017 ACM/ICPC Asia Regional Qingdao Online Solution

    A : Apple 题意:给出三个点,以及另一个点,求最后一个点是否在三个点的外接圆里面,如果在或者在边界上,输出“Rejected”,否则输出"Accepted" 思路:先求一个 ...

  5. 2017 ACM/ICPC Asia Regional Qingdao Online - 1011 A Cubic number and A Cubic Number

    2017-09-17 17:12:11 writer:pprp 找规律,质数只有是两个相邻的立方数的差才能形成,公式就是3 * n * (n + 1) +1, 判断读入的数是不是满足 这次依然只是做了 ...

  6. 2017 ACM/ICPC Asia Regional Qingdao Online - 1008 Chinese Zodiac

    2017-09-17 13:28:04 writer:pprp 签到题:1008 Chinese Zodiac #include <iostream> #include <strin ...

  7. 2017 ACM/ICPC Asia Regional Qingdao Online 1003 The Dominator of Strings hdu 6208

    The Dominator of Strings Time Limit: 3000/3000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java ...

  8. 2016 ACM/ICPC Asia Regional Qingdao Online 1001/HDU5878 打表二分

    I Count Two Three Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others ...

  9. HDU 5889 Barricade 【BFS+最小割 网络流】(2016 ACM/ICPC Asia Regional Qingdao Online)

    Barricade Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Total S ...

随机推荐

  1. Java环境安装与Eclipse安装

    1.jdk下载安装 2.Eclipse下载安装 遇到的问题: 出现问题原因可能有两个:1)没有配置环境变量 2)jdk和eclipse安装的版本不一致,都是64位或者都是32位. 本人出现错误的原因: ...

  2. nodejs中的异步回调机制

    1.再次clear Timer定时器的作用 setTimeOut绝非是传统意义上的“sleep”功能,它做不到让主线程“熄火”指定时间,它是用来指定:某个回调在固定时间后插入执行栈!(实际执行时间略长 ...

  3. java.lang.ClassCastException android.widget.RelativeLayout LayoutParams 异常

    1.在xml布局文件如下所示: <RelativeLayout android:layout_width="match_parent" android:layout_heig ...

  4. android 常用第三方github工程

    这里有个汇总的网址:http://androidxy.com/zh/page/latest/-1/0 数据库:greenDao 参考:GreenDao3.2的使用 控件注解:Butterknife 图 ...

  5. 使用JDK自带的工具jstack找出造成运行程序死锁的原因

    Java多线程编程也是Java面试中经常考察的内容.刚接触Java多线程编程的朋友们,可能会不慎写出一些会导致死锁(deadlock)的应用出来.如何分析造成Java多线程的原因呢?很多时候我们在怀疑 ...

  6. mac重启privoxy命令

    重启命令 brew services restart privoxy

  7. 数学题 HDOJ——2086 简单归纳

    哎 真的是懒得动脑子还是怎么滴... 题目如下 Problem Description 有如下方程:Ai = (Ai-1 + Ai+1)/2 - Ci (i = 1, 2, 3, .... n).若给 ...

  8. AR报表控件的常见问题汇总

    1)字符串格式不正确 原因是建立报表时未使用分页报表 导致拖动数据为sum()表达式,sum运算字符串当然会出问题 2)超出索引 顾名思义 数据为空或不匹配 3)图片使用远程图片时记得把属性修改为远程 ...

  9. Respond.js-----20150415

    Respond.js让IE6-8支持CSS3 Media Query. Bootstrap里面就引入了这个js文件,从名字看出来是自适应的兼容.打开IE看了一下,效果挺好的,自适应的效果挺好的.Res ...

  10. javascipt的forEach

    1.Array let arr = [1, 2, 3]; arr.forEach(function (element, index, array) { console.log('数组中每个元素:', ...