kickstart-E
A题 简答模拟题
#include <iostream>
#include<stdio.h>
#include <set>
#include <algorithm>
#include <vector>
#include <string>
#include <cstring>
using namespace std;
int a[],b[]; int main()
{
freopen("/Users/zjg/CLionProjects/ac/A-large-practice.in","r",stdin);
freopen("/Users/zjg/CLionProjects/ac/A-large-practice.out","w",stdout);
int TT;
cin>>TT;
for(int t=;t<=TT;t++)
{
memset(a,,sizeof(a));
memset(b,,sizeof(b));
vector<int> v;
int n,k;
cin>>n>>k;
for(int i=;i<n;i++)
cin>>a[i];
sort(a,a+n);
int T=;
for(int i=;i<n;i++)
{
if(i==)
{
b[T]++;
v.push_back(a[i]);
}
else if(a[i]==a[i-])b[T]++;
else if(a[i]!=a[i-])
{
b[++T]++;
v.push_back(a[i]);
}
}
long long num=;
long long ans=; for(int i=v[T];i>;i--)
{
if(T>=&&i==v[T])
num+=b[T--];
ans+=num<k?num:k;
if(num>k)num-=k;
else num=;
}
cout<<"Case #"<<t<<": "<<ans<<endl;
}
return ;
}
B题
正解是按照bit构造。因为只有M个constraint,所以只要找到complaint最小的前M+1个二进制数,一定有一个是符合条件的。假设s[0,...,p+1]位于前M+1个,那么s[0,..,p]一定也是前M+1个。Proof by contradiction: 如果s[0,...,p+1](表示长度为p+1)是前M+1个而s[0,...,p]不是,假设s[p+1]增加的complaint是x,那么排在s[0,...,p]之前的s'[0,...,p]增加一个相同的bit (s[p+1]),构成的新的二进制数的complaint一定比s[0,...,p+1]小,如此可以产生多于M+1个complaint比s[0,..,p+1]小的二进制数,和s[p+1]位于前M+1矛盾。
Then 如果s[0,...,p]不是前M+1个,s[0,..,p+1]一定也不是前M+1个,无论新增的bit是0 or 1.所以对于每个bit p,维护前M个s[0,..,p],对下一个bit增加0 or 1,再对bit p+1排序找出前M+1个……
可以预处理求出N个二进制数bit p的1的个数之和,这样从bit p to bit p+1可以O(1)求出新增的complaint。
#include <string>
#include <vector>
#include<iostream>
#include<cstdio>
#include<queue>
#include<cmath>
#include <set>
#include<algorithm>
#include<cstring> using namespace std; int main(){
freopen("/Users/zjg/CLionProjects/ac/B-large-practice.in","r",stdin);
freopen("/Users/zjg/CLionProjects/ac/B-large-practice.out","w",stdout);
int kase;
cin>>kase;
for(int k=;k<kase;k++){
int n,m,p;
cin>>n>>m>>p;
vector<int> cnt(p);
for(int i=;i<n;i++){
string s;
cin>>s;
for(int j=;j<p;j++)if(s[j]=='') ++cnt[j];
}
vector<string> ban(m);
for(int i=;i<m;i++) cin>>ban[i];
priority_queue<pair<int,string>> que; que.emplace(,"");
for(int i=;i<p;i++){
int a=cnt[i];
int b=n-a;
auto tmp=que;
while(que.size()) que.pop();
while(tmp.size()){
int t;
string s;
tie(t,s)=tmp.top(); tmp.pop();
que.emplace(t+a,s+"");
que.emplace(t+b,s+"");
while(que.size()>) que.pop();
}
}
int re;
set<string> st(ban.begin(),ban.end());
while(que.size()){
int t;
string s;
tie(t,s)=que.top(); que.pop();
if(st.count(s)) continue;
re=t;
}
cout<<"Case #"<<k+<<": "<<re<<endl;
}
return ;
}
kickstart-E的更多相关文章
- PXE+Kickstart+DHCP+TFTP实现无人值守安装操作系统
PXE+Kickstart+DHCP+TFTP实现无人值守安装操作系统 PXE + Kickstart PXE的工作流程及配置文件 Kickstart的配置文件 Linux安装大致可以分为2个阶段 第 ...
- KickStart 无人值守安装系统
一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...
- CentOS6.6 kickstart文件
# Kickstart file automatically generated by anaconda. #version=DEVELinstall#cdromurl --url http://19 ...
- kickstart+ftp+tftp+dhcp+PXE
##########yum less install.log #看安装log yum install system-config-kickstart* -y yum install tftp* -y ...
- linux系统PXE+Kickstart自动安装系统
一.PXEPXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服 ...
- Kickstart/Anaconda实现自动化安装原理探究
原网页地址:http://molinux.blog.51cto.com/2536040/548247#55918... 内容概要: 1. 系统安装基本流程图示2. Anaconda简介3. K ...
- [转]CentOS 6.4下PXE+Kickstart无人值守安装操作系统
一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...
- 烂泥:KVM、kickstart与nginx集成
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前几篇文章介绍了FTP.NFS与KVM.kickstart集成的案例,从这篇文章开始,我们来介绍HTTP方式与KVM.kickstart集成. HTTP ...
- kickstart note
KickStart是一种无人职守安装方式 PXE + kickstart + DHCP + TFTP 1.挂载光盘 mount /dev/sr0 /mnt/iso cp -rf /mnt/iso/* ...
- 烂泥:KVM、kickstart与FTP集成
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在上一篇文章中,我们介绍了有关KVM.kickstart与NFS集成的相关内容.在这节我们将继续介绍FTP与KVM.kickstart集成的相关操作. ...
随机推荐
- 【转】Leveldb源码分析——1
先来看看Leveldb的基本框架,几大关键组件,如图1-1所示. Leveldb是一种基于operation log的文件系统,是Log-Structured-Merge Tree的典型实现.LSM源 ...
- v-on 绑定自定义事件
每个 Vue 实例都实现了事件接口,即: 使用 $on(eventName) 监听事件 使用 $emit(eventName) 触发事件 Vue 的事件系统与浏览器的 EventTarget API ...
- modsign: could't get uefi db list
手头上一个工控机,装完 ubuntu 16.04后重启, 一直提示如下错误: modsign: could't get uefi db list 用过ubuntu的修复工具也没有成功. 后经过如下操 ...
- mysql5.7 pxc
pxc优点总结:可以达到时时同步,无延迟现象发生完全兼容MySQL对于集群中新节点的加入,维护起来很简单数据的强一致性不足之处总结:只支持Innodb存储引擎存在多节点update更新问题,也就是写放 ...
- python第13天
装饰器 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何改动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象. 装饰器的应用场景:比如插入日志,性能测试,事务处理,缓存等等 ...
- Hystrix浅谈
Hystrix如何使用很多说明,看了很多博客,却发现能说明一些简单概念的文章就没有. 所以本文不太回去说如何使用 Hystrix ,但是会简明的说一下 一些概念 super(Setter.withGr ...
- 47)django-以put和delete方式提交数据
一:说明 同一个页面以ajax实现增删改查,对应方法post,delete,put,get, 其中delete和put方式提交的数据在request.body中需要序列化处理. 二:示例 #模板提交数 ...
- C#方法的重写
问题一:什么是重写? “重写”父类方法就是修改它的实现方式或者说在子类中对它进行重新编写. 问题二:为什么要重写父类的方法 通常,子类继承父类的方法,在调用对象继承方法的时候,调用和执行的是 ...
- Java_解惑
书名 ================================================================================================= ...
- SQL Server2008从入门到精通pdf
下载地址:网盘下载 内容介绍 编辑 <SQL Server 从入门到精通>从初学者的角度出发,通过通俗易懂的语言.丰富多彩的实例,详细地介绍了SQLServer2008开发应该掌握的各方面 ...