摘要:
扫描线,注意这个题目要求的是开区间; 1 #include 2 #include 3 #define maxn 100009 4 using namespace std; 5 6 void update(int x,int a,int w,double& l,double& r) 7 { 8 if(a==0) 9 {10 if(x=w)r=l-1;11 }12 else if(a>0)13 {14 l=max(l,-(double)x/a);15 r=min(r,(double)(w-x)/a);16 ... 阅读全文
摘要:
求最大的公共前缀;用后缀数组做;其实暴力也可以过; 1 #include 2 #include 3 #include 4 #define maxn 2009 5 using namespace std; 6 7 int s[maxn]; 8 int sa[maxn],t[maxn],t2[maxn],c[maxn],n; 9 10 void build_sa(int m) 11 { 12 int *x=t,*y=t2; 13 for(int i=0; i=0; i--)sa[--c[x[i]]]=i; 17 for(int k=1; k=k)y[p... 阅读全文
摘要:
非常容易的一个题;只要判断两种基因相差的最小值就行; 1 #include 2 #include 3 #include 4 using namespace std; 5 6 bool a[105],b[105]; 7 int x,y; 8 9 int main()10 {11 int n,ca=1;12 while(scanf("%d",&n)==1)13 {14 memset(a,0,sizeof a);15 memset(b,0,sizeof b);16 bool flag=0;17 while(n... 阅读全文
摘要:
模拟题;比赛的时候忘记把1变成64位的1了,跪了好久; 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 unsigned long long val[250]; 8 int num[250]; 9 mapmp;10 char s[100];11 char jkl[111];12 int main()13 {14 int d,b,v;15 while(scanf("%d%d",&b,&v)!=EOF)16 {17 mp.clear();18 fo... 阅读全文
摘要:
大水题,不解释啦! 1 #include 2 #include 3 #define maxn 50 4 using namespace std; 5 6 char s[maxn],t[maxn]; 7 8 int main() 9 {10 int tt,ca=1;11 scanf("%d",&tt);12 getchar();13 while(tt--)14 {15 gets(s);16 gets(t);17 int l1=strlen(t);18 int l2=strlen(s);19... 阅读全文
摘要:
最小生成树,然后看他有多少个连通分量,每个连通分量有个飞机场,最后看所有剩下的边是否有大于飞机场的费用,有的话,改成飞机场;比赛的时候一直没想明白,╮(╯▽╰)╭; 1 #include 2 #include 3 #include 4 #define maxn 100009 5 using namespace std; 6 int n,m,a; 7 struct edge 8 { 9 int u,v,w;10 bool operator=a)53 {54 num++;55 ans-=pen[... 阅读全文
摘要:
知道是状态压缩,但是不会做;看题解学的;dp[i]表示现在状态是i,先手-后手的分数。 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int b,g,n,s,a,co[20],dd[20]; 7 int map[25][20],dp[10)dp[i]=max(dp[i],cnt+dp[i^(1<<j)]);53 else dp[i]=max(dp[i],-dp[i^(1<<j)]);54 }55 }56 }57 ... 阅读全文
摘要:
set的利用; 1 #include 2 #include 3 #include 4 #define maxn 100009 5 using namespace std; 6 7 struct node 8 { 9 int w,h;10 bool operator s;18 multiset::iterator it;19 int main()20 {21 int n,t;22 scanf("%d",&t);23 while(t--)24 {25 scanf("%d",&n);26 s.clear();27 ... 阅读全文
摘要:
难得一次比赛能够自己成功A掉四个题;A题:水题,模拟一下就行; 1 #include 2 #include 3 using namespace std; 4 5 void print(int x) 6 { 7 if(x>=5){printf("-O|");x%=5;} 8 else printf("O-|"); 9 if(x==0)puts("-OOOO");10 else if(x==1)puts("O-OOO");11 else if(x==2)puts("OO-OO");12 els 阅读全文
摘要:
一个很不错的题;刚刚看到这个题目就感觉要用线段树或者树状数组,但是有感觉有点不同;敲了一发简单的线段树之后果断的T了;网上一搜题解,发现要用55颗线段树或者树状数组;一共有k种树,然后每种树根据他们%k的余数的不同又分成好几颗;然后最后统计的时候只要对每个节点统计这k种树种的信息就行; 1 #include 2 #include 3 #define maxn 50005 4 using namespace std; 5 6 int d[100][maxn],num[maxn]; 7 int n,q; 8 void insert(int k,int p,int v) 9 {10 whi... 阅读全文