• D2


    Cosmic Cleaner:

    为什么大家都知道球缺怎么求,我没听说过啊???

    我真的是印象里今天第一次听说球缺这个东西啊。。。

    我一看,哇,神仙几何题,毫无头绪,投了投了,然后就被过穿了???

    tlsnb!!!

    知道了公式以后求一求就阔以了

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    #define pi 3.1415926535
    int t,n,x[105],y[105],z[105],r[105];
    int xx,yy,zz,rr;
    double dis(int id){
        return sqrt((x[id]-xx)*(x[id]-xx)+(y[id]-yy)*(y[id]-yy)+(z[id]-zz)*(z[id]-zz));
    }
    int main(){
        ios::sync_with_stdio(false);
        cin>>t;
        for(int cas=1;cas<=t;cas++){
            cin>>n;
            for(int i=1;i<=n;i++){
                cin>>x[i]>>y[i]>>z[i]>>r[i];
            }
            cin>>xx>>yy>>zz>>rr;
            double ans = 0;
    
            for(int i=1;i<=n;i++){
                double len = dis(i);
                if(len+r[i]<=rr){//在内部
                    ans+=4.0/3*pi*r[i]*r[i]*r[i];
                } else if(len+r[i]>rr&&len<rr){//一大块在里面
                    double h1 = (rr*rr-r[i]*r[i]-len*len)/2/len;
                    double h2 = h1+len;
                    double v1 = pi/3*(3*r[i]-(r[i]-h1))*(r[i]-h1)*(r[i]-h1);//小的
                    double v2 = pi/3*(3*rr-(rr-h2))*(rr-h2)*(rr-h2);//大的
                    ans+=4.0/3*pi*r[i]*r[i]*r[i];
                    ans-=v1;ans+=v2;
                } else if(len>=rr&&len<=rr+r[i]){
                    double k = rr+r[i]-len;
                    double h2 = (k*k-2*k*r[i])/(2*k-2*rr-2*r[i]);
                    double h1 = k-h2;
                    double v1 = pi/3*(3*r[i]-h1)*h1*h1;//小的
                    double v2 = pi/3*(3*rr-h2)*(h2)*(h2);//大的
                    ans+=v1+v2;
                }
            }
            printf("Case #%d: %.10f
    ",cas,ans);
        }
    }
    View Code

    B:

    官方做法不会,当时听的时候觉得奇难无比,后来大家果然很多贪心的,,。   把操作当成是  两次  删除一个。

    考虑删一个  从前向后遍历:如果一个串长度是最短的并且字典序比后面的串小,那肯定删啊留着干啥啊。。。

    如果很不幸没有这样的串,然而我们又要保证删的是长度最小的,我们就把最后一个长度最小的删掉好了。

    重复两次。搞到T恤了舒服qwq(Day3).

    一首 届不到の爱恋 送给大家!!!

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 int t,n;
     4 struct Node{
     5     char s[20];
     6     int len;
     7     int flag;
     8 }a[6666];
     9 int main(){//考虑执行两次删除操作
    10     //ios::sync_with_stdio(false);
    11     cin>>t;
    12     for(int cas=1;cas<=t;cas++){
    13         cin>>n;
    14         for(int i=1;i<=n;i++){
    15             cin>>a[i].s;
    16             a[i].len = strlen(a[i].s);
    17             a[i].flag=0;
    18         }
    19         int id1=-1,id2=-1;
    20         int minn = 0x3f;
    21         for(int i=1;i<=n;i++){
    22             minn = min(minn,a[i].len);
    23         }
    24         for(int i=1;i<=n;i++){//如果从前面 有个最短的比后面的字典序小
    25             if(minn!=a[i].len)continue;
    26             if(i+1<=n){
    27                 if(strcmp(a[i].s,a[i+1].s)<0){
    28                     id1=i;
    29                     a[i].flag=1;
    30                     break;
    31                 }
    32             }
    33         }
    34         if(id1==-1){//不存在的话就从后向前删最小
    35             for(int i=n;i>=1;i--){
    36                 if(a[i].len==minn){
    37                     a[i].flag=1;
    38                     break;
    39                 }
    40             }
    41         }
    42         minn = 0x3f;
    43         for(int i=1;i<=n;i++) {
    44             if(a[i].flag)continue;
    45             minn = min(minn, a[i].len);
    46         }
    47         for(int i=1;i<=n;i++){
    48             if(a[i].flag)continue;
    49             if(minn == a[i].len){
    50                 int j=i+1;
    51                 if(a[j].flag) j++;
    52                 if(strcmp(a[i].s,a[j].s)<0){
    53                     id2=i;
    54                     a[i].flag=1;
    55                     break;
    56                 }
    57             }
    58         }
    59         if(id2==-1){
    60             for(int i=n;i>=1;i--){
    61                 if(a[i].flag)continue;
    62                 if(a[i].len==minn){
    63                     a[i].flag=1;
    64                     break;
    65                 }
    66             }
    67         }
    68         printf("Case #%d: ",cas);
    69         for(int i=1;i<=n;i++){
    70             if(a[i].flag)continue;
    71             cout<<a[i].s;
    72         }
    73         cout<<endl;
    74     }
    75 }
    View Code

    K: 拼木棍

    哇不会搜索啊!!!头痛欲裂      拖了一个星期,,今天看了看谈姐姐代码发现非常好懂,其实之前就懂了一直没去想怎么写,不过他那份已经被卡T了,貌似时限短了1000ms,然后我给改成了正解,就是预处理所有排列然后遍历就阔以,,,这么沙雕的题为什么我当时不会呢。。。看来早起果然可以提高人的智商,感觉智商巅峰期就是8:00-10:00了

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 inline int read() {
     4     int X=0,w=1; char c=getchar();
     5     while (c<'0'||c>'9') { if (c=='-') w=-1; c=getchar(); }
     6     while (c>='0'&&c<='9') X=(X<<3)+(X<<1)+c-'0',c=getchar();
     7     return X*w;
     8 }
     9 int d[1000005][13],tmp[13],tot=0;
    10 int c[13];
    11 void dfs(int num,int now){
    12     int b[15];
    13     if(num==3){//
    14         tmp[now+1]=c[1];
    15         tmp[now+2]=c[2];
    16         tmp[now+3]=c[3];
    17         tot++;
    18         for(int i=1;i<=12;i++){
    19             d[tot][i]=tmp[i];
    20         }
    21         return;
    22     }
    23     for(int i=1;i<=num;i++) b[i]=c[i];
    24     int st;
    25     for(int i=2;i<num;i++){
    26         for(int j=i+1;j<=num;j++){
    27             tmp[now+1]=b[1];
    28             tmp[now+2]=b[i];
    29             tmp[now+3]=b[j];
    30             st=0;
    31             for(int k=1;k<=num;k++){
    32                 if(k!=1&&k!=j&&k!=i)
    33                     c[++st]=b[k];
    34             }
    35             dfs(num-3,now+3);
    36         }
    37     }
    38 }
    39 int t,a[15],f[15][15][15];
    40 int main(){
    41     for(int i=1;i<=12;i++)c[i]=i;
    42     dfs(12,0);
    43     t=read();
    44     for(int cas=1;cas<=t;cas++){
    45         for(int i=1;i<=12;i++)a[i]=read();
    46         sort(a+1,a+13);
    47         for(int i=1;i<=10;i++){
    48             for(int j=i+1;j<=11;j++){
    49                 for(int k=j+1;k<=12;k++){
    50                     if(a[i]+a[j]>a[k])
    51                         f[i][j][k]=1;
    52                     else
    53                         f[i][j][k]=0;
    54                 }
    55             }
    56         }
    57         int ans = 0;
    58         vector<int> v;
    59         for(int i=1;i<=tot;i++){
    60             int num=0;
    61             for(int j=1;j<=12;j+=3){
    62                 if(f[d[i][j]][d[i][j+1]][d[i][j+2]])
    63                     num++;
    64             }
    65             if(num>ans){
    66                 ans=num;
    67                 v.clear();
    68                 for(int j=1;j<=12;j+=3){
    69                     if(f[d[i][j]][d[i][j+1]][d[i][j+2]]) {
    70                         v.push_back(d[i][j]);
    71                         v.push_back(d[i][j+1]);
    72                         v.push_back(d[i][j+2]);
    73                     }
    74                 }
    75             }
    76             if(ans==4)
    77                 break;
    78         }
    79         printf("Case #%d: %d
    ",cas,ans);
    80         for(int i=0;i<v.size();i++){
    81             if(i%3==2)
    82                 printf("%d
    ",a[v[i]]);
    83             else
    84                 printf("%d ",a[v[i]]);
    85         }
    86     }
    87 }
    88 /**
    89 1
    90 1 2 3 4 5 6 7 8 9 10 11 12
    91  */
    View Code
  • 相关阅读:
    python运维之saltstack方式
    windows下使用vim
    django-redis中文文档
    Skipping GMP tests ([WinError 126] 找找不不到到指指定定的的模模块块。。)
    python pycryptodome库,及后台支付宝功能接入
    关于python时间相关的函数记录集合
    mysql练习题博客集
    mysql -uroot -p -P3306 -h192.168.0.111无法远程连接mysql
    报错 Storing debug log for failure in /root/.pip/pip.log
    多进程 库multiprocessing
  • 原文地址:https://www.cnblogs.com/MXang/p/10301377.html
Copyright © 2020-2023  润新知