zoukankan      html  css  js  c++  java
  • Codeforces Round #263 (Div. 2)

    A. Appleman and Easy Task

    题意:给你一个n*n的图案,每一个点是 o 或 * ,问是否每个位置 都有偶数个相邻的 o    n<=100

    题解:直接模拟即可

    代码:

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cmath>
     4 #include<cstring>
     5 #include<algorithm>
     6 #include<iostream>
     7 #include<vector>
     8 #include<map>
     9 #include<set>
    10 #include<queue>
    11 #define inf 1000000000
    12 #define maxn 500+100
    13 #define maxm 500+100
    14 #define eps 1e-10
    15 #define ll long long
    16 #define pa pair<int,int>
    17 using namespace std;
    18 inline int read()
    19 {
    20     int x=0,f=1;char ch=getchar();
    21     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    22     while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();}
    23     return x*f;
    24 }
    25 int n;
    26 char a[maxn][maxn];
    27 const int dx[4]={0,1,-1,0};
    28 const int dy[4]={1,0,0,-1};
    29 bool solve()
    30 {
    31     n=read();
    32     for(int i=1;i<=n;i++)
    33      for (int j=1;j<=n;j++)
    34       {
    35           char ch=' ';
    36           while(ch!='o'&&ch!='x')ch=getchar();
    37           a[i][j]=ch;
    38       }
    39     for(int i=1;i<=n;i++)
    40      for (int j=1;j<=n;j++)
    41       {
    42           int cnt=0;
    43           for (int k=0;k<4;k++)
    44            {
    45                int x=i+dx[k],y=j+dy[k];
    46                if(x>0&&x<=n&&y<=n&&y>0)
    47                 if(a[x][y]=='o')cnt++;
    48            }
    49           if(cnt&1)return 0; 
    50       }  
    51     return 1;  
    52 }
    53 int main()
    54 {
    55     if(solve())puts("YES");else puts("NO");
    56     return 0;
    57 }
    View Code

    B. Appleman and Card Game

    题意:给你n个字母,你可以从中选出k个,若你选了 i 个 同样的字母 ,你将获得 i*i 的分数 ,求最大分数。  n and k (1 ≤ k ≤ n ≤ 105).

    题解:贪心选取即可,从最多的开始 能选就选

    代码:

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cmath>
     4 #include<cstring>
     5 #include<algorithm>
     6 #include<iostream>
     7 #include<vector>
     8 #include<map>
     9 #include<set>
    10 #include<queue>
    11 #define inf 1000000000
    12 #define maxn 500000
    13 #define maxm 500+100
    14 #define eps 1e-10
    15 #define ll long long
    16 #define pa pair<int,int>
    17 
    18 using namespace std;
    19 inline int read()
    20 {
    21     int x=0,f=1;char ch=getchar();
    22     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    23     while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();}
    24     return x*f;
    25 }
    26 int n,k,a[maxn];
    27 ll ans;
    28 bool cmp(int a,int b)
    29 {
    30     return a>b;
    31 }
    32 ll sqr(ll x)
    33 {
    34     return x*x;
    35 }
    36 int main()
    37 {
    38     n=read();k=read();
    39     for(int i=1;i<=n;i++)
    40      {
    41          char ch=' ';
    42          while(ch<'A'||ch>'Z')ch=getchar();
    43          a[ch-'A'+1]++;
    44      }
    45     sort(a+1,a+27,cmp); 
    46     for(int i=1;i<=26;i++)
    47      {
    48          ans+=sqr(min(a[i],k));
    49          k-=a[i];
    50          if(k<=0)break;
    51      }
    52     cout<<ans<<endl;
    53     return 0;
    54 }
    View Code

    C. Appleman and Toastman

    题意:给你n个数,刚开始是一段,每次可以选择一段中的任何节点,将这段分为两段,这两段各自的和将计入到得分里,继续操作,直到分为n段,求最大得分n (1 ≤ n ≤ 3·105).

    题解:类似于合并果子==切割木板,只不过这题是求最大花费,则可以把每个值取负,做一遍合并果子,最后输出答案的绝对值即可。

    代码:

     1 #include<cstdio>
     2 #include<cstdlib>
     3 #include<cmath>
     4 #include<cstring>
     5 #include<algorithm>
     6 #include<iostream>
     7 #include<vector>
     8 #include<map>
     9 #include<set>
    10 #include<queue>
    11 #define inf 1000000000
    12 #define maxn 500000+1000
    13 #define maxm 500+100
    14 #define ll long long
    15 using namespace std;
    16 inline ll read()
    17 {
    18     ll x=0,f=1;char ch=getchar();
    19     while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    20     while(ch>='0'&&ch<='9'){x=10*x+ch-'0';ch=getchar();}
    21     return x*f;
    22 }
    23 int main()
    24 {
    25     freopen("input.txt","r",stdin);
    26     freopen("output.txt","w",stdout);
    27     int i,n=read();
    28     priority_queue<ll,vector<ll>,greater<ll> >q;
    29     ll ans=0;
    30     for(i=1;i<=n;i++)
    31     {
    32         ll x=read();
    33         q.push(-x);
    34         ans+=-x;
    35     }
    36     for(i=1;i<n;i++) 
    37     {
    38         ll x=q.top();q.pop();
    39         ll y=q.top();q.pop();
    40         q.push(x+y);
    41         ans+=x+y;
    42     }
    43     cout<<-ans<<endl;
    44     return 0;
    45 }
    View Code
  • 相关阅读:
    爬取校园新闻首页的新闻的详情,使用正则表达式,函数抽离
    网络爬虫基础练习
    Mysql 使用 select into outfile
    Mysql 使用CMD 登陆
    使用Clean() 去掉由函数自动生成的字符串中的双引号
    Get Resultset from Oracle Stored procedure
    获取引用某个主键的所有外键的表
    Entity Framework 丢失数据链接的绑定,在已绑好的EDMX中提示“Choose Your Data Connection”
    添加MySql Metat Database 信息
    at System.Data.EntityClient.EntityConnection.GetFactory(String providerString)
  • 原文地址:https://www.cnblogs.com/zyfzyf/p/3939249.html
Copyright © 2011-2022 走看看