zoukankan      html  css  js  c++  java
  • Codeforces Round #362

    A - Pineapple Incident

     1 #pragma comment(linker, "/STACK:102c000000,102c000000")
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <sstream>
     6 #include <string>
     7 #include <algorithm>
     8 #include <list>
     9 #include <map>
    10 #include <vector>
    11 #include <queue>
    12 #include <stack>
    13 #include <cmath>
    14 #include <cstdlib>
    15 // #include <conio.h>
    16 using namespace std;
    17 #define clc(a,b) memset(a,b,sizeof(a))
    18 #define inf 0x3f3f3f3f
    19 #define lson l,mid,rt<<1
    20 #define rson mid+1,r,rt<<1|1
    21 const int N = 3*1e6+10;
    22 const int MOD = 1e9+7;
    23 #define LL long long
    24 #define mi() (l+r)>>1
    25 double const pi = acos(-1);
    26 
    27 void fre() {
    28     freopen("in.txt","r",stdin);
    29 }
    30 
    31 // inline int r() {
    32 //     int x=0,f=1;char ch=getchar();
    33 //     while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}
    34 //     while(ch>='0'&&ch<='9') { x=x*10+ch-'0';ch=getchar();}return x*f;
    35 // }
    36 int main(){
    37     int t,s,x;
    38     cin>>t>>s>>x;
    39     bool flag=false;
    40     if(x<t) puts("NO"),exit(0);
    41     if(((x-t)%s==0)||((x-t-1)%s==0&&x-t-1!=0)) flag=true;
    42     if(flag) puts("YES");
    43     else puts("NO");
    44     return 0;
    45 }
    View Code

     B - Barnicle

    和上场有道差不多

     1 // #pragma comment(linker, "/STACK:102c000000,102c000000")
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <sstream>
     6 #include <string>
     7 #include <algorithm>
     8 #include <list>
     9 #include <map>
    10 #include <vector>
    11 #include <queue>
    12 #include <stack>
    13 #include <cmath>
    14 #include <cstdlib>
    15 // #include <conio.h>
    16 using namespace std;
    17 #define clc(a,b) memset(a,b,sizeof(a))
    18 #define inf 0x3f3f3f3f
    19 #define lson l,mid,rt<<1
    20 #define rson mid+1,r,rt<<1|1
    21 const int N = 1e7+10;
    22 const int MOD = 1e9+7;
    23 #define LL long long
    24 #define mi() (l+r)>>1
    25 double const pi = acos(-1);
    26 
    27 void fre() {
    28     freopen("in.txt","r",stdin);
    29 }
    30 
    31 // inline int r() {
    32 //     int x=0,f=1;char ch=getchar();
    33 //     while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}
    34 //     while(ch>='0'&&ch<='9') { x=x*10+ch-'0';ch=getchar();}return x*f;
    35 // }
    36 
    37 int main(){
    38     string s;
    39     int l=0;
    40     cin>>s;
    41     int pos=s.find('e');
    42     // cout<<pos<<endl;
    43     for(int j=pos+1;j<=s.size()-1;j++){
    44             l=s[j]-'0'+l*10;
    45     }
    46     // cout<<l<<endl;
    47     string str="";
    48     int pos2=s.find('.');
    49     // cout<<pos2<<endl;
    50     for(int i=0;i<pos2;i++){
    51          str+=s[i];
    52          // cout<<str<<endl; 
    53          if(str[0]=='0'||l==0){
    54          str+='.';
    55          }
    56     }
    57     for(int i=pos2+1;i<pos;i++){
    58          str+=s[i];
    59          if(i-pos2==l)
    60             str+='.';
    61     }
    62     if(l>pos-pos2-1){
    63        for(int i=0;i<l-pos+pos2+1;i++){
    64            str+='0';
    65        }
    66     }
    67     if(str.find('.')!=-1){
    68         while(str.back()=='.'||str.back()=='0') str.pop_back();
    69     }
    70     if(str=="")
    71     str='0';
    72     if(l==0){
    73         cout<<str<<endl;
    74         exit(0);
    75     }
    76     int p=0;
    77     for(int i=0;i<(int)str.size();i++){
    78         if(str[i]!='0'&&str[i]!='.'){
    79            p=i;
    80            break;
    81         }
    82     }
    83     for(int i=p;i<(int)str.size();i++){
    84          cout<<str[i];
    85     }
    86     cout<<endl;
    87     return 0;
    88 }
    View Code

     C - Lorenzo Von Matterhorn

    题意:完全二叉树  q次询问,op=1时,在x到y的最短边上c,op=2,输出x到y的权值和

    思路:应为是完全二叉树,直接暴力每条边,加上权值,用mp存当前点到父亲的权值

     1 // #pragma comment(linker, "/STACK:102c000000,102c000000")
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <sstream>
     6 #include <string>
     7 #include <algorithm>
     8 #include <list>
     9 #include <map>
    10 #include <vector>
    11 #include <queue>
    12 #include <stack>
    13 #include <cmath>
    14 #include <cstdlib>
    15 // #include <conio.h>
    16 using namespace std;
    17 #define clc(a,b) memset(a,b,sizeof(a))
    18 #define inf 0x3f3f3f3f
    19 #define lson l,mid,rt<<1
    20 #define rson mid+1,r,rt<<1|1
    21 const int N = 1e7+10;
    22 const int MOD = 1e9+7;
    23 #define LL long long
    24 #define mi() (l+r)>>1
    25 double const pi = acos(-1);
    26 
    27 void fre() {
    28     freopen("in.txt","r",stdin);
    29 }
    30 
    31 // inline int r() {
    32 //     int x=0,f=1;char ch=getchar();
    33 //     while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}
    34 //     while(ch>='0'&&ch<='9') { x=x*10+ch-'0';ch=getchar();}return x*f;
    35 // }
    36 map<LL,LL>mp;
    37 void add(LL x,LL y,LL c){
    38      while(x!=y){
    39         if(x>y) swap(x,y);
    40           mp[y]+=c;
    41           y>>=1;
    42      }
    43 }
    44 
    45 LL Sum(LL x,LL y){
    46      LL sum=0;
    47      while(x!=y){
    48          if(x>y) swap(x,y);
    49          sum+=mp[y];
    50          y>>=1;
    51      }
    52      return sum;
    53 }
    54 int main(){
    55     // fre();
    56     int T;
    57     scanf("%d",&T);
    58     mp.clear();
    59     while(T--){
    60        int op;
    61        LL x,y,c;
    62        scanf("%d",&op);
    63        if(op==1){
    64            scanf("%I64d%I64d%I64d",&x,&y,&c);
    65            add(x,y,c);
    66        }
    67        else{
    68            scanf("%I64d%I64d",&x,&y);
    69            LL ans=Sum(x,y);
    70            printf("%I64d
    ",ans);
    71        }
    72     }
    73     return 0;
    74 }
    View Code

     D - Puzzles

    题意:n个节点,n-1个数,pi是i+1的父亲。问每个点的在随机DFS中访问次数的期望

    题意:理解什么是随机dfs访问期望就简单了:非当前点的父亲节点和子孙节点的点,出现在该点的前后概率均为0.5;

    所以dp[i]=dp[f]+1+0.5*(nodes[f]-nodes[i]-1);

    f:i的父亲

    nodes[]:i为根的树所含节点总数

    所以,先处理每个点的子孙节点总数,再dp

    对于当前点来说,父亲一定在dfs之前出现,所以次数+1,子孙不算,其余点要么在前要么在后,因此次数+0.5

     1 // #pragma comment(linker, "/STACK:102c000000,102c000000")
     2 #include <iostream>
     3 #include <cstdio>
     4 #include <cstring>
     5 #include <sstream>
     6 #include <string>
     7 #include <algorithm>
     8 #include <list>
     9 #include <map>
    10 #include <vector>
    11 #include <queue>
    12 #include <stack>
    13 #include <cmath>
    14 #include <cstdlib>
    15 // #include <conio.h>
    16 using namespace std;
    17 #define clc(a,b) memset(a,b,sizeof(a))
    18 #define inf 0x3f3f3f3f
    19 #define lson l,mid,rt<<1
    20 #define rson mid+1,r,rt<<1|1
    21 const int N = 1e5+10;
    22 const int MOD = 1e9+7;
    23 #define LL long long
    24 #define mi() (l+r)>>1
    25 double const pi = acos(-1);
    26 
    27 void fre() {
    28     freopen("in.txt","r",stdin);
    29 }
    30 
    31 // inline int r() {
    32 //     int x=0,f=1;char ch=getchar();
    33 //     while(ch>'9'||ch<'0') {if(ch=='-') f=-1;ch=getchar();}
    34 //     while(ch>='0'&&ch<='9') { x=x*10+ch-'0';ch=getchar();}return x*f;
    35 // }
    36 vector<int>g[N];
    37 int nodes[N];
    38 double dp[N];
    39 int pre[N];
    40 int dfs(int f){
    41      if(g[f].size()==0){
    42         return nodes[f]=1;
    43      }
    44      for(int i=0;i<g[f].size();i++){
    45          int v=g[f][i];
    46          dfs(v);
    47          nodes[f]+=nodes[v];
    48     }
    49     nodes[f]++;
    50 }
    51 
    52 double DP(int f){
    53     if(g[f].size()==0){
    54         return 0;
    55     }
    56     for(int i=0;i<g[f].size();i++){
    57         int v=g[f][i];
    58         dp[v]=dp[f]+1+0.5*(nodes[f]-nodes[v]-1);
    59         DP(v);
    60     }
    61 }
    62 int main(){
    63     fre();
    64     int n;
    65     scanf("%d",&n);
    66     pre[1]=-1;
    67     for(int i=1;i<=n+1;i++) g[i].clear();
    68     for(int i=2;i<=n;i++){
    69          int x;
    70          scanf("%d",&x);
    71          if(x==i) continue;
    72          g[x].push_back(i);
    73          pre[i]=x;
    74     }
    75     dfs(1);
    76     dp[1]=1.0;
    77     DP(1);
    78     for(int i=1;i<n;i++){
    79          printf("%.1lf ",dp[i]);
    80     }
    81     printf("%.1lf
    ",dp[n]);
    82     return 0;
    83 }
    View Code
  • 相关阅读:
    CF_402C Searching for Graph 乱搞题
    zoj Simple Equation 数论
    zoj 3757 Alice and Bob and Cue Sports 模拟
    uva_12535
    boj1267 Infinite’s Cave 树形dp + 背包
    CF_216_Div_2
    nxlog4go 简介
    log4go的一些改进设想
    nxlog4go 的配置驱动
    nxlog4go Log Levels and Pattern Layout
  • 原文地址:https://www.cnblogs.com/ITUPC/p/5675759.html
Copyright © 2011-2022 走看看