3.26

http://codeforces.com/gym/101196/attachments

A题

B题

题意:一群人玩桌上足球(>4人),分成黑白两队,每队有进攻和防守两名玩家,如果有一方失败则失败方的防守坐到等候席的结尾、进攻被流放到防守区再上来一个人作为进攻方。而胜利方则是攻防对换。问上场时间最长的有哪些队伍?打印队伍的最初状态的姓名(先打印进攻方后打印防守方)。

思路:首先把所有玩家放入队列中,然后求出在场上时间最长的队伍是在第几轮比赛时入场的放入数组中。然后依次模拟比赛,当模拟到数组中的轮数时就打印此时的队伍状态。

  1 #include <iostream>
  2 #include<bits/stdc++.h>
  3 #include<string>
  4 using namespace std;
  5 string p[12],s,ss;
  6 queue<string>que;
  7 string now[2][2];
  8 int a[1005];
  9 int main()
 10 {
 11     int n;
 12     while(cin>>n)
 13     {
 14         while(!que.empty())
 15             que.pop();
 16         for(int i=1; i<=n; i++)
 17         {
 18             cin>>s;
 19             que.push(s);
 20         }
 21         cin>>s;
 22         int len=s.length();
 23         int maxn=0;
 24         int t=0;
 25         for(int i=0; i<len;)
 26         {
 27             int k=i+1,num=0;
 28             while(s[k]==s[i])
 29             {
 30                 num++;
 31                 k++;
 32             }
 33             if(maxn<num)
 34             {
 35                 maxn=num;
 36                 t=0;
 37                 a[t++]=i;
 38             }
 39             else if(maxn==num)
 40             {
 41                 a[t++]=i;
 42             }
 43             i=k;
 44         }
 45         int p=t;
 46         for(int i=0; i<2; i++)
 47             for(int j=0; j<2; j++)
 48             {
 49                 now[j][i]=que.front();
 50                 que.pop();
 51             }
 52         t=0;
 53         for(int i=0; i<len; i++)
 54         {
 55             //cout<<now[0][0]<<" "<<now[0][1]<<endl;
 56             //cout<<now[1][0]<<" "<<now[1][1]<<endl;
 57             if(s[i]=='W')
 58             {
 59                 ss=now[0][0];
 60                 now[0][0]=now[0][1];
 61                 now[0][1]=ss;
 62                 que.push(now[1][1]);
 63                 now[1][1]=now[1][0];
 64                 now[1][0]=que.front();
 65                 que.pop();
 66             }
 67             else if(s[i]=='B')
 68             {
 69                 ss=now[1][0];
 70                 now[1][0]=now[1][1];
 71                 now[1][1]=ss;
 72                 que.push(now[0][1]);
 73                 now[0][1]=now[0][0];
 74                 now[0][0]=que.front();
 75                 //cout<<que.front()<<endl;
 76                 que.pop();
 77             }
 78             if(i==a[t]&&t<p)
 79             {
 80                 if(i==0)
 81                 {
 82                     if(s[i]=='W')
 83                     {
 84                         cout<<now[0][1]<<" "<<now[0][0]<<endl;
 85                     }
 86                     else
 87                     {
 88                         cout<<now[1][1]<<" "<<now[1][0]<<endl;
 89                     }
 90                     t++;
 91                 }
 92                 else
 93                 {
 94                     if(s[i]=='W')
 95                     {
 96                         cout<<now[0][0]<<" "<<now[0][1]<<endl;
 97                     }
 98                     else
 99                     {
100                         cout<<now[1][0]<<" "<<now[1][1]<<endl;
101                     }
102                     t++;
103                 }
104             }
105         }
106 
107     }
108     return 0;
109 }
View Code

C题

题意:给你两组字符串,一组是加密之后的字符串,一组是加密的前len个密文,从len+1开始密文为原文从第一个,len+2的密文为原文第二个,以此类推,问原文是什么?

