集合

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

  1. 2017-10-2 清北刷题冲刺班p.m

    最大值 (max) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一本书,上面有很多有趣的OI问题.今天LYK看到了这么一道题目: 这里有一个长度为n ...

  2. 清北刷题冲刺 10-30 a.m

    星空 #include<iostream> #include<cstdio> using namespace std; int n,m; int main(){ freopen ...

  3. 清北刷题冲刺 10-28 p.m

    水题(贪心) (water) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK出了道水题. 这个水题是这样的:有两副牌,每副牌都有n张. 对于第一副牌的每 ...

  4. 2017-10-4 清北刷题冲刺班p.m

    P102zhx a [问题描述]你是能看到第一题的 friends 呢.——hja两种操作:1.加入一个数.2.询问有多少个数是?的倍数.[输入格式]第一行一个整数?,代表操作数量.接下来?行,每行两 ...

  5. 2017-10-4 清北刷题冲刺班a.m

    P101zhx a [问题描述]你是能看到第一题的 friends 呢.——hjaHja 拥有一套时光穿梭技术,能把字符串以超越光速的速度传播,但是唯一的问题是可能会 GG.在传输的过程中,可能有四种 ...

  6. 2017-10-3 清北刷题冲刺班p.m

    a [问题描述]你是能看到第一题的 friends 呢.——hja给你一个只有小括号和中括号和大括号的括号序列,问该序列是否合法.[输入格式]一行一个括号序列.[输出格式]如果合法,输出 OK,否则输 ...

  7. 2017-10-3 清北刷题冲刺班a.m

    P99zhx a [问题描述]你是能看到第一题的 friends 呢.——hja怎么快速记单词呢?也许把单词分类再记单词是个不错的选择.何大爷给出了一种分单词的方法,何大爷认为两个单词是同一类的当这两 ...

  8. 2017-10-2 清北刷题冲刺班a.m

    一道图论神题 (god) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只 ...

  9. 2017-10-1 清北刷题冲刺班p.m

    一道图论好题 (graph) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图 ...

  10. 清北刷题冲刺 11-03 a.m

    纸牌 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> ...

随机推荐

  1. LXC linux容器简介——在操作系统层次上为进程提供的虚拟的执行环境,限制其使用的CPU和mem等资源,底层是linux内核资源管理的cgroups子系统

    1.LXC是什么? LXC是Linux containers的简称,是一种基于容器的操作系统层级的虚拟化技术. 2.LXC可以做什么? LXC可以在操作系统层次上为进程提供的虚拟的执行环境,一个虚拟的 ...

  2. ajax(异步页面动态刷新)

    AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 JavaScript和 ...

  3. hihocoder-1274 自行车架(高维dp)

    时间限制:5000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi的宿舍楼下有一块用于停自行车的区域.平时自行车都停得非常杂乱,于是楼长打算去买一排自行车架用来停车.自行车架一般有P个 ...

  4. [原]NYOJ-房间安排168

    大学生程序代写 /*房间安排 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 2010年上海世界博览会(Expo2010),是第41届世界博览会.于2010年5月1日至1 ...

  5. FFMPEG 最简滤镜filter使用实例(实现视频缩放,裁剪,水印等)

    FFMPEG官网给出了FFMPEG 滤镜使用的实例,它是将视频中的像素点替换成字符,然后从终端输出.我在该实例的基础上稍微的做了修改,使它能够保存滤镜处理过后的文件.在上代码之前先明白几个概念: Fi ...

  6. Gym 101142G : Gangsters in Central City(DFS序+LCA+set)

    题意:现在有一棵树,1号节点是水源,叶子节点是村庄,现在有些怪兽会占领一些村庄(即只占领叶子节点),现在要割去一些边,使得怪兽到不了水源.给出怪兽占领和离开的情况,现在要割每次回答最小的割,使得怪兽不 ...

  7. MySQL的分页技术总结

    利用子查询示例: SELECT * FROM your_table WHERE id <= (SELECT id FROM your_table ORDER BY id desc LIMIT ( ...

  8. HDOJ1677(铺砖问题)

    Nested Dolls Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Tota ...

  9. windows服务和进程的区别和联系

    Windows Service 是主要用于服务器环境而长期运行的应用程序, 这类程序不需要有用户界面或者任何模拟输出. 任何的用户消息通常都是记录在Windows 事件日志里.Windows Serv ...

  10. QTP使用outlook发送邮件

    '发邮件 Dim objOutlook  Dim objOutlookMsg Dim olMailItem  ' Create the Outlook object and the new mail ...