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,一经查实,立即删除!

相关文章

scala akka通信机制

https://www.2cto.com/kf/201701/587514.html转载于:https://www.cnblogs.com/rocky-AGE-24/p/7542874.html

JUnit通过失败测试案例

为什么要建立一种预期测试失败的机制&#xff1f; 有一段时间&#xff0c;人们会希望并期望JUnit Test案例失败。 尽管这种情况很少见&#xff0c;但确实发生了。 我需要检测JUnit测试何时失败&#xff0c;然后&#xff08;如果期望的话&#xff09;通过而不是失败。 具体情况是…

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;若…

cmake 查看编译命令,以及在vscode中如何使用cmke

通过设置如下配置选项&#xff0c;可以生成compile_commands.json 文件&#xff0c;记录使用的编译命令 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)获得现有模块列表 cmake --help-module-list查看命令文档 cmake --help-command find_file查看模块的详细信息 cmake --help-mo…

php学习八:封装

一&#xff1a;在php中&#xff0c;用class关键字来创建一个类&#xff0c;即进行封装&#xff1b;在类里面有成员属性和方法行为组成&#xff1a; 1.成员属性:用关键字var来声明,可以给初始值也可以不给;现在var废弃&#xff0c;用public来声明&#xff0c;public为共有属性&a…

纯Java JavaFX 2.0菜单

在有关JavaFX的最新文章中 &#xff0c;我集中讨论了不使用JavaFX 1.x的JavaFXScript和不使用JavaFX 2.0的新FXML来使用JavaFX 2.0的新Java API 。 所有这些示例均已使用标准Java编译器进行了编译&#xff0c;并使用标准Java启动 器执行。 在本文中&#xff0c;我将继续演示使用…

设置QtreeWidget水平滚动条

转载请注明出处&#xff1a;http://www.cnblogs.com/dachen408/p/7552603.html //设置treewidget水平滚动条 ui.treeWidget->header()->setSectionResizeMode(QHeaderView::ResizeToContents);ui.treeWidget->header()->setStretchLastSection(false);转载于:https…

java 序列化 uid,Java中的序列化版本uid

How is Serialization id stored in the instance of the object ?The Serialization id we declare in Java is static field;and static fields are not serialized.There should be some way to store the static final field then. How does java do it ?解决方案The ser…

HTML5本地存储

什么是Web Storage Web Storage是HTML5里面引入的一个类似于cookie的本地存储功能&#xff0c;可以用于客户端的本地存储&#xff0c;其相对于cookie来说有以下几点优势&#xff1a; 存储空间大&#xff1a;cookie只有4KB的存储空间&#xff0c;而Web Storage在官方建议中为每个…

番石榴秒表

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

CF 839 E-最大团

CF 839 E Soltion: 就是怎么求最大团的问题: 以下是\(O(7000\times n^2)\)的做法 求一个最大团,然后将所有的药水平均分配,到最大团的所有点上,计算答案. #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorit…

sse java_SSE详解

SSE(Server-Sent Events):通俗解释起来就是一种基于HTTP的&#xff0c;以流的形式由服务端持续向客户端发送数据的技术应用场景由于HTTP是无状态的传输协议,每次请求需由客户端向服务端建立连接,HTTPS还需要交换秘钥&#xff0c;所以一次请求,建立连接的过程占了很大比例在http…

520. Detect Capital

题目&#xff1a; Given a word, you need to judge whether the usage of capitals in it is right or not. We define the usage of capitals in a word to be right when one of the following cases holds: All letters in this word are capitals, like "USA".A…

盒模型的属性丶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…

MapReduce:通过数据密集型文本处理

自上次发布以来已经有一段时间了&#xff0c;因为我一直在忙于Coursera提供的一些课程。 有一些非常有趣的产品&#xff0c;值得一看。 前一段时间&#xff0c;我购买了Jimmy Lin和Chris Dyer的MapReduce数据密集型处理程序 。 本书以伪代码格式介绍了几种关键的MapReduce算法。…

ubuntu(deepin)安装apache2并支持php7.0

linux虚拟机下用于开发环境测试&#xff0c;安装的apache和php7.0&#xff0c;但是简单安装完两者后apache并不能解析php&#xff0c;原因是确实apache的php扩展。 # 首先安装apache sudo apt-get install apache2 # 然后安装php7.0 sudo apt-get install php7.0 # 一般执行完这…

java applet 换行_Java复习题

一、选择题1.有Java语句如下&#xff0c;则说法正确的是()A.此语句是错误的B. a.length的值为5C. b.length的值为5D. a.length和b.length的值都为52.整数除法中&#xff0c;如果除数为0&#xff0c;则将导致的异常是( B )A. NullPointerExceptionB. ArithmeticExceptionC. Arra…

解决:MVC对象转json包含\r \n

项目中对象转json字符串时&#xff0c;如下&#xff1a;JsonSerializerSettings jsetting new JsonSerializerSettings(); jsetting.DefaultValueHandling DefaultValueHandling.Ignore; return JsonConvert.SerializeObject(resultMoldels, Formatting.Indented, jsetting);…

CSS 小结笔记之滑动门技术

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

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

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