首页 > 其他分享 >CF1213 合集

CF1213 合集

时间:2023-10-17 11:47:15浏览次数:34  
标签:code NN int CF1213 son using include 合集

CF1213A Chips Moving

考虑是一道非常简单的入门题

就是奇数的个数和偶数的个数取 \(\min\) 即可

code
#include<bits/stdc++.h>
using namespace std;
const int NN = 108;

int n;
int a,cnt[2];

int main(){
	scanf("%d",&n);
	for(int i = 1; i <= n; ++i){
		scanf("%d",&a);
		++cnt[a&1];
	}
	printf("%d",min(cnt[0],cnt[1]));
}

CF1213B Bad Prices

我们从后往前更新答案,每次维护后缀最小值即可

code
#include<bits/stdc++.h>
using namespace std;
const int NN = 2e5 + 8;
int T,n;
int a[NN];
int main(){
	scanf("%d",&T);
	while(T--){
		scanf("%d",&n);
		for(int i = 1; i <= n; ++i) scanf("%d",&a[i]);
		int mn = 0x3f3f3f3f,ans = 0;
		for(int i = n; i >= 1; --i){
			mn = min(a[i],mn);
			ans += mn != a[i];
		}
		printf("%d\n",ans);
	}
}

CF1213C Book Reading

这道题目,我们可以发现显然是有周期性的

我们个位数都可以统一成以 \(10\) 为一轮,然后就可以快速求解(预处理周期即可)

code
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int q;
ll n,m;
int a[10] = {0,45,40,45,40,25,40,45,40,45};
int main(){
	scanf("%d",&q);
	for(int i = 1; i <= q; ++i){
		ll ans = 0;
		scanf("%lld%lld",&n,&m);
		int base = m % 10;
		ll cnt = n / m;
		for(int i = 1; i <= cnt % 10; ++i){
			ans += i * base % 10;
		}
		ans += cnt / 10 * a[base];
		printf("%lld\n",ans);
	}
}

CF1213D Equalizing by Division (EZ&HD)

标签:字符串 \(C^+\)

我们可以发现,最后剩下的数字一定是只剩下高位。

我们这道题可以建出一个 01trie 然后就可以进行求解。

我们按所有数转化为二进制后的长度从小到大推入 01trie

然后我们就可以对于每个节点记录前 \(k\) 个遍历到这个节点的全部将这个节点后面的数字去掉的代价

可以证明从小到大加入后前 \(k\) 个遍历到的一定是最优解之一

最后对于每个节点记录的值取 \(\min\) 即可

code
#include<bits/stdc++.h>
using namespace std;
const int NN = 2e5 + 8;
int n,k;
int a[NN];
string s[NN];
vector<int> ans;

struct Trie{
	int son[2];
	int num,res;
	#define l(x) T[x].son[0]
	#define r(x) T[x].son[1]
	#define son(x,y) T[x].son[y-'0']
	#define num(x) T[x].num
	#define res(x) T[x].res
}T[NN << 4];
int cnt = 1;
void insert(int p){
	int now = 1;
	if(num(now) < k) ++num(now),res(now) += s[p].size();
	for(int i = 0; i < s[p].size(); ++i){
		if(son(now,s[p][i]) == 0){
			son(now,s[p][i]) = ++cnt;
		}
		now = son(now,s[p][i]);
		if(num(now) < k){
			++num(now),res(now) += s[p].size() - i - 1;
			if(num(now) == k) ans.push_back(res(now));
		}
	}
}
bool cmp(string &x,string &y){
	return x.size() < y.size();
}
int main(){
	scanf("%d%d",&n,&k);
	for(int i = 1; i <= n; ++i) scanf("%d",&a[i]);
	for(int j = 1; j <= n; ++j){
		if(a[j] == 0) s[j] = "0";
		while(a[j]){
			s[j] += (a[j] & 1) + '0';
			a[j] >>= 1;
		}
		reverse(s[j].begin(),s[j].end());
	}
	sort(s+1,s+1+n,cmp);
	for(int i = 1; i <= n; ++i) insert(i);
	sort(ans.begin(),ans.end());
	printf("%d",ans[0]);
}

CF1213E Two Small Strings

考虑这道题目显然还是很简单

我们考虑构造,很容易想到一种方法就是找到一个 \(abc\) 的排列,最后重复 \(n\) 次

但是我们会发现这样一组数据:

3
ab
ac

我们显然对于上面的一组数据就不能这样构造。

但是我们有另外一组构造方法:\(bbbcccaaa\)

就是对于 \(bca\) 这个排列来说,每个字母重复 \(n\) 遍即可

最后将两个构造方法合并即可通过本题。

code
#include<bits/stdc++.h>
using namespace std;

bool a[3][3];

int n;
char s[10];

