题目:链接: https://pan.baidu.com/s/1ef_9hGBhczW0B4dz5IUKmw 密码: qgjy

T1:

hash后直接二分查询即可

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. #include<cmath>
  6. using namespace std;
  7. inline long long read()
  8. {
  9. long long f=,ans=;char c;
  10. while(c<''||c>''){if(c=='-')f=-;c=getchar();}
  11. while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
  12. return ans*f;
  13. }
  14. char str[];
  15. long long sum[];
  16. long long b[];
  17. long long bb=;
  18. long long maxn=;
  19. long long l,r,mid;
  20. long long u,v;
  21. bool check(long long x)
  22. {
  23. long long x1=sum[u+x-]-sum[u-]*b[x];
  24. // cout<<sum[u+x-1]<<" "<<sum[u-1]<<" "<<b[x]<<" "<<x1<<endl;
  25. long long x2=sum[v+x-]-sum[v-]*b[x];
  26. // cout<<sum[v+x-1]<<" "<<sum[v-1]<<" "<<b[x]<<" "<<x2<<endl;
  27. return x1==x2;
  28. }
  29. int main()
  30. {
  31. b[]=;
  32. for(int i=;i<=;i++) b[i]=b[i-]*bb;
  33. scanf("%s",str+);
  34. long long len=strlen(str+);
  35. for(long long i=;i<=len;i++) sum[i]=sum[i-]*bb+(str[i]-'a'+);
  36. long long n=read();
  37. for(long long i=;i<=n;i++)
  38. {
  39. u=read(),v=read();
  40. l=,r=len-max(u,v)+;
  41. maxn=;
  42. while(l<=r)
  43. {
  44. mid=(l+r)/;
  45. if(check(mid))
  46. {
  47. maxn=max(maxn,mid);
  48. l=mid+;
  49. }else r=mid-;
  50. }
  51. printf("%d\n",maxn);
  52. }
  53. }
  54. /*
  55. aabaabab
  56. 1
  57. 2 7
  58. */

T2:

因为作者能力有限,数学技巧过于高深,所以先给std,学完以后再重新补写

  1. #include<iostream>
  2. #include<cstring>
  3. #include<cstdio>
  4. using namespace std;
  5. inline int read()
  6. {
  7. int x=,t=,c;
  8. while(!isdigit(c=getchar()))if(c=='-')t=-;
  9. while(isdigit(c))x=x*+c-'',c=getchar();
  10. return x*t;
  11. }
  12. int sig(long long x)
  13. {
  14. if(x<)return -;
  15. else if(!x)return ;
  16. return ;
  17. }
  18. long long gcd(long long a,long long b){return b?gcd(b,a%b):a;}
  19. class Vector
  20. {
  21. public:
  22. long long x,y;
  23. Vector(long long _x=,long long _y=)
  24. {
  25. x=_x;
  26. y=_y;
  27. }
  28. Vector operator + (const Vector &b) const
  29. {
  30. return Vector(x+b.x,y+b.y);
  31. }
  32. Vector operator - (const Vector &b) const
  33. {
  34. return Vector(x-b.x,y-b.y);
  35. }
  36. long long operator * (const Vector &b) const
  37. {
  38. return x*b.x+y*b.y;
  39. }
  40. };
  41. class Line
  42. {
  43. public:
  44. long long a,b,c;
  45. Line(Vector v0,Vector v1)
  46. {
  47. a=v0.x-v1.x;
  48. b=v0.y-v1.y;
  49. swap(a,b);
  50. a=-a;
  51. c=gcd(a,b);
  52. a/=c;
  53. b/=c;
  54. c=a*v0.x+b*v0.y;
  55. }
  56. Line(long long _a=,long long _b=,long long _c=)
  57. {
  58. a=_a;
  59. b=_b;
  60. c=_c;
  61. }
  62. int side(Vector v)
  63. {
  64. return sig(v*Vector(a,b)-c);
  65. }
  66. }l1,l2;
  67. void Solve()
  68. {
  69. int n=read();
  70. Vector v0,v1,u0,u1;
  71. v0.x=read();v0.y=read();v1.x=read();v1.y=read();
  72. l1=Line(v0,v1);
  73. bool res=;
  74. while(n--)
  75. {
  76. u0.x=read();u0.y=read();u1.x=read();u1.y=read();
  77. l2=Line(u0,u1);
  78. if(l1.a*l2.b==l1.b*l2.a)
  79. {
  80. if(l1.c*l2.b==l2.c*l1.b)
  81. {
  82. long long l0=,r0=(v1-v0)*(v1-v0),l1=(u0-v0)*(v1-v0),r1=(u1-v0)*(v1-v0);
  83. if(l0<=r1&&l1<=r0)res=;
  84. }
  85. }
  86. else
  87. {
  88. if(l1.side(u0)!=l1.side(u1)&&l2.side(v0)!=l2.side(v1))res=;
  89. }
  90. }
  91. if(res)puts("YES");
  92. else puts("NO");
  93. }
  94. int main()
  95. {
  96. freopen("intersect.in","r",stdin);
  97. freopen("intersect.out","w",stdout);
  98. int T=read();
  99. while(T--)Solve();
  100. }

