题意1:

给你一个由小写字母构成的字符串s,你可以其中某些字符变成大写字母。如果s中有字母a,你如果想把a变成大写,那s字符串中的每一个a都要变成A

最后你需要要出来所有的字符对,s[i]和s[i-1]需要是辅音字母,且s[i]和s[i-1]中需要一个字母大写另一个小写。a、e、i、o、u、w、y这七个字母是元音

输出最大字符对数量

题解1:

首先预处理一下s字符串中字符相邻的数量,就是记录w[s[i-1]][s[i]]的数量

之后二进制枚举所有字母变成大写的情况。

然后枚举这个字母变成大写之后和其他字母组成成为字符对的数量。也就是结果加上w[x][k](x是变成大写的字母,k是枚举x和那个字母组成字符对)

那么如果b和c在s字符串中相邻了,然后b和c都变成大写怎么处理?

枚举到b变成大写的时候,x='b',当k='c'这个时候需要加上w[x][k]。

到下一次枚举到c的时候,x='c',当k='b'我们判断k是否变成了大写,如果变了,就减去w[x][k]

AC代码:

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <vector>
using namespace std;
typedef long long ll;
const int maxn = 1e6 + 5;
const int mod = 1000000007;
char s[maxn];
int w[150][150],que[150],vis[150];
int main()
{
freopen("consonant.in","r",stdin);
freopen("consonant.out","w",stdout);
scanf("%s",s);
int len=strlen(s);
if(len==1)
{
printf("%s\n",s);
return 0;
}
for(int i=1;i<len;++i)
{
w[s[i-1]][s[i]]++;
}
int pos=0;
for(int i='a';i<='z';++i)
{
if(i=='a' || i=='e' || i=='o' || i=='u' || i=='i' || i=='w' || i=='y')
continue;
que[pos++]=i;
}
//printf("%d***\n",pos);
int ans=0,flag=0;
for(int i=0;i<(1<<pos);++i)
{
int sum=0;
memset(vis,0,sizeof(vis));
for(int j=0;j<pos;++j)
{
if((1<<j)&i)
{
for(int k='a';k<='z';++k)
{
if(k=='a' || k=='e' || k=='o' || k=='u' || k=='i' || k=='w' || k=='y' || k==que[j])
continue;
if(vis[k])
{
// if(i==1026)
// {
// printf("********%c %c %d %d\n",k,que[j],w[k][que[j]],w[que[j]][k]);
// }
sum-=w[k][que[j]];
sum-=w[que[j]][k];
}
else
{
// if(i==1026)
// {
// printf("%c %c %d %d\n",k,que[j],w[k][que[j]],w[que[j]][k]);
// }
sum+=w[k][que[j]];
sum+=w[que[j]][k];
}
}
vis[que[j]]=1;
}
}
if(ans<sum)
{
ans=sum;
flag=i;
}
// printf("%d***\n",sum);
// system("pause");
}
memset(vis,0,sizeof(vis));
for(int i=0;i<pos;++i)
{
if((1<<i)&flag)
{
vis[que[i]]=1;
}
}
for(int i=0;i<len;++i)
{
if(vis[s[i]])
printf("%c",s[i]-32);
else printf("%c",s[i]);
}
printf("\n");
return 0;
}

题意2:

按顺序给你n个点,表示第i个点和第i-1个点相连,第1个点和第n个点相连。

题目保证所有连线和x或者y轴平行。让你输出n个点构成的图形看不到区域的长度

题解:

首先设这n个点构成的图形周长为x,后面使用x-大矩形周长就是答案

大矩形周长:就是把图形补全之后的外层大矩形的周长

代码:

#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <ctime>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <vector>
using namespace std;
typedef long long ll;
const int maxn = 1e3 + 5;
const int INF=0x3f3f3f3f;
const int mod = 1000000007;
struct Node
{
int x,y;
}node[maxn];
int main()
{
freopen("intel.in","r",stdin);
freopen("intel.out","w",stdout);
int n;
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
scanf("%d%d",&node[i].x,&node[i].y);
}
int ans=0,minnx=INF,minny=INF,maxxx=0,maxxy=0;
node[n+1]=node[1];
for(int i=2;i<=n+1;++i)
{
minnx=min(minnx,node[i].x);
minny=min(minny,node[i].y);
maxxx=max(maxxx,node[i].x);
maxxy=max(maxxy,node[i].y);
if(node[i-1].x==node[i].x)
{
ans+=abs(node[i].y-node[i-1].y);
}
else if(node[i-1].y==node[i].y)
{
ans+=abs(node[i].x-node[i-1].x);
}
}
printf("%d\n",ans-((maxxx-minnx)*2+(maxxy-minny)*2));
return 0;
}
/*
10
1 1
6 1
6 4
3 4
3 3
5 3
5 2
2 2
2 3
1 3
*/