int main(){
	memset(a,1,sizeof(a));
	scanf("%d",&n);
	for(int i = 1; i <= 2; ++i){
		scanf("%s",s);
		a[s[0]-'a'][s[1]-'a'] = 0;
	}
	if(a[0][0] && a[1][1] && a[2][2]){
		for(int i = 0; i <= 2; ++i){
			for(int j = 0; j <= 2; ++j){
				if(!a[i][j] || i == j) continue; 
				for(int k = 0; k <= 2; ++k){
					if(!a[j][k] || j == k || i == k) continue;
					puts("YES");
					for(int l = 1; l <= n; ++l) printf("%c",i+'a');
					for(int l = 1; l <= n; ++l) printf("%c",j+'a');
					for(int l = 1; l <= n; ++l) printf("%c",k+'a');
					return 0;
					
				}
			}
		}
	}
	else{
		for(int i = 0; i <= 2; ++i){
			for(int j = 0; j <= 2; ++j){
				if(!a[i][j] || i == j) continue; 
				for(int k = 0; k <= 2; ++k){
					if(!a[j][k] || j == k || i == k || !a[k][i]) continue;
					puts("YES");
					for(int l = 1; l <= n; ++l) printf("%c%c%c",i+'a',j+'a',k+'a');
					return 0;
				}
			}
		}
	}
}

CF1213F Unstable String Sort

标签:code,NN,int,CF1213,son,using,include,合集
From: https://www.cnblogs.com/rickylin/p/CF1213.html

相关文章

  • Ubuntu 问题合集
    1,安装完MySQL在程序中企图连接,报错。解决:fatalerror:mysql/mysql.h:Nosuchfileordirectory2,安装libmysqlclient-dev报错。解决:Ubuntu20.04无法访问http://cn.archive.ubuntu.com问题记录解决3,未完待续,感谢链接的作者。......
  • 苹果cms,V10版本漏洞分析和修复,安全合集
    漏洞分析方法(写代码的时候,注意把,做好校验和安全检查)https://www.cnblogs.com/zhengna/p/15165213.html后台php漏洞Maccms潜藏后门分析复现,webshell大马https://www.cnblogs.com/yankaohaitaiwei/p/11688470.htmlsql注入漏洞https://www.cnblogs.com/bugxf/p/16015117.html......
  • 华为云Ubuntu安装合集
    华为云Ubuntu安装yumsudoapt-getinstallyumaliasyum='sudoapt-get'安装宝塔面板wikijshexo安装hexoinit失败gittortoisegittortoisegit使用......
  • 板子合集
    板子索引火车头#include<iostream>#include<cstdio>#include<iomanip>#include<cmath>#include<bitset>#include<algorithm>#include<set>#include<unordered_set>#include<map>#include<unordered_m......
  • string用法合集
    \(string\)用法:使用索引访问:strings="123123123";则\(s[0]=1,s[1]=2\cdots\)。可以直接用运算符比较:strings1="asd";strings2="dsa";returns1<s2;//按字典序来,结果应该返回的是true字符串排序:strings="1b3rdc871yvbv";so......
  • 操作索引库-创建索引库(索引库相当于数据库,文档相当于数据库中的表,一种即具有相同数据
    创建索引库时可先定义映射,类似数据库中的约束 {"mappings":{"properties":{"title":{"type":"text"},"name":{"type":"text"},"created_at......
  • ps软件下载 软件电脑版 Photoshop下载_Photoshop合集下载
    Photoshop2022新版本,AdobeInc.旗下知名软件Photoshop系列推出了全新的2022版本,Photoshop2022在原来的基础上新增了一系列实用功能,可以满足用户的不同图片处理需求,Photoshop2022的图像处理能力更加优秀,有更多创意的互动工具可以体验,下面就为大家详细介绍Photoshop2022的一些新......
  • 安全工具合集:125个最佳网络安全工具-SecToolsOrg
    SecToolsOrg是什么SecToolsOrg是一个国外网友创建的安全工具网站,收集了125个最佳网络安全工具,网站为英文语言,网站提供评级、评论、搜索、排序和新工具建议表,该站点允许在任何平台上使用开源和商业工具,每款软件工具都有详细的介绍截图等等,感兴趣的同学可以到网站学习。英文页面......
  • 【合集】实在太懒把模拟赛分开新建随笔了
    B.特二分哈希找公共长度C.伯考场上其实是有往正解那个奇怪的结合上想的考虑n很小的时候怎么做:这时候可以用最小表示乘上排列数形态为树的时候,会发现可以直接dp,k中颜色实际上都是相同的所以直接设\(dp[i]\)表示节点i每一种颜色的ans考虑结合两部分将原图变为一......
  • 2023中大厂Android面试八股文合集,GitHub,牛客,leetcode已爆火!
    前言金九银十已过半,不知道大家现在都到哪个阶段了,有没有已经找到心仪的工作的朋友?有没有还没准备好面试在各大平台找资料临时抱佛脚的朋友?或是现在在准备,想要明年金三银四跳槽的朋友?不管你是现在急切找工作还是找资料备战,我都非常推荐你看看我花2个多月从GitHub,牛客,leetcode上为大......