std

T3:

dijkstra倒推,加优先队列优化,设dis[n]=0,dis[i]=min{dis[i],max(最大限制,dis[x(i为起点的终点)]+所对应需要的能量)}

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. #include<algorithm>
  5. #include<cmath>
  6. #include<queue>
  7. using namespace std;
  8. inline long long read()
  9. {
  10. long long f=,ans=;char c;
  11. while(c<''||c>''){if(c=='-')f=-;c=getchar();}
  12. while(c>=''&&c<=''){ans=ans*+c-'';c=getchar();}
  13. return ans*f;
  14. }
  15. priority_queue<pair<long long,long long > > que;
  16. long long n,m,cnt=;
  17. struct node{
  18. long long a,b,c,m,nex;
  19. }x[];
  20. long long head[];
  21. long long vis[];
  22. long long dis[];
  23. void add(long long u,long long v,long long c,long long m)
  24. {
  25. x[cnt].a=u,x[cnt].b=v,x[cnt].c=c,x[cnt].m=m;
  26. x[cnt].nex=head[u],head[u]=cnt++;
  27. }
  28. long long inf;
  29. int main()
  30. {
  31. memset(head,-,sizeof(head));
  32. memset(dis,/,sizeof(dis));
  33. inf=dis[];
  34. n=read(),m=read();
  35. for(long long i=;i<=m;i++)
  36. {
  37. long long u=read(),v=read(),c=read(),m=read();
  38. add(u,v,c,m);
  39. add(v,u,c,m);
  40. }
  41. dis[n]=;
  42. que.push(make_pair(,n));
  43. while(!que.empty())
  44. {
  45. long long xx=que.top().second;que.pop();
  46. if(vis[xx]==) continue;
  47. vis[xx]=;
  48. for(long long i=head[xx];i!=-;i=x[i].nex)
  49. {
  50. if(dis[x[i].b]>max(x[i].m,dis[xx]+x[i].c))
  51. {
  52. dis[x[i].b]=max(x[i].m,dis[xx]+x[i].c);
  53. que.push(make_pair(-dis[x[i].b],x[i].b));
  54. }
  55.  
  56. }
  57. }
  58. if(dis[]!=inf) cout<<dis[];
  59. else cout<<-;
  60. }

