zoukankan      html  css  js  c++  java
  • Codeforces Round #582 (Div. 3)

    https://codeforces.com/contest/1213

    A、Chips Moving

    给定n个数,每个数加减2不需要花费,加减1需要花费1个coin,求将这n个数变为同一个数的最小花费

    只需要求偶数个数和奇数个数即可,取较小值

     1 #include<iostream>
     2 #include<sstream>
     3 #include<fstream>
     4 #include<algorithm>
     5 #include<cstring>
     6 #include<iomanip>
     7 #include<cstdlib>
     8 #include<cctype>
     9 #include<vector>
    10 #include<string>
    11 #include<cmath>
    12 #include<ctime>
    13 #include<stack>
    14 #include<queue>
    15 #include<map>
    16 #include<set>
    17 #define mem(a,b) memset(a,b,sizeof(a))
    18 #define random(a,b) (rand()%(b-a+1)+a)
    19 #define ll long long
    20 #define ull unsigned long long
    21 #define e 2.71828182
    22 #define Pi acos(-1.0)
    23 #define ls(rt) (rt<<1)
    24 #define rs(rt) (rt<<1|1)
    25 #define lowbit(x) (x&(-x))
    26 using namespace std; 
    27 int n,odd,even,t;
    28 int read()
    29 {
    30     int s=1,x=0;
    31     char ch=getchar();
    32     while(!isdigit(ch)) {if(ch=='-') s=-1;ch=getchar();}
    33     while(isdigit(ch)) {x=10*x+ch-'0';ch=getchar();}
    34     return x*s;
    35 }
    36 int main()
    37 {
    38     n=read();
    39     for(int i=1;i<=n;++i) 
    40     {
    41         t=read();
    42         if(t&1) odd++;
    43         else even++;
    44     }
    45     cout<<min(odd,even)<<endl;
    46 }
    View Code

    B、Bad Prices

    给定一个序列,定义一个元素为bad为存在比它小的元素在它后面,求bad元素的个数

    逆序,树状数组求

    记得离散化

     1 #include<iostream>
     2 #include<sstream>
     3 #include<fstream>
     4 #include<algorithm>
     5 #include<cstring>
     6 #include<iomanip>
     7 #include<cstdlib>
     8 #include<cctype>
     9 #include<vector>
    10 #include<string>
    11 #include<cmath>
    12 #include<ctime>
    13 #include<stack>
    14 #include<queue>
    15 #include<map>
    16 #include<set>
    17 #define mem(a,b) memset(a,b,sizeof(a))
    18 #define random(a,b) (rand()%(b-a+1)+a)
    19 #define ll long long
    20 #define ull unsigned long long
    21 #define e 2.71828182
    22 #define Pi acos(-1.0)
    23 #define ls(rt) (rt<<1)
    24 #define rs(rt) (rt<<1|1)
    25 #define lowbit(x) (x&(-x))
    26 using namespace std;
    27 const int MAXN=150000+5;
    28 int T[MAXN],a[MAXN],b[MAXN]; 
    29 int n,t;
    30 int read()
    31 {
    32     int s=1,x=0;
    33     char ch=getchar();
    34     while(!isdigit(ch)) {if(ch=='-') s=-1;ch=getchar();}
    35     while(isdigit(ch)) {x=10*x+ch-'0';ch=getchar();}
    36     return x*s;
    37 }
    38 int getsum(int x)
    39 {
    40     int ans=0;
    41     for(int i=x;i>=1;i-=lowbit(i))
    42     ans+=T[i];
    43     return ans;
    44 }
    45 void update(int x,int v)
    46 {
    47     for(int i=x;i<=n;i+=lowbit(i))
    48     T[i]+=v;
    49 }
    50 int main()
    51 {
    52     t=read();
    53     while(t--)
    54     {
    55         mem(T,0);
    56         n=read();
    57         for(int i=1;i<=n;++i)
    58         a[i]=read(),b[i]=a[i];
    59         sort(b+1,b+n+1);
    60         int res=0;
    61         for(int i=n;i>=1;--i)
    62         {
    63             a[i]=lower_bound(b+1,b+n+1,a[i])-b;
    64             if(getsum(a[i]-1)) res++;
    65             update(a[i],1);
    66         }
    67         cout<<res<<endl;
    68     }
    69 }
    View Code

    emmm,其实想复杂了,逆序求,维护最小值就行,O(n)复杂度

     1 #include<iostream>
     2 #include<sstream>
     3 #include<fstream>
     4 #include<algorithm>
     5 #include<cstring>
     6 #include<iomanip>
     7 #include<cstdlib>
     8 #include<cctype>
     9 #include<vector>
    10 #include<string>
    11 #include<cmath>
    12 #include<ctime>
    13 #include<stack>
    14 #include<queue>
    15 #include<map>
    16 #include<set>
    17 #define mem(a,b) memset(a,b,sizeof(a))
    18 #define random(a,b) (rand()%(b-a+1)+a)
    19 #define ll long long
    20 #define ull unsigned long long
    21 #define e 2.71828182
    22 #define Pi acos(-1.0)
    23 #define ls(rt) (rt<<1)
    24 #define rs(rt) (rt<<1|1)
    25 #define lowbit(x) (x&(-x))
    26 using namespace std;
    27 const int MAXN=150000+5;
    28 int a[MAXN]; 
    29 int n,t;
    30 int read()
    31 {
    32     int s=1,x=0;
    33     char ch=getchar();
    34     while(!isdigit(ch)) {if(ch=='-') s=-1;ch=getchar();}
    35     while(isdigit(ch)) {x=10*x+ch-'0';ch=getchar();}
    36     return x*s;
    37 }
    38 int main()
    39 {
    40     t=read();
    41     while(t--)
    42     {
    43         n=read();
    44         for(int i=1;i<=n;++i)
    45         a[i]=read();
    46         int res=0,small=1<<30;
    47         for(int i=n;i>=1;--i)
    48         {
    49             if(a[i]>small) res++;
    50             small=min(small,a[i]);
    51         }
    52         cout<<res<<endl;
    53     }
    54 }
    View Code

    C、Book Reading

    对于每个n和m,求[1,n]中除以0余数为0的数的末尾数的和。

    找规律

     1 #include<iostream>
     2 #include<sstream>
     3 #include<fstream>
     4 #include<algorithm>
     5 #include<cstring>
     6 #include<iomanip>
     7 #include<cstdlib>
     8 #include<cctype>
     9 #include<vector>
    10 #include<string>
    11 #include<cmath>
    12 #include<ctime>
    13 #include<stack>
    14 #include<queue>
    15 #include<map>
    16 #include<set>
    17 #define mem(a,b) memset(a,b,sizeof(a))
    18 #define random(a,b) (rand()%(b-a+1)+a)
    19 #define ll long long
    20 #define ull unsigned long long
    21 #define e 2.71828182
    22 #define Pi acos(-1.0)
    23 #define ls(rt) (rt<<1)
    24 #define rs(rt) (rt<<1|1)
    25 #define lowbit(x) (x&(-x))
    26 using namespace std;
    27 ll read()
    28 {
    29     ll s=1,x=0;
    30     char ch=getchar();
    31     while(!isdigit(ch)) {if(ch=='-') s=-1;ch=getchar();}
    32     while(isdigit(ch)) {x=10*x+ch-'0';ch=getchar();}
    33     return x*s;
    34 }
    35 int main()
    36 {
    37     ll q=read();
    38     ll T,ans;
    39     while(q--)
    40     {
    41         ll n=read(),m=read();
    42         if(m%10==5)
    43         {
    44             T=n/(2*m);
    45             ans=T*5;
    46             for(ll i=2*T*m;i<=n;i+=m)
    47             if(i%m==0) ans+=i%10;
    48         }
    49         else if(m%10==0) ans=0;
    50         else if(m%2==1)
    51         {
    52             T=n/(m*10);
    53             ans=T*45;
    54             for(ll i=10*T*m;i<=n;i+=m)
    55             if(i%m==0) ans+=i%10;
    56         }
    57         else if(m%2==0)
    58         {
    59             T=n/(m*5);
    60             ans=T*20;
    61             for(ll i=5*T*m;i<=n;i+=m)
    62             if(i%m==0) ans+=i%10;
    63         }
    64         cout<<ans<<endl;
    65     } 
    66 }
    View Code

    D、Equalizing by Division (hard version)

  • 相关阅读:
    浏览器后台报错,Vue组件的坑:property or method " " is not defined on the instance but referenced during render.Make sure that this property in reactive,either in the data,or for class-based
    去掉iview Modal组件中的取消和确定按钮
    vue实现不刷新整个页面刷新数据
    webstorm永久激活码
    文字过长设置隐藏,鼠标hover时显示在title上
    图片与Base64的转换
    iview的poptip插件,自动换行与自定义content的内容
    RTL基本知识:阻塞赋值与非阻塞赋值
    RTL基本知识:线网或变量宽度与端口宽度不匹配
    RTL基本知识:敏感信号列表中的数组
  • 原文地址:https://www.cnblogs.com/wangzhebufangqi/p/11450495.html
Copyright © 2011-2022 走看看