清北刷题冲刺 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> ...
随机推荐
- 分享知识-快乐自己:Liunx-大数据(Hadoop)初始化环境搭建
大数据初始化环境搭建: 一):大数据(hadoop)初始化环境搭建 二):大数据(hadoop)环境搭建 三):运行wordcount案例 四):揭秘HDFS 五):揭秘MapReduce 六):揭秘 ...
- freeMarker(八)——程序开发指南之配置(Configuration)
学习笔记,选自freeMarker中文文档,译自 Email: ddekany at users.sourceforge.net 1.基本内容 配置(configuration)就是 freemark ...
- loj515贪心只能过样例
bitset练习题... 位运算真的是玄学... 一开始真的“只能过样例” 后来发现把左移写成了小于号 鬼知道我在想什么/手动微笑 loj第一题 #include<iostream> #i ...
- myod中遇到的问题
一.准备工作 首先在编程之前遇到的第一个问题就是要了解需要编出一个怎样的代码,了解od -tx -tc的具体意思,并观察其输出结果. -tc代表着输出ASCII字符,而-tx则是代表着输出ASCII字 ...
- NOIP 2011 DAY 2
第一题:计算系数 题目 给定一个多项式 (ax+by)k,请求出多项式展开后xnym 项的系数. 输入 共一行,包含 5 个整数,分别为 a,b,k,n,m,每两个整数之间用一个空格隔开 ...
- 背包搜索--LH
题解:搜索 meet in the middle 先搜一半,假设某个状态的体积是p,那么就要从另一半里找到体积小于 等于v-p 价值最大的状态.二分+前缀和. 代码:不会前缀和,暴力瞎写的.没有评测的 ...
- 【LeetCode】033. Search in Rotated Sorted Array
题目: Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. ( ...
- javascript自我测试题
javascript自我测试题--14道题而已! 地址:http://perfectionkills.com/javascript-quiz/ 司徒正美的答案解析:http://www.cnblogs ...
- 类方法,实例方法,静态方法,@property的应用
class test(object): h = 'hello' w = 'world' def demo(self): print("demo") def test_class(s ...
- 4.JasperReports学习笔记4-查询数据库生成动态的报表(WEB)
转自:http://www.blogjava.net/vjame/archive/2013/10/12/404908.html 第一种方式: sql语句中定义查询条件,报表中定义接收参数 第二种方式: ...