集合

#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. node.js+express+jade系列四:jade嵌套的使用

    jade是express自带的模板引擎 jade文件可以嵌套使用,include引用外部jade文件,extends引用jade模板 例如 有一个主jade文件layout.jade,引用top.ja ...

  2. linux命令学习笔记(1):ls命令

    ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单 如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查 看li ...

  3. javascript获取窗口位置、绝对位置、事件位置等

    有段时间没更新博客了,工作实在太忙了,加班加班再加班就是我们这个行业的常态吧...还好最近把工作进度完成了,终于有些空余时间了.关于<Javascript高级程序设计>系列,我并没有弃坑, ...

  4. C#实现根据传入时间段,找出时间段内日期,并生成相对应文件路径

    [1]获取固定日期范围内的所有日期,以数组形式返回 /// <summary>        /// 获取固定日期范围内的所有日期,以数组形式返回        /// </summ ...

  5. ACM学习历程—CodeForces 601A The Two Routes(最短路)

    题目链接:http://codeforces.com/problemset/problem/601/A 题目大意是有铁路和陆路两种路,而且两种方式走的交通工具不能在中途相遇. 此外,有铁路的地方肯定没 ...

  6. 训练集、测试集loss容易出现的问题总结

    train loss 不断下降,test loss不断下降:说明网络仍在学习; train loss 不断下降,test loss趋于不变:说明网络过拟合; train loss 趋于不变,test ...

  7. Access中一句查询代码实现Excel数据导入导出

    摘 要:用一句查询代码,写到vba中实现Excel数据导入导出,也可把引号中的SQL语句直接放到查询分析器中执行正 文: 导入数据(导入数据时第一行必须是字段名): DoCmd.RunSQL &quo ...

  8. bzoj 3157 & bzoj 3516 国王奇遇记 —— 推式子

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3157 https://www.lydsy.com/JudgeOnline/problem.p ...

  9. 测试你的浏览器是否支持WebGL(Does My Browser Support WebGL)

    测试你的浏览器是否支持WebGL(Does My Browser Support WebGL) 关于WebGL:WebGL是一种3D绘图标准,这种绘图技术标准允许把JavaScript和OpenGL ...

  10. JAVA 1.7并发之Fork/Join框架

    在之前的博文里有说过executor框架,其实Fork/Join就是继承executor的升级版啦 executor用于创建一个线程池,但是需要手动的添加任务,如果需要将大型任务分治,显然比较麻烦 而 ...