思路:前len个原文字符是(s[i]-key[i]+26)%26,后面的是(s[i]-ans[i-len]+26)%26,跑一遍就能得到结果ans了

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 char ch[1005],ans[1005],tmp[1005];
 6 
 7 int main()
 8 {
 9     
10     while(scanf("%s",ch)!=-1)
11     {
12         scanf("%s",tmp);
13         int len1=strlen(ch);
14         int len2=strlen(tmp);
15         for(int i=0;i<len2;i++)
16         {
17             ans[i]=(ch[i]-tmp[i]+26)%26+'A';
18         }
19         for(int i=len2;i<len1;i++)
20         {
21             ans[i]=(ch[i]-ans[i-len2]+26)%26+'A';
22         }
23         ans[len1]='\0';
24         printf("%s\n",ans);
25 
26     }
27     return 0;
28 }
View Code

D题

E题

题意:问一个字符串多个相同的子串组成,将相同子串变成一个单字符M,变完之后的字符串长度加上子串的长度的最小值是多少?

思路:由于所给字符串较短,直接暴力求解。求长度为从1~len/2的所有子串,然后依次于主串进行匹配,更新的最小结果即可。

 1 #include <iostream>
 2 #include<bits/stdc++.h>
 3 #include<string>
 4 using namespace std;
 5 string s;
 6 string c[105][105];
 7 map<string,int > mp;
 8 int main()
 9 {
10     while(cin>>s)
11     {
12         int len=s.size();
13         int ans=len;
14         for(int i=1; i<len; i++)
15         {
16             for(int j=0; j<len-i; j++)
17             {
18                 string ch=s.substr(j,i);
19                 int tmp=0;
20                 for(int k=0;k<=len-i;)
21                 {
22                     string p=s.substr(k,i);
23                     if(p==ch)
24                     {
25                         tmp++;
26                         k=k+i;
27                     }
28                     else
29                         k++;
30                 }
31                 if(ans>len-tmp*(ch.size()-1)+ch.size())
32                     ans=len-tmp*(ch.size()-1)+ch.size();
33             }
34         }
35         cout<<ans<<endl;
36     }
37     return 0;
38 }
View Code

F题

G题

H题

题意:给两个凸多边形的边界,问这两个凸多边形有多少个点只包含在A内部,又有多少个点包含在B的内部,还有多少个点包含在A和B的内部(不含边界点)。

