清北刷题冲刺 10-31 a.m
集合


#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int n,a[],cnt;
int main(){
freopen("multiset.in","r",stdin);freopen("multiset.out","w",stdout);
// freopen("Cola.txt","r",stdin);
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
if(n==&&a[]==){
puts("");
return ;
}
int ans=;
sort(a+,a+n+);
int q=;
for(int i=;i<=n;i++){
if(a[i]!=){q=i;break;}
cnt++;
}
while(){
if(q>n)break;
ans++;cnt=cnt/+cnt%;
for(int i=q;i<=n;i++)a[i]-=;
// for(int i=1;i<=n;i++)cout<<a[i]<<' ';
while(a[q]==&&q<=n)cnt++,q++;
}
while(cnt>){
ans++;
cnt=cnt/+cnt%;
}
printf("%d",ans);
}
50分
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1000010
using namespace std;
int n,a[maxn],cnt[maxn],res,lim;
int main(){
freopen("multiset.in","r",stdin);
freopen("multiset.out","w",stdout);
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
lim=max(lim,a[i]);
cnt[a[i]]++;
}
int l=,z=cnt[];
for(int i=;i<=lim;i++){
res++;
z=(z+)/;
z+=cnt[i];
}
for(;z>;z=(z+)/)res++;
printf("%d",res);
return ;
}
100分
道路分组


