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 ...
随机推荐
- java驼峰法和下划线法字符串的相互转换
java驼峰法和下划线法字符串的相互转换 1 import java.util.regex.Matcher; import java.util.regex.Pattern; public class ...
- discuz 设置
veikei_dz_com_20120821_gray_free 模板 论坛 瀑布流 需要在后台设置 论坛--板块管理--编辑对应板块--扩展设置--开启图片列表模式 FAQ 帮助页面 在后台管理 ...
- nodejs 和 js
JavaScript组成:ECMAScript(定义这门语言的基础,比如语法.数据类型.结构以及一些内置对象等).DOM(基于ECMASCRIPT,扩展出来的用于操作页面元素的方法).BOM(基于EC ...
- idea常用快捷键列表
在使用IntelliJ Idea的时候,使用快捷键是必不可少的.掌握一些常用的快捷键能大大提高我们的开发效率.有些快捷键可以熟练的使用,但是还有另外一些快捷键虽然很好用,但是由于因为没有形成使用习惯或 ...
- 洛谷 U78696 图书馆馆长的考验 题解
题面 1. 图书馆馆长的考验(library) 红魔馆的拥有者蕾米莉亚的好友帕秋莉是红魔馆的大图书馆的馆长.擅长操纵五行,名言是“万物都有属性.所谓的属性,和弱点是一样的”. 一天,因为魔理沙看了神之 ...
- Codeforces 1215F. Radio Stations
传送门 题目看一半:"woc 裸的 $2-sat$ 白给??" 看完以后:"...???" 如果没有 $f$ 的限制,那就是个白给的 $2-sat$ 问题,但是 ...
- 在CentOS7上无人值守安装Zabbix4.2
#!/bin/bash # 检查操作系统版本,该脚本只能运行在 Centos .x 系统上 cat /etc/redhat-release |grep -i centos |grep '7.[[:di ...
- PHP foreach 引用 &
以前用foreach,总喜欢在第二次遍历时改变value的拼写,比如 $x = array("a", "b", "c"); foreach ...
- Fliter设置字符编码,解决中文问题
class EncodingFilter implements FileFilter{ private String encoding; @Override public boolean accept ...
- MySQL第二讲 一一一一 MySQL语句进阶
通过命令来备份数据库: 通过数据库软件里面的,mysqldump模块来操作,如下: mysqldump -u root db1 > db1.sql -p; //没有-d就是备份的时候:数据表结构 ...