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集成的相关操作. ...
随机推荐
- keepalived 的某台vip连接不通【原创】
keepalived 的某台vip连接不通,vip可以漂移到这台服务器,但是ping vip不通,telnet vip 3306服务也不通,但是telnet 服务器真实物理IP 3306是通的. 切换 ...
- Keepalived详解(二):Keepalived安装与配置【转】
一.Keepalived安装与配置: 1.Keepalived的安装过程: Keepalived的安装非常简单,本实例以源码安装讲解: Keepalived的官方网址:http://www.keepa ...
- python打印朱莉娅集合
# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt # 複素数列の計算回数を出力する関数loopmax ...
- 待解决new int(i*j)
这里的确应该用new int [i*j] 来申请一片空间,但new int(i)的含义就像是给p指针指向的内容赋值了,相当于只申请了一个4个字节. 问题是,为什么后面b不能输出结果呢? #includ ...
- host, nslookup, dig、whois
一.host命令:DNS 查找使用程序 选项与参数: -a :代表列出该主机所有的相关信息,包括 IP.TTL 与除错讯息等等 -l :若后面接的那个 domain 设定允许 allow-transf ...
- 题解-bzoj4320 Homework
Problem bzoj4320 Solution 前置技能:分块+线段树+卡常+一点小小的数学知识 考试时A的 这种题无论怎么处理总有瓶颈,套路分块,设\(k\)以下的插入时直接暴力预处理,查询时直 ...
- 【原创】运维基础之Docker(5)docker部署airflow
部署方式:docker+airflow+mysql+LocalExecutor 使用airflow的docker镜像 https://hub.docker.com/r/puckel/docker-ai ...
- 【原创】大数据基础之Hive(5)性能调优Performance Tuning
1 compress & mr hive默认的execution engine是mr hive> set hive.execution.engine;hive.execution.eng ...
- JMS消息队列之ActiveMQ简单示例
废话不多说,在进入主题前先看一张图,对ActiveMQ有个大体的了解: 下面进入主题: 1.添加需要的maven依赖 <!-- active mq begin --> < ...
- echo和重定向
命令: echo 作用: echo有重复的意思,会在终端中显示参数指定的文字,通常会和重定向联合使用 使用: echo 文字内容 例子: 在终端中显示hello echo hello 命令: > ...