四连测Day2的更多相关文章

  1. 四连测Day4

    四连爆炸 卡我常数 好像被AluminumGod拉到了创客...哇我这个天天爆炸的水平可能会被其他三位dalao吊起来打 orz Edmond-Karp_XiongGod orz Deidara_Wa ...

  2. 【2018.8.10】四连测day4 题解

    T1:给出一棵 $n$ 个节点的无根树,其中 $m$ 个节点是特殊节点,求对于任意 $i ∈ [0, m]$,包含 $i$ 个特殊节点的联通块个数$\mod 998244353$. $1<=n, ...

  3. 四连测总结(XYX)

    目录 成绩 总结 事后... 成绩 telephonewire monkey 总分 0 56 56 cowjog guard path temperature 总分 0 40 0 68 108 cba ...

  4. 正睿 2018 提高组十连测 Day2 T2 B

    题目链接 http://www.zhengruioi.com/contest/84/problem/318 题解写的比较清楚,直接扒过来了. B 算法 1 直接按题意枚举,动态规划或是记忆化搜索. 时 ...

  5. 四连测Day3

    题目链接:https://pan.baidu.com/s/1_vsHfMI_qO-9IDxmFLkHfg 密码: uza8 T1: 小奥的一笔画,判连通性,查奇偶点即可 #include<ios ...

  6. 四连测Day1

    题目:链接: https://pan.baidu.com/s/163ycV64ioy7uML7AvRDTGw 密码: p86i T1: 倍增求LCA,minn数组记录最小值 #include<i ...

  7. ZROI 提高十连测 DAY2

    总结:入题尽量快,想到做法要先证明是否正确是否有不合法的情况,是否和题目中描述的情景一模一样.    不要慌 反正慌也拿不了多少分,多分析题目的性质如果不把题目的性质分析出来的话,暴力也非常的难写,有 ...

  8. (四连测)滑雪场的高度差题解---二分 + 搜索---DD(XYX)​​​​​​​的博客

    滑雪场的高度差 时间限制: 1 Sec  内存限制: 128 MB 题目描述 滑雪场可以看成M x N的网格状山地(1 <= M,N <= 500),每个网格是一个近似的平面,具有水平高度 ...

  9. STM32—TIMx实现编码器四倍频

    文章目录 一.储备知识 二.TIMx的编码器模式介绍 1.计数边沿设置 2.选择极性和使能 3.使能 4.计数方向 三.代码部分 一.储备知识 通过STM32的定时器编码器接口模式对编码器进行四倍频, ...

随机推荐

  1. cookie的介绍和自动化中cookie的操作

    1 cookie是什么? cookie: 1. Cookie是一小段的文本信息:格式:python中的字典(键值对组成) 2. Cookie产生:客户端请求服务器,如果服务器需要记录该用户状态,就向客 ...

  2. 解决ssh_exchange_identification:read connection reset by peer 原因

    服务器改了密码,试过密码多次后出现: ssh_exchange_identification: read: Connection reset by peer 可以通过ssh -v查看连接时详情 Ope ...

  3. [Clr via C#读书笔记]Cp15枚举和位标识

    Cp15枚举和位标识 枚举类型 本质是结构,符号名称-值:好处显而易见:System.Enum;值类型: 编译的时候,符号会转换为常量字段: 枚举支持很多方法和成员: 位标识bit flag 判断和设 ...

  4. Java进阶知识点:不可变对象与并发

    一.String的不可变特性 熟悉Java的朋友都知道,Java中的String有一个很特别的特性,就是你会发现无论你调用String的什么方法,均无法修改this对象的状态.当确实需要修改Strin ...

  5. 从零开始的Python学习Episode 6——字符串操作

    字符串操作 一.输出重复字符串 print('smile'*6) #输出6个smile 二.通过引索输出部分字符串 print('smile'[1:]) print('smile'[1:3]) #输出 ...

  6. URAL 1519 Formula 1(插头DP,入门题)

    Description Background Regardless of the fact, that Vologda could not get rights to hold the Winter ...

  7. 20162328蔡文琛week03

    学号 2006-2007-2 <程序设计与数据结构>第X周学习总结 教材学习内容总结 在第三章,我学习到了更多有关于java.util包的知识.了解了多个引用变量可以指向同一个对象.而且J ...

  8. [贪心经典算法]Kruskal算法

    Kruskal算法的高效实现需要一种称作并查集的结构.我们在这里不介绍并查集,只介绍Kruskal算法的基本思想和证明,实现留在以后讨论. Kruskal算法的过程: (1) 将全部边按照权值由小到大 ...

  9. @ModelAttribute使用详解

    1.@ModelAttribute注释方法     例子(1),(2),(3)类似,被@ModelAttribute注释的方法会在此controller每个方法执行前被执行,因此对于一个control ...

  10. java定时执行任务(一)

    需求: 经常遇到这样的需求:要求每天执行一次任务,执行任务时间是凌晨3点 实现: 为了便于检测,我假设的是下一分钟执行任务,每10秒重复执行.(对应现实项目:每天3点执行任务.那么就是下一个3点执行任 ...