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的更多相关文章

  1. PXE+Kickstart+DHCP+TFTP实现无人值守安装操作系统

    PXE+Kickstart+DHCP+TFTP实现无人值守安装操作系统 PXE + Kickstart PXE的工作流程及配置文件 Kickstart的配置文件 Linux安装大致可以分为2个阶段 第 ...

  2. KickStart 无人值守安装系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  3. CentOS6.6 kickstart文件

    # Kickstart file automatically generated by anaconda. #version=DEVELinstall#cdromurl --url http://19 ...

  4. kickstart+ftp+tftp+dhcp+PXE

    ##########yum less install.log #看安装log yum install system-config-kickstart* -y yum install tftp* -y ...

  5. linux系统PXE+Kickstart自动安装系统

    一.PXEPXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服 ...

  6. Kickstart/Anaconda实现自动化安装原理探究

    原网页地址:http://molinux.blog.51cto.com/2536040/548247#55918... 内容概要:  1.  系统安装基本流程图示2.  Anaconda简介3.  K ...

  7. [转]CentOS 6.4下PXE+Kickstart无人值守安装操作系统

    一.简介 1.1 什么是PXE PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持 ...

  8. 烂泥:KVM、kickstart与nginx集成

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前几篇文章介绍了FTP.NFS与KVM.kickstart集成的案例,从这篇文章开始,我们来介绍HTTP方式与KVM.kickstart集成. HTTP ...

  9. kickstart note

    KickStart是一种无人职守安装方式 PXE + kickstart + DHCP + TFTP 1.挂载光盘 mount /dev/sr0 /mnt/iso cp -rf /mnt/iso/*  ...

  10. 烂泥:KVM、kickstart与FTP集成

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 在上一篇文章中,我们介绍了有关KVM.kickstart与NFS集成的相关内容.在这节我们将继续介绍FTP与KVM.kickstart集成的相关操作. ...

随机推荐

  1. 拿什么守护你的Node.JS进程: Node出错崩溃了怎么办?

    被吐嘈的NodeJS的异常处理 许多人都有这样一种映像,NodeJS比较快: 但是因为其是单线程,所以它不稳定,有点不安全,不适合处理复杂业务: 它比较适合对并发要求比较高,而且简单的业务场景. 在E ...

  2. select2使用方法总结

    官网:http://select2.github.io/ 调用 <link href="~/Content/select2.min.css" rel="styles ...

  3. Nginx负载均衡实例

    upstream MyServers{ server 192.168.63.137; server 192.168.63.138; server 192.168.63.140; } server{ l ...

  4. html5 - drag 拖拽

    参考资料: 张鑫旭             : http://www.zhangxinxu.com/wordpress/2011/02/html5-drag-drop-%E6%8B%96%E6%8B% ...

  5. delhpi:http超时设置(转载)

    原文地址:http://www.delphitop.com/html/kongjian/544.html var FHTTPClient:TIdHTTP; begin FHTTPClient := T ...

  6. 部署apache-tomcat环境

    软件体系: C/S:客户端/服务器,例如qq等app都属于C/S体系,除了编写服务端代码还需要编写客户端 优点:展现比较好,客户端会承受一点运算压力,安全性比较好 缺点:更新服务端的同时还需要更新客户 ...

  7. 原来商家登录系统的commonjs

    /* *适配 */ //orientationchange方向改变事件 (function (doc,win) { var docEl = doc.documentElement,//根元素html ...

  8. js——作用域和闭包

    1. js是编译语言,但是它不是提前编译,编译结果不能在分布式系统中移植.大部分情况下,js的编译发生在代码执行前的几微秒(甚至更短) 2. 一般的编译步骤   分词/词法分析:把字符串分解成词法单元 ...

  9. swift 学习- 26 -- 泛型

    // 泛型 代码能够让你根据自定义的需求,编写出适用于任意类型, 灵活可重用的函数以及类型, 它能让你避免代码的重复, 用一种清晰和抽象的方式来表达代码的意图 // 泛型是 Swift 最强大的特性之 ...

  10. Confluence 6 配置验证码(Captcha)来防止垃圾

    如果你的 Confluence 站点是对公众开放的(允许匿名用户使用,添加评论,创建页面等),你可能会发现你的站点会被自动创建很多垃圾页面,评论或者其他垃圾内容. 你可以配置让 Confluence ...