思路:从A点开始进行搜索边界,并在标记数组vis1中进行记录,同理对B进行处理记录在vis2中,然后对vis1和vis2的外围进行标记覆盖,最后取得图上的字符是点的vis1或vis2为0的结果。

  1 #include <cstdio>
  2 #include <cstring>
  3 #include <algorithm>
  4 #include <cmath>
  5 #include <iostream>
  6 #include <vector>
  7 #include <queue>
  8 #include <string>
  9 #include <set>
 10 #include <stack>
 11 #include <map>
 12 using namespace std;
 13 const int maxn = 105;
 14 int vis[maxn][maxn];
 15 int vis1[maxn][maxn];
 16 int vis2[maxn][maxn];
 17 char a[maxn][maxn];
 18 int n,m;
 19 int dx[] = {0,0,1,-1,};
 20 int dy[] = {1,-1,0,0,};
 21 void colorA(int i,int j,int clo);
 22 void dfsA(int i,int j,int dir,int clo);
 23 void colorB(int i,int j,int clo);
 24 void dfsB(int i,int j,int dir,int clo);
 25 void dfs(int i,int j,int clo,int vis[105][105])
 26 {
 27     for(int k=0;k<4;k++)
 28     {
 29         int tx = i+dx[k];
 30         int ty = j+dy[k];
 31         if(vis[tx][ty])
 32             continue;
 33         if(tx<0 || ty<0 || tx>n+1 || ty>m+1)
 34             continue;
 35         vis[tx][ty] = clo;
 36         dfs(tx,ty,clo,vis);
 37     }
 38 }
 39 bool checkA(int i,int j)
 40 {
 41     if(i<0||j<0||i>n||j>m)
 42         return false;
 43     if(vis1[i][j]==1)
 44         return false;
 45     return a[i][j]=='X'||a[i][j]=='A';
 46 }
 47 bool checkB(int i,int j)
 48 {
 49     if(i<0||j<0 || i>n+1 || j>m+1)
 50         return false;
 51     if(vis2[i][j]==2)
 52         return false;
 53     return a[i][j]=='X'||a[i][j]=='B';
 54 }
 55 void colorA(int i,int j,int clo)
 56 {
 57     if(checkA(i,j+1))
 58         dfsA(i,j+1,0,clo);
 59     else if(checkA(i,j-1))
 60         dfsA(i,j-1,1,clo);
 61     else if(checkA(i+1,j))
 62         dfsA(i+1,j,2,clo);
 63     else if(checkA(i-1,j))
 64         dfsA(i-1,j,3,clo);
 65 }
 66 void colorB(int i,int j,int clo)
 67 {
 68     if(checkB(i,j+1))
 69         dfsB(i,j+1,0,clo);
 70     else if(checkB(i,j-1))
 71         dfsB(i,j-1,1,clo);
 72     else if(checkB(i+1,j))
 73         dfsB(i+1,j,2,clo);
 74     else if(checkB(i-1,j))
 75         dfsB(i-1,j,3,clo);
 76 }
 77 void dfsA(int i,int j,int dir,int clo)
 78 {
 79     vis1[i][j] = clo;
 80     if(checkA(i+dx[dir],j+dy[dir]))
 81         dfsA(i+dx[dir],j+dy[dir],dir,clo);
 82     else
 83         colorA(i,j,clo);
 84 }
 85 void dfsB(int i,int j,int dir,int clo)
 86 {
 87     vis2[i][j] = clo;
 88     if(checkB(i+dx[dir],j+dy[dir]))
 89         dfsB(i+dx[dir],j+dy[dir],dir,clo);
 90     else
 91         colorB(i,j,clo);
 92 }
 93 int main()
 94 {
 95     memset(vis,0,sizeof(vis));
 96     memset(vis1,0,sizeof(vis1));
 97     memset(vis2,0,sizeof(vis2));
 98     scanf("%d %d",&n,&m);
 99     for(int i=0;i<=n;i++)
100         a[n+1][i] = a[i][m+1] = a[0][i] = a[i][0] = '.';
101     for(int i=1;i<=n;i++)
102         scanf("%s",a[i]+1);
103     int ax,ay,bx,by;
104     for(int i=0;i<=n;i++)
105     {
106         for(int j=0;j<=m;j++)
107         {
108             if(a[i][j]=='A')
109                 ax=i,ay=j;
110             if(a[i][j]=='B')
111                 bx=i,by=j;
112         }
113     }
114     colorA(ax,ay,1);
115     colorB(bx,by,2);
116     vis1[0][0] = 6;
117     vis2[0][0] = 6;
118     dfs(0,0,6,vis1);
119     dfs(0,0,6,vis2);
120     for(int i=0;i<=n;i++)
121     {
122         for(int j=0;j<=m;j++)
123         {
124             if(vis1[i][j]==0 && a[i][j]=='.')
125                 vis1[i][j] = 3;
126             if(vis2[i][j]==0 && a[i][j]=='.')
127                 vis2[i][j] = 4;
128         }
129     }
130 //    for(int i=0;i<=n;i++)
131 //    {
132 //        for(int j=0;j<=m;j++)
133 //            printf("%d ",vis1[i][j]);
134 //        puts("");
135 //    }
136 //    puts("");
137 //    for(int i=0;i<=n;i++)
138 //    {
139 //        for(int j=0;j<=m;j++)
140 //            printf("%d ",vis2[i][j]);
141 //        puts("");
142 //    }
143     int ans1 = 0,ans2 = 0,ans3 = 0;
144     for(int i=0;i<=n;i++)
145     {
146         for(int j=0;j<=m;j++)
147         {
148             if(vis1[i][j]==3&&a[i][j]=='.')
149                 ans1++;
150             if(vis2[i][j]==4&&a[i][j]=='.')
151                 ans2++;
152             if(vis1[i][j]==3&&vis2[i][j]==4&&a[i][j]=='.')
153                 ans3++;
154         }
155     }
156     printf("%d %d %d\n",ans1-ans3,ans2-ans3,ans3);
157     return 0;
158 }
View Code