#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
#include<algorithm>
#define maxn 100010
#define maxm 500010
using namespace std;
int n,m,num,head[maxn],mid;
int q[maxm],q1[maxm],cnt;
vector<int>road[];
struct node{
int to,pre,id;
}e[maxm];
struct Node{
int l,r;
}jian[maxm];
void Insert(int from,int to){
e[++num].to=to;
e[num].id=num;
e[num].pre=head[from];
head[from]=num;
}
bool vis[maxm];
void dfs(int pos,int c){
if(pos==n){
cnt++;
jian[cnt].l=0x7fffffff;
for(int i=;i<c;i++){
road[cnt].push_back(q[i]);
jian[cnt].l=min(jian[cnt].l,q[i]);
jian[cnt].r=max(jian[cnt].r,q[i]);
}
return;
}
for(int i=head[pos];i;i=e[i].pre){
int to=e[i].to;
if(!vis[to]){
q[c]=i;
vis[to]=;
dfs(to,c+);
vis[to]=;
}
}
}
bool cmp(Node x,Node y){return x.l<y.l;}
int main(){
freopen("road.in","r",stdin);freopen("road.out","w",stdout);
// freopen("Cola.txt","r",stdin);
scanf("%d%d",&n,&m);
int x,y;
for(int i=;i<=m;i++){
scanf("%d%d",&x,&y);
Insert(x,y);
}
vis[]=;
dfs(,);
memset(vis,,sizeof(vis));
sort(jian+,jian+cnt+,cmp);
int ans=;
int L=,R=0x7fffffff;
int last=;
for(int i=;i<=cnt;i++){
L=max(L,jian[i].l);
R=min(R,jian[i].r);
if(L>=R){
// if(!flag)flag=1,ans+=2;
// else ans+=1;
ans+=;
L=;R=0x7fffffff;
last=i;
}
}
if(last!=cnt)ans++;
printf("%d",ans);
return ;
}
20分 暴力
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<vector>
#define maxn 500010
using namespace std;
int n,m,vis[maxn],x[maxn],y[maxn];
vector<int>vec[maxn];
bool dfs(int u){
if(vis[u])return false;
if(u==n)return true;
vis[u]=;
bool ret=false;
for(int i=;i<vec[u].size();i++){
ret=dfs(vec[u][i]);
if(ret)return true;
}
return false;
}
bool check(int sta,int las){//检验sta~las的边能(0)否(1)在同一组内
for(int i=sta;i<=las;i++)
vec[x[i]].push_back(y[i]);
bool ret=dfs();
for(int i=sta;i<=las;i++){
vis[x[i]]=vis[y[i]]=;
vec[x[i]].clear();
}
vis[]=;
return ret;
}
int main(){
freopen("road.in","r",stdin);freopen("road.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=;i<m;i++)scanf("%d%d",&x[i],&y[i]);
int now=,ans=;
while(now<m){
int i;
for(i=;i+now<=m;i<<=)
if(check(now,now+i-))break;
i>>=;
int nowtmp=now+i;
for(;i>;i>>=)
if(nowtmp+i<=m&&!check(now,nowtmp+i-))
nowtmp+=i;
ans++;now=nowtmp;
}
cout<<ans;
}
100分 二分
补兵


#include<iostream>
#include<cstdio>
#include<algorithm>
#define maxn 1010
using namespace std;
int T,n,a[maxn];
int main(){
freopen("cs.in","r",stdin);freopen("cs.out","w",stdout);
// freopen("Cola.txt","r",stdin);
scanf("%d",&T);
while(T--){
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&a[i]);
sort(a+,a+n+);
int p=,ans=;
while(){
if(a[p]==&&p!=n){
a[p+]-=;
a[p]-=;
for(int i=p+;i<=n;i++)a[i]-=;
sort(a+,a+n+);
}
else{
a[p]-=;
if(a[p]==-)ans++;
for(int i=p+;i<=n;i++)a[i]-=;
}
while(a[p]<=)p+=;
if(p>n)break;
}
printf("%d\n",ans);
}
}
0分 贪心
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 1010
using namespace std;
int a[maxn],cnt[maxn],sta[maxn],c[maxn],f[maxn][maxn];
int main(){
freopen("cs.in","r",stdin);freopen("cs.out","w",stdout);
int T;
scanf("%d",&T);
while(T--){
int n,mxn=;
scanf("%d",&n);
memset(cnt,,sizeof(cnt));
memset(c,,sizeof(c));
memset(f,,sizeof(f));
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
++cnt[a[i]];
mxn=max(mxn,a[i]);
}
int top=;
for(int i=;i<=mxn;i++)
if(cnt[i]==)sta[++top]=i;
else{
while(cnt[i]>&&top>){
c[sta[top--]]=i;
--cnt[i];
}
c[i]=i;
}
int ans=;
for(int i=;i<=mxn;i++){
for(int j=;j<=i;j++){
if(j>)f[i][j]=f[i-][j-];
if(c[i]!=&&j+c[i]-i<i)
f[i][j]=max(f[i][j],f[i-][j+c[i]-i]+);
ans=max(ans,f[i][j]);
}
}
printf("%d\n",ans);
}
return ;
}
100分 dp
预计得分0++玄学
实际得分50++
今天上午的题风格很奇怪,感觉暴力很难打,T1一开始没有思路,后来瞎几把乱打得了50。T2写了非常裸的暴力,T3没有思路,就贪心写了写。
这套题比较锻炼暴力能力,对思维的挑战也比较大,但是T2暴力得的分有点少,改题的时候要看看暴力怎么优化
小结
清北刷题冲刺 10-31 a.m的更多相关文章
- 2017-10-2 清北刷题冲刺班p.m
最大值 (max) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一本书,上面有很多有趣的OI问题.今天LYK看到了这么一道题目: 这里有一个长度为n ...
- 清北刷题冲刺 10-30 a.m
星空 #include<iostream> #include<cstdio> using namespace std; int n,m; int main(){ freopen ...
- 清北刷题冲刺 10-28 p.m
水题(贪心) (water) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK出了道水题. 这个水题是这样的:有两副牌,每副牌都有n张. 对于第一副牌的每 ...
- 2017-10-4 清北刷题冲刺班p.m
P102zhx a [问题描述]你是能看到第一题的 friends 呢.——hja两种操作:1.加入一个数.2.询问有多少个数是?的倍数.[输入格式]第一行一个整数?,代表操作数量.接下来?行,每行两 ...
- 2017-10-4 清北刷题冲刺班a.m
P101zhx a [问题描述]你是能看到第一题的 friends 呢.——hjaHja 拥有一套时光穿梭技术,能把字符串以超越光速的速度传播,但是唯一的问题是可能会 GG.在传输的过程中,可能有四种 ...
- 2017-10-3 清北刷题冲刺班p.m
a [问题描述]你是能看到第一题的 friends 呢.——hja给你一个只有小括号和中括号和大括号的括号序列,问该序列是否合法.[输入格式]一行一个括号序列.[输出格式]如果合法,输出 OK,否则输 ...
- 2017-10-3 清北刷题冲刺班a.m
P99zhx a [问题描述]你是能看到第一题的 friends 呢.——hja怎么快速记单词呢?也许把单词分类再记单词是个不错的选择.何大爷给出了一种分单词的方法,何大爷认为两个单词是同一类的当这两 ...
- 2017-10-2 清北刷题冲刺班a.m
一道图论神题 (god) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只 ...
- 2017-10-1 清北刷题冲刺班p.m
一道图论好题 (graph) Time Limit:1000ms Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图 ...
- 清北刷题冲刺 11-03 a.m
纸牌 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...
随机推荐
- 一個在WCF學習中的小教訓(本人非科班菜鳥,此經驗無參考價值,衹是自己的經驗記錄)
1.关于“ServiceHost 仅支持类服务类型”的解决: Service属性必须执行,不是接口. 改为下图所示: 解决! (注:按朱哥的方法WCF已经可以通信---截至今天的11:11(例子在 ...
- 关于MFC预处理命令
MFC程序生成EXE文件的过程是:预处理-编译-链接-打包生成exe文件.(预编译是编译过程,即将一些常用的不经常改变的文件先进行编译处理生成中间文件,以节省时间,它不属于预处理,在VS项目属性的C/ ...
- mysql 常用的存储引擎MyISAM/InnoDB比较
- ffmpeg 纯静态编译,以及添加自定义库流程摘要
需求: 1. 纯静态编译ffmpeg ,即ldd ./ffmpeg 的结果是:not a dynamic executable 2. 修改ffmpeg 项目,添加自定义功能库 3. ...
- ACM学习历程—HDU4417 Super Mario(树状数组 && 离线)
Problem Description Mario is world-famous plumber. His “burly” figure and amazing jumping ability re ...
- bzoj 3653: 谈笑风生 可持久化线段树
题目大意 在一棵单位边权的有根树上支持询问: 给定a,k求满足下列条件的有序三元对的个数. a,b,c互不相同 a,b均为c的祖先 a,b树上距离<=k 题解 solution 1 首先我们知道 ...
- w3c上的SQL 教程---基本语法 语句学习
SQL 教程路径:http://www.w3school.com.cn/sql/index.asp
- javascript:delete 删除对象的属性
delete 运算符删除对以前定义的对象属性或方法的引用. 不可以删除的如下: 1通过var定义的变量 var a=1;delete a//false 2 声明后的函数 function a(){}; ...
- asp.net C#操作存储过程读取存储过程输出参数值
这段时间在做一个价格平台的项目时候,同事让我写一个存储过程.该存储过程是根据查询条件得出一组新数据,并且返回该组数据的总条数,此处的存储过程我用到了分页,其中主要知识点和难点是之前做项目的时候没有用到 ...
- HDU1114(完全背包装满问题)
Piggy-Bank Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total ...