首页 > 其他分享 >CF1624D【黄】-思维题

CF1624D【黄】-思维题

时间:2024-02-16 19:55:05浏览次数:26  
标签:思维 include int ans duizi CF1624D

题目: https://www.luogu.com.cn/problem/solution/CF1624D
这道题很简单,但是启发我把这一类题都起名为思维题,贪心题大部分都是思维题,但还有很多不属于贪心题的思维题,总之思维题就是考察思维能力,和算法无关,通常能做出来的都能轻松做出,做不出来的想破头也想不出来,这道题属于前者。

Code

#include <iostream>
#include <cstring>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <stack>
#include <queue>
#include <map>
#include <unordered_map>
#include <cmath>
#define int long long
using namespace std;
int T,n,k,b[30],ans,duizi,dan;
char x;
signed main()
{
	cin>>T;
	while(T--)
	{
		for(int i=1;i<=26;i++)b[i]=0;
		duizi=0;dan=0;
		cin>>n>>k;
		for(int i=1;i<=n;i++)
		{
			cin>>x;
			b[x-'a'+1]++;
			//分成了u个成对的字母v个单独的字母,我们手头有k个颜色,单独的字母
			//如果最长和最短差距>=3,最长就可以拿出一对给最短,缩小差距,因此最长和最短差距<=2;我们应该有限分配对子,知道某些人只比另一些人多一对
			//然后分配单独的字母,优先分配给少了一对的人,再多就不分配了
		}
		for(int i=1;i<=26;i++)
		{
			if(b[i]%2==0)
			{
				duizi+=b[i]/2;
			}
			else
			{
				dan++;
				duizi+=(b[i]-1)/2;
			}
		}
		if(duizi%k==0)
		{
			if(dan<k)ans=duizi/k*2;
			else ans=duizi/k*2+1;
		}
		else
		{
			if(dan+duizi%k*2>=k)ans=duizi/k*2+1;
			else ans=duizi/k*2;
		}
		cout<<ans<<endl;
	}
	
	return 0;
}

标签:思维,include,int,ans,duizi,CF1624D
From: https://www.cnblogs.com/gongkai/p/18017419

相关文章

  • (视频)跨学科思维
    代谢增长论(一)大统一理论的四种方式建模砖块(基函数)统一观察参照系改变相互作用模式统一思维方式的统一分工受市场规模限制,争夺的是市场份额,以实现收支平衡外生增长的规模积累,内生增长的知识积累。知识不是积累是淘汰(二)中西文明的本质差异中国精耕细作的小农经济,劳动密......
  • 基于概念映射的问题提出方法对学生学习成绩和批判性思维倾向的影响:在文言文学习情境
    (Effectsofaconceptmapping-basedproblem-posingapproachon students’learningachievementsandcriticalthinkingtendency: AnapplicationinClassicalChineselearningcontexts) doi:10.1111/bjet.13007一、摘要研究目的:在语言课程中,培养学生的系统思维能......
  • Codeforces Round 924 (Div. 2)B. Equalize(思维+双指针)
    目录题面链接题意题解代码题面链接B.Equalize题意给一个数组\(a\),然后让你给这个数组加上一个排列,求出现最多的次数题解赛时没过不应该。最开始很容易想到要去重,因为重复的元素对于答案是没有贡献的。去重后排序。,然后维护一个极差小于n-1的区间,,区间长度就是可能的答案......
  • Codeforce-- 思维题
    2-11Eatthechip思路:题意可知,a从下往上走,b从上往下走,我们可以思考一个问题,在某一个回合,如果a和b在同一列中(a是Alice,b是Bob),一方怎么走,另外一方就跟着这一方走,所以同一列的时候是该回合后手的必胜态,先手的必败态。于是可以递推:如果在走到边界的时候有机会仍然保持b在a的上方,那么......
  • Educational Codeforces Round 135 (Rated for Div. 2)C. Digital Logarithm(思维)
    目录题目链接题意题解代码题目链接C.DigitalLogarithm题意给两个长度位\(n\)的数组\(a\)、\(b\),一个操作\(f\)定义操作\(f\)为,\(a[i]=f(a[i])=a[i]\)的位数求最少多少次操作可以使\(a、b\)两个数组变得完全相同题解性质:对于任何数,经过两次操作我们一定可以让其变为\(......
  • 2.2 如何把一道简单思维题变难
    今天是搞笑场,符合“精神状况记录”的tag。方法一:将\(O(n)\)甚至\(O(\logn)\)的需要一定思维的题目,将\(n\)开到\(1000\),\(100\)等两级。ARC108DAB给定\(c_{A/B,A/B}\in\{A,B\}\),每次可以在\(XY\)间插入\(c_{X,Y}\),问可以得到多少种长\(n\)序列。重要:数据范......
  • 《C++ Primer Plus》(第六版)中文版——思维导图+附录PDF+源代码
    说明,以下文件可在异步社区免费下载不同之处在于原附录PDF文件没有书签,而本文分享的附录文件带有书签本文所有文件下载链接:https://www.123pan.com/s/lO3uVv-uaEKv.html思维导图(图片)以下仅为预览,高清图片可从文章开头下载链接中下载另外后续本人有空会制作XMind脑图版本,会添加......
  • vue2 手写思维导图编辑器,支持图片和节点拖拽(2)
    弹框模块DigitalXmindDialog.vue<template><el-dialog:title="title"width="1200px"class="auth-dialog"top="5%":append-to-body="true":lock-scroll="false":c......
  • vue2 手写思维导图编辑器,支持图片和节点拖拽(1)
    效果图:支持图片粘贴和布局重新计算可拖拽: 代码结构DigitalXmindDialog.vue//弹框VueXmind//脑图编辑器index.vue//主体编辑器XmindNode.vue//节点文件XmindSvgLine.vue//脑图底部的svg线段绘画板NodeAttributes.vue//右侧主题设置模块XmindStyleMixins......
  • 40 个拓展思维的概念/一位 44 岁老人的人生经验
    10:24到公司web-interviewhttp系列完成看完了https://github1s.com/timolins/react-hot-toast源码https://www.yuque.com/beilo/simpread/1705914485536?singleDoc#《40Mind-ExpandingConcepts(Winter2022)40个拓展思维的概念(2022年冬)》https://www.yuque.com/beilo/......