E2. String Coloring (hard version)(贪心)】的更多相关文章

E2. String Coloring (hard version) time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output This is a hard version of the problem. The actual problems are different, but the easy version is almost a…
E1. String Coloring (easy version) time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output This is an easy version of the problem. The actual problems are different, but the easy version is almost…
这道题和HDU1257一模一样,一开始窝都用贪心直接解,没法理解为什么求一个最长下降序列,直到看了巨巨的题解,先给出一个定理,Dilworth's theorem,离散学不好,补题两行泪,该定理是说,对于任意的偏序集,其最长反链的长度与能分解的最少的链数(chain decomposition)相等,反链(anti-chain)是指该链内任意元素不可比(incomparable),链(chain)则是都可比,回到这一题,要求的是递增链的最小数目,即递增链最小分解数,转换成求其递减链的最长长度即可…
题目大意: 给定一段长度为n的字符串s 你需要给每个字符进行涂色,然后相邻的不同色的字符可以进行交换 需要保证涂色后能通过相邻交换把这个字符串按照字典序排序(a~z) 你只有两种颜色可以用来涂 问是否存在这么一种涂色方案满足题意 存在,输出YES,再用01表示两种不同的颜色,把涂色方案输出(如果有多种,输出任意一种) 不存在,输出NO 解题思路 1: 因为只有两种颜色可以用来涂 相同颜色彼此不能交换 所以同一种颜色组成的序列绝对是非严格递增的 那么就用mx记录一种颜色代表的非严格递增的序列到某个…
(easy version): 题目链接:http://codeforces.com/contest/1296/problem/E1 题目一句话就是说,两种颜色不同的字符可以相互换位, 问,对这字符串用最多两种颜色染色,然后经过有限次换位 可以变成字典序排序的顺序. 思路:一个字符需不需要换位,应该是参照最后的字典序的顺序, 那么,我们应该给字符串排序,再去思考问题. 我们知道,如果str[now_i]的位置和排序后的位置不一样,那就是需要换位. 我们还知道,如果str[now_i]的当前位置如…
You are given a string ss consisting of exactly nn characters, and each character is either '0', '1' or '2'. Such strings are called ternary strings. Your task is to replace minimum number of characters in this string with other characters to obtain…
链接: https://codeforces.com/contest/1209/problem/E2 题意: This is a harder version of the problem. The difference is only in constraints. You are given a rectangular n×m matrix a. In one move you can choose any column and cyclically shift elements in th…
Time Limit: 3 sec / Memory Limit: 1024 MB Score : 600600 points Problem Statement You are given a string SS of length 2N2N consisting of lowercase English letters. There are 22N22N ways to color each character in SS red or blue. Among these ways, how…
题意 链接:https://vjudge.net/problem/HDU-6586 给你一个字符串和k,还有每个字符出现次数的限制,求一个长度为k的字典序最小的满足限制的子序列. 思路 先构造出序列自动机,顺带把num(i,j)(下标为i后面的字符为j的个数)求出来. 题目要求字典序最小,我们就贪心的对每一位每次从a~z枚举,check是否满足. check(x,y,t):第x位放字符y且第x-1位是原串的下标t所表示的字符.要满足以下几点: 用过的字符y的数量+1<=r[y] t后面要有j字符…
题意 n个数字的序列a,将i位置向j位置转移x个(a[i]-x,a[j]+x)的花费为\(x\times |i-j|\),最终状态可行的条件为所有a[i]均被K整除(K>1),求最小花费 做法 \(sum=\sum\limits a\),则\(K|sum\) 有\(K1|sum,K2|sum\),若\(K1|K2\),则转移到被K1整除比转移到K2更优.这个是显然的,所以最终可能成为最优解的K个数为\(logsum\le 40\) 对于一个枚举到的K,将\(b[i]=a[i]\% K\) 对于b…
题意 给定n个线段,线段可以相交,第\(i\)个线段覆盖的区间为\([l_i,r_i]\),问最少删除多少个线段让覆盖每个点的线段数量小于等于k. 分析 从左往右扫每个点\(x\),若覆盖点\(x\)的线段数cnt大于k,则贪心的删去覆盖点\(x\)的线段中\(r_i\)前\(cnt-k\)大的线段,因为点\(x\)左边的点的被覆盖数一定已经小于等于k了,删去\(r_i\)越大的线段越优.可以用个堆来维护覆盖点\(x\)的线段,用树状数组维护覆盖每个点的线段数量. Code #include<b…
题意:你有\(n\)个礼物,礼物有自己的种类,你想将它们按种类打包送人,但是打包的礼物数量必须不同(数量,与种类无关),同时,有些礼物你想自己留着,\(0\)表示你不想送人,问你在送出的礼物数量最大的同时,尽可能的使自己喜欢的留下来,输出能送出的最大礼物数,以及这些礼物中自己不喜欢的数目. 题解:首先,我们肯定要让送出的礼物数最大,同时喜欢的最小,也就是送的礼物中,尽量让它的\(f\)是\(1\).这题考虑贪心,我们可以先对礼物数量进行排序,礼物数量相同让\(1\)多的排在前面,全部丢进优先队列…
题面在这里! 比较简单的折半搜索,推一下hash函数,要求正反最后相等就行了. #include<bits/stdc++.h> #define ll unsigned long long using namespace std; unordered_map<ll,ll> mmp[23]; ll c[37],ans; bool v[77]; char s[77]; int n,num; inline ll G(char x){ return x-'a'+3;} inline void…
题目大意 有一个无限长的数字序列,其组成为1 1 2 1 2 3 1.......1 2 ... n...,即重复的1~1,1~2....1~n,给你一个\(k\),求第\(k(k<=10^{18})\)个数字是什么. 思路 设\(a[i]\)为该数到达\(i\)的长度,\(b[i]\)为第\(i\)个数那一块的长度,\(\sum b[i]=a[i]\),发现\([10^i,10^{i+1})\)的数长度均为\(i+1\),那么在这一段中\(b[i]\)都是一个等差数列,而计算\(a[i]\)就…
题意:给你一长度为\(n\)的序列(可能含有相等元素),你要找到\(m\)个位置不同的元素使得\(max(a_{i-1},a_{i_2},...,a_{i_m})-min(a_{i-1},a_{i_2},...,a_{i_m})\le k\),问你共有多少种不同的元祖满足条件,对答案\(mod 1e9+7\). 题解:我们可以先用map做桶统计每个数出现的次数,然后枚举\([1,n]\),用前缀和\(pre\)统计出现的次数,然后我们再去枚举\([1,n]\),我们每次将\(i\)和\([1,i…
题意:给你一组数,每次可以选队首或队尾的数放入栈中,栈中元素必须保持严格单增,问栈中最多能有多少元素,并输出选择情况. 题解:首先考虑队首和队尾元素不相等的情况,如果两个数都大于栈顶元素,那么我们选小的放进去,否则选择比栈顶元素大的放进去,该题重点在于队首和队尾元素相同的情况,由于他们相同,那么我们如果将某一个数放进去后,因为栈中是严格单调的,那么假如我们选左边,那么右边就永远不可能再选了,同理选右边也是一样,所以我们在两边分别跑一下,求一个最长上升数组长度即可. 代码: int n; int…
题意:有\(n\)本书,A和B都至少要从喜欢的书里面读\(k\)本书,如果一本书两人都喜欢的话,那么他们就可以一起读来节省时间,问最少多长时间两人都能够读完\(k\)本书. 题解:我们可以分\(3\)种情况来存,即: ​ 1.\(a=b=1\). 2.\(a=1,b=0\). 3.\(a=0,b=1\). 对于2和3来说,我们可以将他们排序,然后合并到一起,最后放到第1种情况中再排一次序,取前\(k\)个前缀和即可. 代码: int n,k; int t,x,y; int ans; vector…
又是隔了一年才来补题的我 A.B水题就不用说了 C - Yet Another Walking Robot C题我居然卡了一会,最后决定用map水,结果出来看了看题解,居然真的是map...没想到会出这样题解用stl的方法,是我失策了 #include <cstdio> #include <algorithm> #include <map> using namespace std; * ; char s[N]; typedef pair <int, int>…
2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fallen Lord(sort(a+1,a+1+n,greater<int>()); 真好用) P4161 [SCOI2009]游戏 P1707 刷题比赛 2021-10-12 CF1573A Countdown P2717 寒假作业 P7868 [COCI2015-2016#2] VUDU P1660…
今天在学习lua,熟悉项目代码的过程中,发现string.gsub好高级,所以在此mark下. 以下是lua5.1的官方文档介绍. string.gsub (s, pattern, repl [, n]) Returns a copy of s in which all occurrences of the pattern have been replaced by a replacement string specified by repl, which may be a string, a…
package com.mooc.freemarker2dto; public class BaseDto { } package com.mooc.freemarker2dto; public class Book extends BaseDto{ private String name; private String author; private String year; private float price; public String getName() { return name;…
package com.mooc.string; import java.util.ArrayList; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; import com.mooc.sax.Book; public class XMLString2 {…
解决方案:    1.把头信息<?xml version='1.0' encoding='UTF-8'?>,但是内容会丢失部分: 2.用XmlDocument解析就OK.   正确代码: string xmlStr = "<?xml version='1.0' encoding='UTF-8'?><ROOT><MAIN_BILL_ID>13905837718</MAIN_BILL_ID><PROD_ID>6000000449…
在网上找了好久,都没搞出来,借鉴别人的代码,依葫芦画瓢,写了个自己用的解析类.注意节点属性和子节点的区别就好了,这个包的方法还挺好用的 package com.allinpay.utils; import java.util.ArrayList;import java.util.HashMap;import java.util.Iterator; import java.util.List;import java.util.Map;import org.dom4j.Document; impor…
阅读该篇文章前,请大家事先阅读一下:   java.toString(),(String),String.valueOf的区别 有了上述基础后,我接下来谈谈从一道题目中获得的些许收获. 今天在做题是发现了非常重要的一点.题目来源:http://www.lintcode.com/en/problem/anagrams/ 我们先来看一下两种不同的解法: 解法一: /* use int[26] assuming it's all lowercase letters count each string…
在软件实现更新模块的时候,有可能会判断一下服务器上的版本的版本号和本地版本的版本号. 下面有类似这样形式的版本号:string str = "0.0.0.1"; 分析一下可以看出,该版本号可以分为4个部分,下面就实现一个提取这4部分的功能函数: //通过string 参数获取版本号到version数组内 //该函数是通过"."来分别获取4个整形值的 //所以允许出现类似: "1000.20.3.5" void GetVersion(string…
转义符 \ 加上引号   \" <?xml version="1.0"encoding="GBK"?> String temp = "<?xml version=" + "\"" + "1.0" + "\"" + " encoding=" + "\"" + "GBK" +…
String xml = new String(a);打印的xml 的值是 <?xml version= 1.0 encoding=gb2312?><weighData><weighTime>2012-12-2 12:23:12</weighTime><cardNum>2</cardNum><cfid>123</cfid></weighData>如何将这个xml里面的 各个节点里值取出来. publ…
本文转自:https://damienbod.com/2016/09/22/setting-the-nlog-database-connection-string-in-the-asp-net-core-appsettings-json/ NLog posts in this series: ASP.NET Core logging with NLog and Microsoft SQL Server ASP.NET Core logging with NLog and Elasticsearc…
1:XDocument转String直接使用ToString();XNode里面重写了ToString()方法 2:XmlDocument转String需要写代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; using System.Xml.Linq; using Syste…