I题

J题

 

转载于:https://www.cnblogs.com/wang-ya-wei/p/6647139.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/371188.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CentOS6.5安装MySQL5.7详细教程

CentOS6.5安装MySQL5.7详细教程 注&#xff1a;文中所写的安装过程均在CentOS6.5 x86下通过测试 主要参考博文&#xff1a; https://segmentfault.com/a/1190000003049498 http://www.th7.cn/db/mysql/201601/175073.shtml 1.检测系统是否已经安装过mysql或其依赖&#xff0c;若…

番石榴秒表

番石榴的秒表是番石榴第10版的另一个新番石榴类&#xff08;作为Optional &#xff0c;这是另一篇近期文章的主题&#xff09;。 顾名思义&#xff0c;这个简单的类提供了一种方便地测量两个代码点之间经过的时间的方法。 与使用System.currentTimeMillis&#xff08;&#xff…

盒模型的属性丶display显示丶浮动

一丶盒模型的属性(重要) 1.padding padding是标准文档流,父子之间调整位置 <!DOCTYPE html><html><head><meta charset"UTF-8"><title>padding</title><style>*{padding: 0;margin: 0;}.box{width: 200px;height: 200px;b…

CSS 小结笔记之滑动门技术

所谓的滑动门技术&#xff0c;就是指盒子背景能够自动拉伸以适应不同长度的文本。即当文字增多时&#xff0c;背景看起来也会变长。 大多数应用于导航栏之中&#xff0c;如微信导航栏: 具体实现方法如下&#xff1a; 1、首先每一块文本内容是由a标签与span标签组成 <a hr…

使用API​​身份验证的Spring Security

背景 尽管有许多博客文章详细介绍了如何使用Spring Security&#xff0c;但是当问题域位于标准LDAP或数据库身份验证之外时&#xff0c;我仍然经常发现配置挑战。 在本文中&#xff0c;我将介绍一些针对Spring Security的简单自定义&#xff0c;使其能够与基于REST的API调用一起…

java nlpir_4-NLPIR汉语分词系统-JAVA

好吧&#xff0c;之前用的是旧版的&#xff0c;现在出了个新版的&#xff0c;优先选择用新版的哈。从官网下载相应的开发包&#xff0c;然后主要需要找到这几个东西添加到项目工程里面&#xff0c;1.Data文件夹 2.NLPIR_JNI.DLL 3.NLPIR.jar 4.nlpir.properties添加完那些东西后…

vue error:The template root requires exactly one element.

error:[vue/valid-template-root] The template root requires exactly one element. 原因&#xff1a; 因为vue的模版中只有能一个根节点&#xff0c;所以在<template>中插入第二个元素就会报错 解决方案&#xff1a; 将<template>中的元素先用一个<div>…

测试驱动陷阱,第2部分

单元测试中单元的故事 在本文的上半部分 &#xff0c;您可能会看到一些不好但很流行的测试示例。 但是我不是一个专业评论家&#xff08;也被称为“巨魔”或“仇恨者”&#xff09;&#xff0c;没有任何建设性的话就抱怨。 多年的TDD教给我的不仅仅是事情会变得多么糟糕。 有许…

java 代码 设置环境变量_Java 配置环境变量教程

【声明】欢迎转载&#xff0c;但请保留文章原始出处→_→【正文】1、安装JDK开发环境开始安装JDK&#xff1a;修改安装目录如下&#xff1a;确定之后&#xff0c;单击“下一步”。注&#xff1a;当提示安装JRE时&#xff0c;可以选择不要安装。2、配置环境变量&#xff1a;对于…

组合数据类型练习,英文词频统计实例上(2017.9.22)

字典实例&#xff1a;建立学生学号成绩字典&#xff0c;做增删改查遍历操作。 sno[33号,34号,35号,36号] grade[100,90,80,120] d{33号:100,34号:90,35号:80,36号:120} print(d) print(每个学号对应分数:,d.items()) print(弹出35号的分数:,d.pop(35号)) print(获取学号:,d.key…

java中的math.abs_Java.math.BigDecimal.abs()方法

全屏Java.math.BigDecimal.abs()方法java.math.BigDecimal.abs()返回一个BigDecimal&#xff0c;其值是此BigDecimal的绝对值&#xff0c;其标度是this.scale()。声明以下是java.math.BigDecimal.abs()方法的声明public BigDecimal abs()参数NA返回值此方法返回的名为value&…

我需要多少内存

什么是保留堆&#xff1f; 我需要多少内存&#xff1f; 在构建解决方案&#xff0c;创建数据结构或选择算法时&#xff0c;您可能会问自己&#xff08;或其他人&#xff09;这个问题。 如果此图包含1,000,000条边并且我使用HashMap进行存储&#xff0c;此图是否适合我的3G堆&am…

mysql与串口通信_虚拟机串口与主机串口通信·小程序(下)

上次说到的&#xff0c;不能做到实时通信。那么开两个进程就可以了&#xff0c;一个用来监听是否有消息传来&#xff0c;一个用来等待用户输入。那么&#xff0c;先来复习一下进程的相关概念。进程结构linux中进程包含PCB(进程控制块)、程序以及程序所操纵的数据结构集&#xf…

Java规范请求中的数字

你们都了解Java社区流程 &#xff08;JCP&#xff09;&#xff0c;不是吗&#xff1f; JCP是为Java技术开发标准技术规范的机制。 任何人都可以注册该站点并参与对Java规范请求&#xff08;JSR&#xff09;的审查和提供反馈&#xff0c;并且任何人都可以注册成为JCP成员&#x…

自从我这样撸代码以后,公司网页的浏览量提高了107%!

欢迎大家前往腾讯云 社区&#xff0c;获取更多腾讯海量技术实践干货哦~ 本文由腾讯IVWEB团队发表于云 社区专栏 作者&#xff1a;yangchunwen HTTP协议是前端性能乃至安全中一个非常重要的话题&#xff0c;最近在看《web性能权威指南(High Performance Browser Networking)》&a…

立面设计模式–设计观点

在上一篇文章中&#xff0c;我们描述了适配器设计模式 。 在今天的文章中&#xff0c;我们将展示另一种类似的“四结构帮派”模式 。 顾名思义&#xff0c;结构模式用于从许多不同的对象形成更大的对象结构。 外观模式就是这样一种模式&#xff0c;它为系统内的一组接口提供了简…

Java第三次作业 1502 马 帅

《Java技术》第三次作业 &#xff08;一&#xff09;学习总结 1.书中对面向对象封装性的定义为&#xff1a;指把对象的属性和行为看成一个密不可分的整体&#xff0c;把不需要让外界知道的信息隐蔽起来。简单来说&#xff0c;就是定义的一些对象&#xff0c;只有在本类中才可以…

sass运算

sass具有运算的特性&#xff0c;可以对数值型的Value(如&#xff1a;数字、颜色、变量等)进行加减乘除四则运算。 请注意运算符前后请留一个空格&#xff0c;不然会出错。 scss.style css.style 本文转载于:猿2048https://www.mk2048.com/blog/blog.php?idiij12j&titles…

JavaOne 2012:NetBeans.Next –未来路线图

我从Continental Ballroom 4和一个NetBeans主题&#xff08; 项目Easel &#xff09;到Continental Ballroom 5&#xff0c;走了必要的几个步骤&#xff0c;以查看另一个面向NetBeans的演示文稿&#xff1a;“ NetBeans.Next –未来路线图”。 Ashwin Rao发起了“羽毛之鸟”&am…

C#复习正则表达式

由于前段时间为了写工具学的太J8粗糙 加上最近一段时间太浮躁 所以静下心来复习 一遍以前学的很弱的一些地方1 委托 public delegate double weituo(double a, double b);public static double test1(double a,double b){return a * b;}public static double test2(double a,…