zoukankan      html  css  js  c++  java
  • ACM-ICPC Asia Training League 暑假第一阶段第五场 BCDI

    B  求两个点到圆的切点的距离加上两个切点的弧长

     1 #include <bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 const int N = 1e5+10;
     5 double x,y,gx,gy,xa,xb,xc,ya,yb,yc;
     6 double ans1[4], ans2[4];
     7 double dis(double x1, double y1, double x2, double y2) {
     8     return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
     9 }
    10 
    11 int main() {
    12     double x, y, gx, gy, x1, y1, r1, x2, y2, r2;
    13     cin >> x >> y >> gx >> gy >> x1 >> y1 >> r1 >> x2 >> y2 >> r2;
    14     double xx1 = dis(x,y,x2,y2);
    15     double xx2 = dis(gx,gy,x2,y2);
    16     double ans1 = sqrt(xx1*xx1-r2*r2);
    17     double ans2 = sqrt(xx2*xx2-r2*r2);
    18     double xx3 = dis(x,y,gx,gy);
    19     double a1 = acos(r2/xx1);
    20     double a2 = acos(r2/xx2);
    21     double a3 = acos((xx1*xx1+xx2*xx2-xx3*xx3)/(2*xx1*xx2));
    22     double ans3 = (a3-a2-a1)*r2;
    23     printf("%.10f
    ",ans1+ans2+ans3);
    24     return 0;
    25 }

    C 滑雪问题,m条路径,从高处往地处滑,求能滑的最长路径是多少,从低往高处求,dfs可以过。

     1 #include <bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 const int N = 1e3+10;
     5 typedef pair<int,int> P;
     6 vector<P> vs[N];
     7 int d[N];
     8 void dfs(int v) {
     9     for(auto p : vs[v]) {
    10         int u = p.first, w = p.second;
    11         if(d[u] < d[v] + w) {
    12             d[u] = d[v] + w;
    13             dfs(u);
    14         }
    15     }
    16 }
    17 int main() {
    18     int n, m;
    19     cin >> n >> m;
    20     for(int i = 0; i < m; i ++) {
    21         int u, v, w;
    22         cin >> u >> v >> w;
    23         vs[v].push_back(P(u,w));
    24     }
    25     for(int i = 1; i <= n; i ++) {
    26         dfs(i);
    27     }
    28     int MAX = 0;
    29     for(int i = 1; i <= n; i ++) MAX = max(MAX, d[i]);
    30     printf("%d
    ",MAX);
    31     return 0;
    32 }

    D n个数,求有多少中由n+1个数组成的

     1 #include <bits/stdc++.h>
     2 #define INF 0x3f3f3f3f
     3 using namespace std;
     4 int n, x, MIN1 = INF, MIN2 = -INF;
     5 int main() {
     6     cin >> n;
     7     int tmp = 0;
     8     for(int i = 1; i <= n; i ++) {
     9         cin >> x;
    10         tmp = x - tmp;
    11         if(i&1) MIN1 = min(MIN1, tmp);
    12         else MIN2 = max(MIN2,-tmp);
    13     }
    14     if(MIN2>MIN1) printf("0
    ");
    15     else if(MIN2 < 0 && MIN1 < 0) printf("0
    ");
    16     else if(MIN2 < 0 && MIN1 >= 0) printf("%d
    ",MIN1+1);
    17     else printf("%d
    ",MIN1-MIN2+1);
    18     return 0;
    19 }

    I 前面的等级大于后面的,只要前面的赢了后面的就一点赢,全部平均也算英雄赢。

     1 #include <bits/stdc++.h>
     2 #define ll long long
     3 using namespace std;
     4 const int N = 1e5+10;
     5 int n;
     6 int a[N], b[N];
     7 int main() {
     8     int x;
     9     cin >> n;
    10     for(int i = 0; i < n; i ++) cin >> a[i];
    11     for(int i = 0; i < n; i ++) cin >> b[i];
    12     int id = b[0] - a[0];
    13     if(id < 0) return 0*printf("0
    ");
    14     for(int i = 1; i < n; i ++) {
    15         if(b[i] - a[i] > id) {
    16             return 0*printf("%d
    ",id+1);
    17         } else if(b[i] - a[i] < id) {
    18             return 0*printf("%d
    ",id);
    19         }
    20     }
    21     printf("%d
    ",id);
    22     return 0;
    23 }
  • 相关阅读:
    线程数量与并行应用性能相关性的测试
    redis命令学习
    shell获取日期(昨天,明天,上月,下月)
    shell获取文件行数
    redis的备份和恢复
    redis使用Java学习
    kafka的一些常用命令
    查看kafka的group.id
    vim搜索后跳到下(上)一个
    redis批量执行
  • 原文地址:https://www.cnblogs.com/xingkongyihao/p/9338435.html
Copyright © 2011-2022 走看看