CF1257E/F
E
给出三个序列共n个元素,每个元素值为1~n且不重
一次可以把一个元素换到另一个序列中,求最少操作次数使得三个序列(可为空)分别排序后并在一起为1~n顺序
题解
(伪)神仙题
随便dp,依次考虑每个数放在那里
由于要保证最终的顺序,所以放的序列的编号要单调
f[i][0/1/2],第i个放在0/1/2的最小操作数
code
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#define fo(a,b,c) for (a=b; a<=c; a++)
#define fd(a,b,c) for (a=b; a>=c; a--)
#define min(a,b) (a<b?a:b)
using namespace std;
int a[200002];
int f[200002][3];
int n,n1,n2,n3,i,j,k,l,ans,Ans;
int main()
{
// freopen("e.in","r",stdin);
scanf("%d%d%d",&n1,&n2,&n3);n=n1+n2+n3;
fo(i,1,n1) scanf("%d",&j),a[j]=0;
fo(i,1,n2) scanf("%d",&j),a[j]=1;
fo(i,1,n3) scanf("%d",&j),a[j]=2;
memset(f,127,sizeof(f));
f[0][0]=f[0][1]=f[0][2]=0;
fo(i,0,n-1)
{
fo(j,0,2)
{
fo(k,j,2)
f[i+1][k]=min(f[i+1][k],f[i][j]+(k!=a[i+1]));
}
}
printf("%d\n",min(min(f[n][0],f[n][1]),f[n][2]));
}
F
n个数,求一个x(x<=2^30-1)使得每个ai xor x二进制下一的个数相同
ai<=2^30-1
题解
折半,每边15位
设n个数最终1的个数为x,i的前15位异或后1的个数为ci
那么后15位的个数分别为x-c1,x-c2,x-c3...x-cn
差分一下变成c1-c2,c2-c3,c3-c4...,刚好与前15位的差分c2-c1,c3-c2,c4-c3...成相反数关系
处理出一边的情况,把序列取反哈希后丢到map里,再枚举另一边判断即可
code
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <map>
#define fo(a,b,c) for (a=b; a<=c; a++)
#define fd(a,b,c) for (a=b; a>=c; a--)
#define mod 1145141919810ll
using namespace std;
int a[101];
int b[101];
int n,i,j,k,l,x,s1,s2;
map<long long,int> hs;
map<long long,int> :: iterator I;
long long s;
int get(int x)
{
int s=0;
while (x)
{
++s;
x^=x&-x;
}
return s;
}
int main()
{
// freopen("f.in","r",stdin);
scanf("%d",&n);
fo(i,1,n)
scanf("%d",&a[i]),b[i]=a[i]&32767,a[i]=a[i]>>15;
fo(x,0,32767)
{
s=1;
fo(i,1,n)
{
s1=get(a[i]^x);
if (i>1)
s=(s*233+(s1-s2+233))%mod;
s2=s1;
}
hs.insert(map<long long,int>::value_type(s,x));
}
fo(x,0,32767)
{
s=1;
fo(i,1,n)
{
s1=get(b[i]^x);
if (i>1)
s=(s*233+(s2-s1+233))%mod;
s2=s1;
}
I=hs.find(s);
if (I!=hs.end())
{
printf("%d\n",(*I).second*32768+x);
return 0;
}
}
printf("-1\n");
}
CF1257E/F的更多相关文章
- Mysql_以案例为基准之查询
查询数据操作
- 在 C# 里使用 F# 的 option 变量
在使用 C# 与 F# 混合编程的时候(通常是使用 C# 实现 GUI,F#负责数据处理),经常会遇到要判断一个 option 是 None 还是 Some.虽然 Option module 里有 i ...
- 如果你也会C#,那不妨了解下F#(7):面向对象编程之继承、接口和泛型
前言 面向对象三大基本特性:封装.继承.多态.上一篇中介绍了类的定义,下面就了解下F#中继承和多态的使用吧.
- 如果你也会C#,那不妨了解下F#(2):数值运算和流程控制语法
本文链接:http://www.cnblogs.com/hjklin/p/fs-for-cs-dev-2.html 一些废话 一门语言火不火,与语言本身并没太大关系,主要看语言的推广. 推广得好,用的 ...
- 使用F#开发ASP.NET Core应用程序
.NET Core 里的F# 在.NET Core刚发布时,就已经添加了对F#的支持.但因为当时F#组件还不完整,而一些依赖包并没有放在Nuget上,而是社区自己放到MyGet上,所以在使用dotne ...
- 如果你也会C#,那不妨了解下F#(6):面向对象编程之“类”
前言 面向对象的思想已经非常成熟,而使用C#的程序员对面向对象也是非常熟悉,所以我就不对面向对象进行介绍了,在这篇文章中将只会介绍面向对象在F#中的使用. F#是支持面向对象的函数式编程语言,所以你用 ...
- 如果你也会C#,那不妨了解下F#(5):模块、与C#互相调用
F# 项目 在之前的几篇文章介绍的代码都在交互窗口(fsi.exe)里运行,但平常开发的软件程序可能含有大类类型和函数定义,代码不可能都在一个文件里.下面我们来看VS里提供的F#项目模板. F#项目模 ...
- 如果你也会C#,那不妨了解下F#(4):了解函数及常用函数
函数式编程其实就是按照数学上的函数运算思想来实现计算机上的运算.虽然我们不需要深入了解数学函数的知识,但应该清楚函数式编程的基础是来自于数学. 例如数学函数\(f(x) = x^2+x\),并没有指定 ...
- 如果你也会C#,那不妨了解下F#(3):F#集合类型和其他核心类型
本文链接:http://www.cnblogs.com/hjklin/p/fs-for-cs-dev-3.html 在第一篇中,我们介绍了一些基础数据类型,其实那篇标题中不应该含有"F#&q ...
随机推荐
- 将dos窗口调白教程
将dos弹出窗口调白教程 第1步:同时按住Win+R键,输入cmd 第2步:右键点击标题栏 第3步:点击默认值,然后再点击颜色 第四步:将窗口颜色设置为白色,字体颜色设置为黑色(效果测试)
- 【LeetCode】188、买卖股票的最佳时机 IV
Best Time to Buy and Sell Stock IV 题目等级:Hard 题目描述: Say you have an array for which the ith element i ...
- 【VS开发】模态对话框和非模态对话框
MFC中对话框有两种形式,一个是模态对话框(model dialog box),一个是非模态对话框(modeless dialog box). 一.模态对话框(model dialog box) 在程 ...
- 爬取网易云音乐评论!python 爬虫入门实战(六)selenium 入门!
说到爬虫,第一时间可能就会想到网易云音乐的评论.网易云音乐评论里藏了许多宝藏,那么让我们一起学习如何用 python 挖宝藏吧! 既然是宝藏,肯定是用要用钥匙加密的.打开 Chrome 分析 Head ...
- nodejs版本控制:nvm use命令失效
Downloading npm version ... Download failed. Rolling Back. Rollback failed. remove C:\Users\Administ ...
- Excel透视表进阶之排序、筛选、分组、总计与分类汇总
排序 自动排序 升序: 数字(从小到大) 日期(日期越早越靠小) 英文(按照A-Z) 中文(按照拼音的A-Z) 手动排序 通过鼠标的拖拽来完成手动排序 通过快捷菜单的方式:右击-移动 依据其他字段进行 ...
- C++中函数异常规格的说明
1,本文介绍一个新的概念,它是一个重要的概念,并且是 C++ 中的一个高级主题: 2,问题: 1,如何判断一个函数(不是自己写的,有可能是第三方库中的函数)是否会抛出异常,以及抛出那些异常? 1,学习 ...
- Jquery复习(九)之noConflict()
如何在页面上同时使用 jQuery 和其他框架? jQuery 和其他 JavaScript 框架 正如您已经了解到的,jQuery 使用 $ 符号作为 jQuery 的简写. 如果其他 JavaSc ...
- 什么是 MicroPython ?它有什么优势?
MicroPython 和 Python 都是一类 Python 的动态语言解释器. 若是在系统里安装了 Python 解释器,例如在 Windows 或者 Linux 命令行输入 python,进入 ...
- java 正则表达式 复习
正则表达式在日常开发中会经常的接触到,学会了正则可以更有效的对字符进行验证.拆分.替换.判断字符串是否合法等操作... 常用语法: 字符的取值范围 1.[abc] : 表示可能是a,可能是b,也可能是 ...