Codeforces Round #472 A-D
A题:
题意:就是给你一个长度为n的字符串,有三种颜色,其中有一些‘?’的字符代表未着色,你需要找到至少有两种方法染色,同时满足相邻两个字符间不能相同;
思路:有两种染色方法的前提:首先给定的字符串中不能出现相邻相同的字符;只要满足这三种条件都可以:‘?’出现在首或尾,‘?’出现在相同字符之间,'?'连续出现两次以上;
#include<iostream>
#include<cstring>
using namespace std;
int main()
{
int n;
string s;
cin>>n>>s;int cnt=,flag=;
for(int i=;i<n;i++)
{
if(s[i]=='?')
{
if(i==||i==n-)cnt+=;
else if(s[i-]==s[i+])cnt+=;
else if(s[i-]=='?'||s[i+]=='?')cnt+=;
}
else if(i<n-&s[i]==s[i+])flag=;
}
if(flag||cnt<)cout<<"No"<<endl;
else cout<<"Yes"<<endl;
return ;
}
B题
题意:给定一种操作,即对于某非空的正整数集合的集合R,C,对于R_i和C_i,填充网格中R_i行与C_i列相交点为黑色,且R和C中任意两集合互斥。对于某网格,如能从空白网格经这样的操作变成该网格则输出“Yes”,否则输出“No”。
思路:暴力就ok了。。
#include<iostream>
#include<cstring>
using namespace std;
int n,m;
string s[];
bool check(int x,int y)
{
for(int i=;i<m;i++)
{
if(s[x][i]!=s[y][i])return ;
}
return ;
}
int main()
{
cin>>n>>m;
for(int i=;i<n;i++)cin>>s[i];
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
for(int c=i+;c<n;c++)
{
if(s[i][j]==s[c][j]&&s[i][j]=='#')
{
if(!check(i,c))
{
cout<<"No"<<endl;
return ;
}
}
} }
}
cout<<"Yes"<<endl;
return ;
}
C题
题意:给定一个n长的数组,找到3个数,其下标分别为i,j,k,其中i<j<k,满足(a[k]-a[j])/(a[k]-a[i])最大,同时a[k]与a[i]的差值不能超过给定的U;
思路:排序后枚举i,二分查找a[k]的最大值,要满足a[k]-a[j]最大,即j最小,即j=i+1;不断更新ans即可,但要注意精度问题(因为这个wa了几次orz
#include<iostream>
#include<algorithm>
#include<cstdio>
#define inf 0x3f3f3f3f
using namespace std;
double a[];
int main()
{
int n,d;
cin>>n>>d;
double ans=-;
for(int i=;i<n;i++)cin>>a[i];
sort(a,a+n);
for(int i=;i<n;i++)
{
int t=lower_bound(a,a+n,a[i]+d)-a;
if(t>=n)t=n-;
while(a[t]>a[i]+d&&t>i+)t--;
if(a[t]-a[i]<=d&&t>i+&&t<n)ans=max(ans,1.0*(a[t]-a[i+])/(a[t]-a[i]));
}
printf("%.11llf\n",ans);
return ;
}
D题
题意:一个人每天对河流水位进行标记,给定n天严格大于河流水位的标记数,求每天在当天河流水位下的标记数的总和;
思路:由于每天的水位下的标记数=总标记数-a[i]-1,要使得每天的标记数最小,我们就需要使得到当天的总标记数最小;只要a[i]+1<=前一天的总标记数,那么当天的总标记数就可以不用增加;否则,当天的标记数就要增加,因为每天的标记数最多+1,所以如果a[i]+1>前一天的总标记数+1,当天的总标记数=a[i]+1,但是前一天的标记数也需要更新,所以弄一个循环就可以解决;
#include<iostream>
#include<algorithm>
using namespace std;
typedef long long LL;
const int maxn=1e5+;
LL a[maxn],cnt[maxn];
int main()
{
int n;
cin>>n;
for(int i=;i<n;i++)cin>>a[i];
cnt[]=;
LL ans=;
for(int i=;i<n;i++)
{
if(a[i]+>cnt[i-])
{
if(a[i]>cnt[i-])cnt[i]=a[i]+;
else cnt[i]=cnt[i-]+;
}
else cnt[i]=cnt[i-];
}
for(int i=n-;i>=;i--)if(cnt[i+]-cnt[i]>)cnt[i]=cnt[i+]-;
for(int i=;i<n;i++)ans+=cnt[i]-a[i]-;
cout<<ans<<endl;
return ;
}
Codeforces Round #472 A-D的更多相关文章
- codeforces round 472(DIV2)D Riverside Curio题解(思维题)
题目传送门:http://codeforces.com/contest/957/problem/D 题意大致是这样的:有一个水池,每天都有一个水位(一个整数).每天都会在这一天的水位上划线(如果这个水 ...
- Codeforces Round #472 Div. 1
A:某个格子被染黑说明该行和该列同时被选中,使用并查集合并,最后看每个集合中是否有未被染黑的格子即可. #include<iostream> #include<cstdio> ...
- 【推导】【贪心】Codeforces Round #472 (rated, Div. 2, based on VK Cup 2018 Round 2) D. Riverside Curio
题意:海平面每天高度会变化,一个人会在每天海平面的位置刻下一道痕迹(如果当前位置没有已经刻划过的痕迹),并且记录下当天比海平面高的痕迹有多少条,记为a[i].让你最小化每天比海平面低的痕迹条数之和. ...
- 【推导】Codeforces Round #472 (rated, Div. 2, based on VK Cup 2018 Round 2) B. Mystical Mosaic
题意:给你一个棋盘的最终局面. 你的一次操作可以选择一些行和列,将它们的交叉点染黑,不能重复选择某行或者某列.问你是否能经过数次操作之后,达到目标局面. 就枚举所有黑点,如果该点行列都没被标记,就给它 ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
- Codeforces Round #354 (Div. 2) ABCD
Codeforces Round #354 (Div. 2) Problems # Name A Nicholas and Permutation standard input/out ...
- Codeforces Round #368 (Div. 2)
直达–>Codeforces Round #368 (Div. 2) A Brain’s Photos 给你一个NxM的矩阵,一个字母代表一种颜色,如果有”C”,”M”,”Y”三种中任意一种就输 ...
- cf之路,1,Codeforces Round #345 (Div. 2)
cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅..... ...
- Codeforces Round #279 (Div. 2) ABCDE
Codeforces Round #279 (Div. 2) 做得我都变绿了! Problems # Name A Team Olympiad standard input/outpu ...
随机推荐
- easyui框架中关于dialog自带关闭事件的使用
easyui是一个开源的第三方控件库,虽然使用比较方便,但其中有些事件和样式会与其他的控件或者框架形成冲突. 今天谈一下easyui 中dialog这个控件(对话框) easyui dialog一般在 ...
- Lambda动态排序通用方法
using System; using System.Collections.Generic; using System.Linq; using System.Linq.Expressions; us ...
- SSH隧道打洞技巧
SSH Tunnel有三种,分别是Local模式(ssh -NfL),Remote模式(ssh -NfR),Dynamic模式(ssh -NfD). 基本参数说明: -N 不执行任何命令 -f 在背景 ...
- AngularJS 整理学习
参考博客: https://blog.csdn.net/weixin_33178524/article/details/79179597 https://blog.csdn.net/qq_42128 ...
- javascript HTML静态页面传值的四种方法
一:JavaScript静态页面值传递之URL篇能过URL进行传值.把要传递的信息接在URL上.Post.htm 代码如下: <input type="text" name= ...
- SqlServer报错:主体“dbo”不存在
某台SqlServer数据库执行订阅发布的时候,报错: 无法作为数据库主体执行,因为主体“dbo”不存在.无法模拟这种类型的主体,或您没有所需的权限.(源:MSSQLServer,错误号:15517) ...
- 使用NIO快速复制Java文件
package com.test.test; import java.io.File;import java.io.FileInputStream;import java.io.FileOutputS ...
- IP地址与数字地址相互转换
/// <summary> /// IP地址转换成数字 /// </summary> /// <param name="addr">IP地址&l ...
- POJ-2226 Muddy Fields---二分图匹配+巧妙构图
题目链接: https://vjudge.net/problem/POJ-2226 题目大意: 用宽度为1长度不限的木板将水洼‘*’盖住而不盖住草‘.' Sample Input 4 4 *.*. . ...
- 【洛谷4011】孤岛营救问题(状压SPFA)
点此看题面 大致题意: 有一个\(N*M\)的四联通迷宫,相邻两个可能互通,可能有一扇门,也可能有一堵墙.对于第\(i\)类的门,你需要有第\(i\)类的钥匙才可以通过.问你从\((1,1)\)到达\ ...