• Codeforces Beta Round #63 (Div. 2)


    Codeforces Beta Round #63 (Div. 2)

    http://codeforces.com/contest/69

    A

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define lson l,mid,rt<<1
     4 #define rson mid+1,r,rt<<1|1
     5 #define sqr(x) ((x)*(x))
     6 #define pb push_back
     7 #define eb emplace_back
     8 #define maxn 1000006
     9 #define rep(k,i,j) for(int k=i;k<j;k++)
    10 typedef long long ll;
    11 typedef unsigned long long ull;
    12 
    13 int n;
    14 struct sair{
    15     int x,y,z;
    16 }a[105];
    17 
    18 int main(){
    19     #ifndef ONLINE_JUDGE
    20      //   freopen("input.txt","r",stdin);
    21     #endif
    22     std::ios::sync_with_stdio(false);
    23     cin>>n;
    24     for(int i=1;i<=n;i++){
    25         cin>>a[i].x>>a[i].y>>a[i].z;
    26     }
    27     int aa=0,bb=0,cc=0;
    28     for(int i=1;i<=n;i++){
    29         aa+=a[i].x;
    30         bb+=a[i].y;
    31         cc+=a[i].z;
    32     }
    33     if(aa||bb||cc) cout<<"NO"<<endl;
    34     else cout<<"YES"<<endl;
    35 }
    View Code

    B

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define lson l,mid,rt<<1
     4 #define rson mid+1,r,rt<<1|1
     5 #define sqr(x) ((x)*(x))
     6 #define pb push_back
     7 #define eb emplace_back
     8 #define maxn 1000006
     9 #define rep(k,i,j) for(int k=i;k<j;k++)
    10 typedef long long ll;
    11 typedef unsigned long long ull;
    12 
    13 int n,m;
    14 int k[105],p[105];
    15 
    16 int main(){
    17     #ifndef ONLINE_JUDGE
    18      //   freopen("input.txt","r",stdin);
    19     #endif
    20     std::ios::sync_with_stdio(false);
    21     int l,r,t,c;
    22     int ans=0;
    23     cin>>n>>m;
    24     for(int i=0;i<m;i++){
    25         cin>>l>>r>>t>>c;
    26         for(int j=l;j<=r;j++){
    27             if(t<k[j]||!k[j]){
    28                 k[j]=t;
    29                 ans-=p[j];
    30                 p[j]=c;
    31                 ans+=p[j];
    32             }
    33         }
    34     }
    35     cout<<ans<<endl;
    36 }
    View Code

    C

    模拟

      1 #include<bits/stdc++.h>
      2 using namespace std;
      3 #define lson l,mid,rt<<1
      4 #define rson mid+1,r,rt<<1|1
      5 #define sqr(x) ((x)*(x))
      6 #define pb push_back
      7 #define eb emplace_back
      8 #define maxn 1000006
      9 #define rep(k,i,j) for(int k=i;k<j;k++)
     10 typedef long long ll;
     11 typedef unsigned long long ull;
     12 
     13 char name1[110][110],name2[110][110];
     14 int with[110][110],have[110][110],n;
     15 int g[110][110];
     16 char tname[110];
     17 char s[1000010];
     18 int Find(char *name)
     19 {
     20     for (int i=0;i<n;i++)
     21         if (strcmp(name,name1[i])==0) return i;
     22     return 0;
     23 }
     24 struct sair{
     25     char name[110];
     26     int num;
     27 };
     28 sair p[110];
     29 bool cmp(sair x,sair y)
     30 {
     31     return strcmp(x.name,y.name)<0;
     32 }
     33 
     34 int main(){
     35     #ifndef ONLINE_JUDGE
     36      //   freopen("input.txt","r",stdin);
     37     #endif
     38     std::ios::sync_with_stdio(false);
     39     int k,m,t;
     40     scanf("%d%d%d%d",&k,&n,&m,&t);
     41     for (int i=0;i<n;i++)
     42         scanf("%s",name1[i]);
     43     getchar();
     44     memset(g,0,sizeof(g));
     45     for (int ii=0;ii<m;ii++)
     46     {
     47         gets(s);
     48         int len=strlen(s);
     49         int cnt=0,i=0;
     50         for (i=0;i<len&&s[i]!=':';i++)
     51             name2[ii][cnt++]=s[i];
     52         name2[ii][cnt++]=0;
     53         i+=2;
     54         while (i<len)
     55         {
     56             cnt=0;
     57             for (;s[i]!=' ';i++)
     58                 tname[cnt++]=s[i];
     59             tname[cnt]=0;
     60             int id=Find(tname);
     61             i++;
     62             int num=0;
     63             for (;s[i]!=0&&s[i]!=',';i++)
     64                 num=num*10+s[i]-'0';
     65             g[ii][id]=num;
     66             i+=2;
     67         }
     68     }
     69     memset(have,0,sizeof(have));
     70     memset(with,0,sizeof(with));
     71     for (int i=0;i<t;i++)
     72     {
     73         int tnum;
     74         scanf("%d",&tnum);
     75         scanf("%s",tname);
     76         int id=Find(tname);
     77         have[tnum][id]++;
     78         for (int j=0;j<m;j++)
     79         {
     80             bool tfind=true;
     81             for (int k=0;k<n;k++)
     82                 if (have[tnum][k]<g[j][k]) tfind=false;
     83             if (tfind)
     84             {
     85                 for (int k=0;k<n;k++)
     86                     have[tnum][k]-=g[j][k];
     87                 with[tnum][j]++;
     88             }
     89         }
     90     }
     91     for (int i=1;i<=k;i++)
     92     {
     93         int cnt=0;
     94         for (int j=0;j<n;j++)
     95             if (have[i][j]!=0)
     96             {
     97                 p[cnt].num=have[i][j];
     98                 strcpy(p[cnt++].name,name1[j]);
     99             }
    100         for (int j=0;j<m;j++)
    101             if (with[i][j]!=0)
    102             {
    103                 p[cnt].num=with[i][j];
    104                 strcpy(p[cnt++].name,name2[j]);
    105             }
    106         sort(p,p+cnt,cmp);
    107         printf("%d
    ",cnt);
    108         for (int j=0;j<cnt;j++)
    109             printf("%s %d
    ",p[j].name,p[j].num);
    110     }
    111 }
    View Code

    D

    记忆化搜索的博弈,和前天的E题很像

    题意:给个初始点,然后两个人轮流移动一段距离,当点和原点的距离大于d时失败。题目中的点可以移动到y=x的对称点这条件没用,因为一个人使用了这个条件,另一个人也可以使用它使点回到刚刚的位置

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define lson l,mid,rt<<1
     4 #define rson mid+1,r,rt<<1|1
     5 #define sqr(x) ((x)*(x))
     6 #define pb push_back
     7 #define eb emplace_back
     8 #define maxn 1000006
     9 #define rep(k,i,j) for(int k=i;k<j;k++)
    10 typedef long long ll;
    11 typedef unsigned long long ull;
    12 
    13 int d,n;
    14 struct sair{
    15     int x,y;
    16 }a[25];
    17 
    18 int book[405][405];
    19 
    20 bool dist(int a,int b){
    21     return (a-200)*(a-200)+(b-200)*(b-200) <= d*d;
    22 }
    23 
    24 int dfs(int x,int y){
    25     int xx,yy;
    26     if(book[x][y]) return book[x][y];
    27     for(int i=1;i<=n;i++){
    28         xx=x+a[i].x;
    29         yy=y+a[i].y;
    30         if(dist(xx,yy)){
    31             if(2==dfs(xx,yy)){
    32                 return book[x][y]=1;
    33             }
    34         }
    35     }
    36     return book[x][y]=2;
    37 }
    38 
    39 int main(){
    40     #ifndef ONLINE_JUDGE
    41      //   freopen("input.txt","r",stdin);
    42     #endif
    43     std::ios::sync_with_stdio(false);
    44     int x,y;
    45     cin>>x>>y>>n>>d;
    46     for(int i=1;i<=n;i++){
    47         cin>>a[i].x>>a[i].y;
    48     }
    49     if(dfs(x+200,y+200)==1) cout<<"Anton"<<endl;
    50     else cout<<"Dasha"<<endl;
    51 
    52 }
    View Code

    E

    题意:找出在一定区间内只出现过一次的最大的数

    思路:建两个map,一个记录数的个数,另一个记录当前个数为1的值即可

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 #define lson l,mid,rt<<1
     4 #define rson mid+1,r,rt<<1|1
     5 #define sqr(x) ((x)*(x))
     6 #define pb push_back
     7 #define eb emplace_back
     8 #define maxn 1000006
     9 #define rep(k,i,j) for(int k=i;k<j;k++)
    10 typedef long long ll;
    11 typedef unsigned long long ull;
    12 
    13 int n,k;
    14 int a[100005];
    15 map<int,int>mp;
    16 map<int,int>book;
    17 map<int,int>::iterator it;
    18 map<int,int>::reverse_iterator rit;
    19 
    20 int main(){
    21     #ifndef ONLINE_JUDGE
    22      //   freopen("input.txt","r",stdin);
    23     #endif
    24     std::ios::sync_with_stdio(false);
    25     cin>>n>>k;
    26     for(int i=1;i<=n;i++) cin>>a[i];
    27     for(int i=1;i<=k;i++){
    28         mp[a[i]]++;
    29         if(mp[a[i]]==2){
    30             book.erase(book.find(a[i]));
    31         }
    32         else if(mp[a[i]]==1){
    33             book[a[i]]=1;
    34         }
    35     }
    36     if(book.size()==0){
    37         cout<<"Nothing"<<endl;
    38     }
    39     else{
    40         rit=book.rbegin();
    41         cout<<rit->first<<endl;
    42     }
    43     for(int i=k+1;i<=n;i++){
    44         mp[a[i-k]]--;
    45         if(mp[a[i-k]]==0) book.erase(book.find(a[i-k]));
    46         else if(mp[a[i-k]]==1) book[a[i-k]]=1;
    47         mp[a[i]]++;
    48         if(mp[a[i]]==1) book[a[i]]=1;
    49         else if(mp[a[i]]==2)book.erase(book.find(a[i]));
    50         if(book.size()==0){
    51             cout<<"Nothing"<<endl;
    52         }
    53         else{
    54             rit=book.rbegin();
    55             cout<<rit->first<<endl;
    56         }
    57     }
    58 
    59 
    60 }
    View Code
  • 相关阅读:
    geoserver发布地图服务WMTS
    geoserver发布地图服务WMS
    geoserver安装部署步骤
    arcgis api 3.x for js 入门开发系列十四最近设施点路径分析(附源码下载)
    arcgis api 3.x for js 入门开发系列十三地图最短路径分析(附源码下载)
    cesium 之自定义气泡窗口 infoWindow 后续优化篇(附源码下载)
    arcgis api 3.x for js 入门开发系列十二地图打印GP服务(附源码下载)
    arcgis api 3.x for js 入门开发系列十一地图统计图(附源码下载)
    arcgis api 3.x for js 入门开发系列十叠加 SHP 图层(附源码下载)
    arcgis api 3.x for js入门开发系列九热力图效果(附源码下载)
  • 原文地址:https://www.cnblogs.com/Fighting-sh/p/10460354.html
Copyright © 2020-2023  润新知