清北刷题冲刺 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> ...
随机推荐
- 使用CSS3制作酷炫防苹果复选框 自行测试!
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 【二叉树的递归】01二叉树的最小深度【Minimum Depth of Binary Tree】
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 给定一个二叉树,找出他的最小的深度 ...
- 1147. Heaps (30)
In computer science, a heap is a specialized tree-based data structure that satisfies the heap prope ...
- poj 1845 Sumdiv(约数和,乘法逆元)
题目: 求AB的正约数之和. 输入: A,B(0<=A,B<=5*107) 输出: 一个整数,AB的正约数之和 mod 9901. 思路: 根据正整数唯一分解定理,若一个正整数表示为:A= ...
- iOS+PHP图片上传
这篇博客用于实现iOS客户端通过POST请求,将图片上传到服务器上.服务器端语言采用PHP,服务器环境使用MAMP搭建.先使用浏览器测试图片是否可以上传,浏览器测试成功之后再测试iOS客户端是否可以成 ...
- 使用IronPython集成Python和.NET
本文由 伯乐在线 - 艾凌风 翻译,Daetalus 校稿.未经许可,禁止转载!英文出处:www.informit.com.欢迎加入翻译组. 从两个优秀的世界各取所需,更高效的复用代码.想想就醉了,. ...
- 在Global Azure上用Azure CLI创建ARM的VM和面向公网的负载均衡
在Global的Azure上,新的Portal和ARM已经正式发布.将来传统的portal和ASM将逐渐淡出. China Azure将在今年下半年推出新的Portal管理界面和ARM功能(即IaaS ...
- fiddler 的AutoRespoder的使用(手动添加测试桩)
---恢复内容开始--- 1.首先我们抓取一个百度的请求,由于百度请求是https协议,需要手动添加证书(这个不写了,大佬们自己手动找下资料) 2.fiddler抓取的百度请求,其他的无关信息删除,便 ...
- Canal入门
配置mysql 1.mysql开启binlog mysql默认没有开启binlog,修改mysql的my.cnf文件,添加如下配置,注意binlog-format必须为row,因为binlog如果为S ...
- Python知识点: __import__
用法:libvirt = __import__('libvirt') help(__import__) __import__(...) __import__(name, globals={}, ...