Consonant Fencity Gym - 101612C 暴力二进制枚举 Intelligence in Perpendicularia Gym - 101612I 思维
题意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 思维的更多相关文章
- Codeforces Round #272 (Div. 2) B. Dreamoon and WiFi (暴力二进制枚举)
题意:给你一个只含\(+\)和\(-\)的字符串,统计它的加减和,然后再给你一个包含\(+,-,?\)的字符串,其中\(?\)可以表示为\(+\)或\(-\),问有多少种情况使得第二个字符串的加减和等 ...
- 【二进制枚举+LCS】Card Hand Sorting
[二进制枚举+LCS]Card Hand Sorting 题目描述 When dealt cards in the card game Plump it is a good idea to start ...
- 【枚举】Consonant Fencity @upcexam5110
时间限制: 3 Sec 内存限制: 512 MB 题目描述 There are two kinds of sounds in spoken languages: vowels and consonan ...
- Gym - 100712G Heavy Coins(二进制枚举)
https://vjudge.net/problem/Gym-100712G 题意:给出n枚不同价值的硬币和一个总价S,现在要选择尽量多的硬币来大于等于S,要求是比如说现在选择的硬币的总和为sum,那 ...
- 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 ...
- Card Hand Sorting 二进制枚举暴力
这个题其实由于只有4种花色的,那么每种花色排列的顺序,也不过是4!种,然后对于每种花色内部到底是升序还是降序,其实也可以直接暴力,一共也就4!*2^4种情况,然后直接进行排序就可以了,但是我们如何计算 ...
- UVA12113-Overlapping Squares(二进制枚举)
Problem UVA12113-Overlapping Squares Accept:116 Submit:596 Time Limit: 3000 mSec Problem Descripti ...
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 B Tomb Raider 【二进制枚举】
任意门:http://hihocoder.com/problemset/problem/1829 Tomb Raider 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 L ...
- Atcoder beginner contest 249 C-Just K(二进制枚举)
题目大意:给你N个字符串,你可以从中选择任意数量的字符串,请统计在你的字串中,相同字母出现次数正好为K次的字母数.数据保证出现的字母都是小写字母. 1≤N≤15 1 ≤K≤N 一开始读题的时候读错了, ...
随机推荐
- 最新最简洁Spring Cloud Oauth2.0 Jwt 的Security方式
因为Spring Cloud 2020.0.0和Spring Boot2.4.1版本升级比较大,所以把我接入过程中的一些需要注意的地方告诉大家 我使用的版本是Spring boot 2.4.1+Spr ...
- 18.java设计模式之中介者模式
基本需求 智能家庭包括各种设备,闹钟.咖啡机.电视机.窗帘等 要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起->咖啡机开始做咖啡->窗帘自动落下-> ...
- 【排序基础】5、插入排序法 - Insertion Sort
插入排序法 - Insertion Sort 文章目录 插入排序法 - Insertion Sort 插入排序设计思想 插入排序代码实现 操作:插入排序与选择排序的比较 简单记录-bobo老师的玩转算 ...
- kubernets之job资源
一 介绍job资源 1.1 前面介绍的RC,RS,DS等等,管控的pod都是需要长期持久的运行的应用,但是尝试考虑另外一种场景,在微服务的场景下,有些pod的作用就是需要 执行完一些命令之后正常 ...
- P1273 有线电视网(树形动规,分组背包)
题目链接: https://www.luogu.org/problemnew/show/P1273 题目描述 某收费有线电视网计划转播一场重要的足球比赛.他们的转播网和用户终端构成一棵树状结构,这棵树 ...
- 天天用SpringBoot居然还不知道它的自动装配的原理?
引言 最近有个读者在面试,面试中被问到了这样一个问题"看你项目中用到了springboot,你说下springboot的自动配置是怎么实现的?"这应该是一个springboot里面 ...
- Spring集成GuavaCache实现本地缓存
Spring集成GuavaCache实现本地缓存: 一.SimpleCacheManager集成GuavaCache 1 package com.bwdz.sp.comm.util.test; 2 3 ...
- Java并发包源码学习系列:JDK1.8的ConcurrentHashMap源码解析
目录 为什么要使用ConcurrentHashMap? ConcurrentHashMap的结构特点 Java8之前 Java8之后 基本常量 重要成员变量 构造方法 tableSizeFor put ...
- pandas高级操作
pandas高级操作 import numpy as np import pandas as pd from pandas import DataFrame,Series 替换操作 替换操作可以同步作 ...
- CSS实现迷你键盘
最近做了一个迷你键盘的dome,这里分享给大家 dome下载地址(点击下载) 代码如下: <!DOCTYPE html> <html lang="en" > ...