Problem - C - Codeforces

给定一个字符串,操作多次后只剩下同一字符,每次操作消除不相邻的多个字符,求最小操作次数

答案最多为字符串的长度,选定要保留的字符,看看对于每两个这个字符之间的的距离,每次操作可以是每段区间中不相邻的字符减少,也可以只让一段区间减少,所以我们只需要考虑最长的一段区间,设区间长度为len,最少需要的操作次数为1 + log2^len (1:操作完log2^len 次还剩一个字符 还需操作一次 )

#include <iostream>
#include <vector>
#include <bits/stdc++.h>
#include <unordered_map>
#include <unordered_set>
#include <queue>
#include <set>
#include <stack>
#include <algorithm>
#define x first
#define y second
#define pb emplace_back
#define fu(i,a,b) for(int i=a;i<=b; ++ i)
#define fd(i,a,b) for(int i=a;i>=b;    -- i)
#define endl '\n'
#define ms(x,y) memset(x,y,sizeof x)
#define ios ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
using namespace std;typedef long long LL;
typedef unsigned long long ULL;
typedef vector<vector<LL>> VVL;
typedef vector<vector<int>> VVI;
typedef vector<LL> VL;
typedef vector<bool> VB;
typedef vector<int> VI;
typedef vector<string> VS;
typedef pair<int,int> PII;
typedef vector<PII> VPII;
typedef pair<PII,int> PIII;
typedef pair<double,double> PDD;
typedef pair<double,int> PDI;
typedef pair<char,int> PCI;
typedef pair<string,int> PSI;
typedef pair<int,string> PIS;
typedef pair<int,char> PIC;
typedef pair<LL,LL> PLL;
typedef __int128 i128;
typedef unsigned long long ULL;
const int N =2e5+ 10 ,M = N * 2 ,INF = 0x3f3f3f3f,P = 131;
const double eps = 1e-8,DNF = 1e18;
const int mod = 1e9 +  7 ,base= 20010;
const LL LNF=(LL) INF * INF;void solve()
{string s;cin >> s;int n= s.size();VI p[26];fu(i,0,n-1) p[s[i]-'a'].push_back(i);int ans = n;fu(i,0,25){int t =- 1;p[i].push_back(n); //边界  最后一个到 n 相距有多少个字母 int res=0 ;for(auto x : p[i]){int len = x - t - 1;
// 同一字母 中间距 取最大         if(len) res = max(res,__lg(len) + 1);t = x;}
// 不同字母 间距取最小       ans = min(ans,res);}cout << ans << endl;}signed main()
{
//  freopen("1.txt","r",stdin);
//  #define int long long
//  init(N-1);ios
//  cout << fixed<<setprecision(2);int t=1;cin>>t;int now = 1;while(t -- ){
//      cout<<"Case ";
//      cout<<"Case #";
//      cout<<"Scenario #";
//      cout<< now ++ <<": ";
//      cout<< now ++ <<": \n";solve();}return 0;
}

C. Tear It Apart(贪心)相关推荐

  1. 算法设计与分析第3章 贪心算法

    第4章 贪心算法 贪心算法总是作出在当前看来最好的选择.也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择. 贪心算法的基本要素 1.贪心选择性质 所谓贪心选择性质是指所 ...

  2. 贪心算法单源点最短路径例题c语言源代码,Dijkstra算法是解单源最短路径问题的一个贪心算法...

    问题描述 给定一个带权有向图 G=(V,E) ,其中每条边的权是一个非负实数. 另外,还给定 V 中的一个项点,称为源. 现在我们要计算从源到所有其他各项点的最短路径长度. 这里的长度是指路上各边权之 ...

  3. Too Many Segments CF595D 贪心乱搞

    传送门! 比赛的时候没有时间写了,看看了看大佬的代码,学习学习. 一开始实验室大佬说是用差分写的,但是看了代码发现打cf的人大家都是stl狂魔! 贪心思路:区间按照左端点排序,从1~2e5遍历每一个点 ...

  4. Roundgod and Milk Tea 贪心

    这个题好像可以用一种类似与置换的贪心方法来做~ sum记为剩余奶茶,一开始sum等于奶茶和 ans记录已经喝的奶茶数 不用排序,我们就从前往后直接处理,考虑的是每一个班最多可以喝多少杯奶茶 就是从剩余 ...

  5. 贪心算法简单实践 -- 分糖果、钱币找零、最多区间覆盖、哈夫曼编解码

    1. 贪心算法概览 贪心算法是一种算法思想.希望能够满足限制的情况下将期望值最大化.比如:Huffman编码,Dijkstra单源最短路径问题,Kruskal最小生成树 等问题都希望满足限制的情况下用 ...

  6. 贪心:expedition 最优加油方法

    已知一条公路上,有一个起点与一个终点,这之间有n个加油站;已知从这n个加 油站到终点的距离d与各个加油站可以加油的量l,起点位置至终点的距离L与起 始时刻油箱中汽油量P;假设使用1个单位的汽油即走1个 ...

  7. 贪心:Burst Balloons 最少次数完成射击气球

    已知在一个平面上有一定数量的气球,平面可以看作一个坐标系,在平面的x轴的不同位 置安排弓箭手向y轴方向射箭,弓箭可以向y轴走无穷远;给定气球的宽度 xstart ≤ x ≤ xend,问至少需要多少弓 ...

  8. 贪心:jump 游戏(获取最少跳跃的次数以及跳跃路径)

    一个数组存储了非负整型数据,数组中的第i个元素a[i],代表了可以从数组第i个 位置最多向前跳跃a[i]步;已知数组各元素的情况下,求是否可以从数组的第0个位置跳跃到数组的最后一个元素的位置,返回最少 ...

  9. 贪心:Jump Game 跳跃游戏

    一个数组存储了非负整型数据,数组中的第i个元素a[i],代表了可以从数组第i个 位置最多向前跳跃a[i]步;已知数组各元素的情况下,求是否可以从数组的第0个位置跳跃到数组的最后一个元素的位置,返回是t ...

最新文章

  1. 【临实战】使用 Python 处理 Nginx 日志
  2. 换血吃药改基因,硅谷富豪们想用钱收买死神丨视频
  3. 如何删除一个员工编号及其全部主数据和事务数据?
  4. Winform中实现新增和更新共用一个页面的示例流程
  5. Discuz!NT博客非官方升级!!
  6. django 与 vue 的完美结合
  7. Linux防火墙配置与管理(16)
  8. C#从新浪新闻上提取新闻标题
  9. unity: GetLocalizedString can only be called from the main thread 异常解决
  10. delphi windows编程_他曾创造多门编程语言,还被比尔盖茨以300万美元挖角
  11. 软件基本功:垃圾代码是怎样产生的?
  12. VMware ESXi客户端连接控制台时提示VMRC控制台连接已断开...正在尝试重新连接的解决方法...
  13. 汉字编码计算机,计算机汉字编码,computerbased Chinese codings,音标,读音,翻译,英文例句,英语词典...
  14. 图片转成文字:方便准确的OCR识图软件
  15. 华为nova2s应用计算机,华为nova2s 如何打开多个应用 | 手游网游页游攻略大全
  16. java解析edi报文_EDI文件解析语法规则
  17. 基于密度聚类算法的改进
  18. 什么是带状线、微带线?参考平面与传输线那些事儿
  19. Android Bluetooth HID实现详解
  20. MTK9652和Mstar938的区别

热门文章

  1. xbox one 越狱_如何使用密码限制对Xbox One的访问
  2. eslint,prettier配置
  3. 小知识分享:adb uiautomator 命令 dump ui 树信息
  4. 关于python中loc和iloc方法
  5. 2024东北林业大学计算机考研信息汇总
  6. Excel——打开后空白,解决方法
  7. xp系统计算机重名明无法完成,XP电脑文件夹无法删除怎么办?
  8. JSCERT授知道创宇网络安全通报成员证书
  9. 阿里云服务器购买帮助说明文档
  10. ThreeJS 引入GLb文件后报警告 Unknown extension “KHR_materials_pbrSpecularGlossiness“.