Consonant Fencity Gym - 101612C 暴力二进制枚举 Intelligence in Perpendicularia Gym - 101612I 思维的更多相关文章

  1. Codeforces Round #272 (Div. 2) B. Dreamoon and WiFi (暴力二进制枚举)

    题意:给你一个只含\(+\)和\(-\)的字符串,统计它的加减和,然后再给你一个包含\(+,-,?\)的字符串,其中\(?\)可以表示为\(+\)或\(-\),问有多少种情况使得第二个字符串的加减和等 ...

  2. 【二进制枚举+LCS】Card Hand Sorting

    [二进制枚举+LCS]Card Hand Sorting 题目描述 When dealt cards in the card game Plump it is a good idea to start ...

  3. 【枚举】Consonant Fencity @upcexam5110

    时间限制: 3 Sec 内存限制: 512 MB 题目描述 There are two kinds of sounds in spoken languages: vowels and consonan ...

  4. Gym - 100712G Heavy Coins(二进制枚举)

    https://vjudge.net/problem/Gym-100712G 题意:给出n枚不同价值的硬币和一个总价S,现在要选择尽量多的硬币来大于等于S,要求是比如说现在选择的硬币的总和为sum,那 ...

  5. Tomb Raider HihoCoder - 1829 (二进制枚举+暴力)(The 2018 ACM-ICPC Asia Beijing First Round Online Contest)

    Lara Croft, the fiercely independent daughter of a missing adventurer, must push herself beyond her ...

  6. Card Hand Sorting 二进制枚举暴力

    这个题其实由于只有4种花色的,那么每种花色排列的顺序,也不过是4!种,然后对于每种花色内部到底是升序还是降序,其实也可以直接暴力,一共也就4!*2^4种情况,然后直接进行排序就可以了,但是我们如何计算 ...

  7. UVA12113-Overlapping Squares(二进制枚举)

    Problem UVA12113-Overlapping Squares Accept:116  Submit:596 Time Limit: 3000 mSec  Problem Descripti ...

  8. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 B Tomb Raider 【二进制枚举】

    任意门:http://hihocoder.com/problemset/problem/1829 Tomb Raider 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 L ...

  9. Atcoder beginner contest 249 C-Just K(二进制枚举)

    题目大意:给你N个字符串,你可以从中选择任意数量的字符串,请统计在你的字串中,相同字母出现次数正好为K次的字母数.数据保证出现的字母都是小写字母. 1≤N≤15 1 ≤K≤N 一开始读题的时候读错了, ...

随机推荐

  1. 微信小程序request请求的封装

    目录 1,前言 2,实现思路 3,实现过程 3.1,request的封装 3.2,api的封装 4,实际使用 1,前言 在开发微信小程序的过程中,避免不了和服务端请求数据,微信小程序给我们提供了wx. ...

  2. thinkpad8平板安装win10系统

    ThinkPad8 因为是平板电脑,只有一个micro USB接口,常规安装没法使用鼠标或键盘进行输入,所以难倒很多人. 幸好前段时间买了根otg线和3.0usb hub,安装方法记录如下: 准备:U ...

  3. postgresql中权限介绍

    postgresql权限分为实例的权限,数据库的权限,模式的权限,对象的权限,表空间的权限 实例的权限:由pg_hba.conf文件控制,控制那些用户那些IP以哪种方式连接数据库 数据库的权限:是否允 ...

  4. Docker 如何动态给SpringBoot项目传参

    关于SpringBoot配置数据源 在项目开发中,我们往往需要配置多套不同的配置环境例如:本地开发.测试环境.部署环境.每一个环境的数据源配置可能都不同,因此需要写不同的数据源配置.如果用Docker ...

  5. ASP Net Core – CORS 预检请求

    CORS(跨源资源共享)是一种机制,它允许同一个来源运行的Web应用程序从在另一个来源运行的服务器访问资源.同源策略是一种非常严格的措施,因为它只允许与服务器起源于同一源的应用程序访问其资源.很多时候 ...

  6. 在vSphere中为不同服务器配置IPMI功能

    在vSphere HA中如果要配置并启用DPM功能,需要记录服务器远程管理接口的IP地址(不是ESXi的IP地址,而是另一个独立的IP地址,是与ESXi服务器同一网段的另一个IP地址)与MAC地址.远 ...

  7. Mac下IDEA激活Jrebel

    第一步:在idea中下载jrebel,过程省略 第二步:配置反向代理工具 Windows 版:http://blog.lanyus.com/archives/317.html MAC 版: 安装hom ...

  8. your service shouldn’t know anything about HTTP headers, or gRPC error codes 干净架构 服务不应知道 HTTP头、gRPC错误码 服务仅知道服务相关的

    Go kit - Frequently asked questions https://gokit.io/faq/ Services - What is a Go kit service? Servi ...

  9. java面向对象(二)构造函数和构造代码块

    面向对象 类成员 1.成员变量 属性 数值类型的基本数据类型默认值是 0 成员变量在任何方法中都能访问,和声明先后没有关系 2.成员函数 方法 3.定义方式 class 类名{成员变量:成员函数} / ...

  10. mdns

    mdns mdns_百度百科 https://baike.baidu.com/item/mdns 在计算机网络中 , 多播DNS ( mDNS )协议将主机名解析为不包含本地名称服务器的小型网络中的I ...