洗澡

/*
这个题不能单纯判断左括号和右括号的多少,而应该从左到右扫一遍,看应该如何配对
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s[];
int cnt,ans;
int main(){
freopen("bracket.in","r",stdin);freopen("bracket.out","w",stdout);
//freopen("Cola.txt","r",stdin);
scanf("%s",s+);
int len=strlen(s+);
for(int i=;i<=len;i++){
if(s[i]==')'){
if(cnt==)cnt++,ans++;
else cnt--;
}
else cnt++;
}
ans+=cnt/;
cout<<ans;
}

100分 模拟

日记

#include<iostream>
#include<cstdio>
#include<cstring>
#include<ctime>
#define maxn 2010
#ifdef WIN32
#define PLL "%I64d"
#else
#define PLL "%lld"
#endif
using namespace std;
int T;
struct node{
int n,k;
}a[maxn];
bool flag=,vis[];
int p[],cnt,mx;
long long sum[];
void prepare(){
for(int i=;i<=mx;i++){
if(!vis[i])vis[i]=,p[++cnt]=i;
for(int j=;j<=cnt&&i*p[j]<=mx;j++){
vis[i*p[j]]=;
if(i%p[j]==)break;
}
}
for(int i=;i<=cnt;i++)sum[i]=sum[i-]+p[i];
}
int find(int x){//寻找不超过x的最大的数的位置
int l=,r=cnt,res=-;
while(l<=r){
int mid=(l+r)>>;
if(p[mid]<=x)res=mid,l=mid+;
else r=mid-;
}
return res;
}
int find2(int l,int r,int x,int k){//寻找结尾为l~r的,区间长度为k的,不超过x的最大的数的结尾位置
int res=-;
while(l<=r){
int mid=(l+r)>>;
if(sum[mid]-sum[mid-k]<=(long long)x)res=mid,l=mid+;
else r=mid-;
}
return res;
}
int main(){
freopen("diary.in","r",stdin);freopen("diary.out","w",stdout);
// freopen("Cola.txt","r",stdin);
scanf("%d",&T);
for(int i=;i<=T;i++){
scanf("%d%d",&a[i].n,&a[i].k);
if(i!=&&a[i].n!=a[i-].n)flag=;
mx=max(mx,a[i].n);
}
prepare();
if(flag){
int pos=find(a[].n);//寻找小于等于n的最大的数
if(pos==-){
for(int i=;i<=T;i++)puts("-1");
return ;
}
for(int i=;i<=T;i++){
if(a[i].k>pos||sum[a[i].k]>a[i].n){puts("-1");continue;}
int posnow=find2(a[i].k,pos,a[i].n,a[i].k);
if(posnow==-){puts("-1");continue;}
long long now=sum[posnow]-sum[posnow-a[i].k];
printf(PLL"\n",now);
}
return ;
}
for(int i=;i<=T;i++){
int pos=find(a[i].n);
if(pos==-){puts("-1");continue;}
if(a[i].k>pos||sum[a[i].k]>a[i].n){puts("-1");continue;}
int posnow=find2(a[i].k,pos,a[i].n,a[i].k);
if(posnow==-){puts("-1");continue;}
long long now=sum[posnow]-sum[posnow-a[i].k];
printf(PLL"\n",now);
}
return ;
}

100分 二分查找

洗衣

/*
对每个树暴力建图,map[i][j][k]表示第i棵树的j与k之间的距离
对于每棵树,先暴力经行边权赋值(根据a树和b树以及l),再跑一遍floyed,最后统计答案即可
*/
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int map[][][];
int sz[];
int m,a,b,c,d,l;
void fl(int x){
for(int k=;k<sz[x];k++)
for(int i=;i<sz[x];i++)
for(int j=;j<sz[x];j++){
if(i==j||i==k||j==k)continue;
map[x][i][j]=min(map[x][i][j],map[x][i][k]+map[x][k][j]);
}
int ans=;
for(int i=;i<sz[x];i++)
for(int j=i+;j<sz[x];j++)
ans+=map[x][i][j];
printf("%d\n",ans);
}
int main(){
freopen("cloth.in","r",stdin);freopen("cloth.out","w",stdout);
// freopen("Cola.txt","r",stdin);
memset(map,0x3f,sizeof(map));
sz[]=;map[][][]=;
scanf("%d",&m);
for(int i=;i<=m;i++){
scanf("%d%d%d%d%d",&a,&b,&c,&d,&l);
sz[i]=sz[a]+sz[b];
for(int j=;j<sz[a];j++)
for(int k=j;k<sz[a];k++)
map[i][j][k]=map[i][k][j]=map[a][j][k];
for(int j=;j<sz[b];j++)
for(int k=j;k<sz[b];k++)
map[i][j+sz[a]][k+sz[a]]=map[i][k+sz[a]][j+sz[a]]=map[b][j][k];
map[i][c][d+sz[a]]=map[i][d+sz[a]][c]=l;
fl(i);
}
return ;
}

40分 暴力

预计得分100++
实际得分100++
T1是个比较简单的模拟,T2两次二分查找,前两道题都比较好想,代码已不太容易出错
T3完全没有思路,在想怎么存图,想到可以给数组增加一个维度,这样应该可以过前30%的数据,就这么做了
这次考试比上午简单一点,暴力分拿到了,也没有犯很低级的错误

小结

清北刷题冲刺 10-29 p.m的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  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. Java之泛型浅解

    我觉得学习一个东西,首先得从概念上明白它大概是什么? “泛型”就是“参数化类型”,也就是是把类型当成了一种参数.之前我们看到得函数方法比如: public long add(int num1,int ...

  2. python 链接MS SQL

    cnxn = pyodbc.connect(driver='{SQL Server}', host=server, database=db1, trusted_connection=tcon, use ...

  3. appium-DesiredCapability详解与实战

    DesiredCapability对启动app至关重要,是启动app前的准备工作.如果配置错误,app不会成功启动. DesiredCapability有appium公共健值对.Android专有和I ...

  4. kudu安装以及kudu的坑

    本文描述的是kudu在cloudera的安装. 首先cloudera 5.11.1版本尽管可以直接在add Services中看到kudu,但是其实并没有集成parcels,而且也不想kafka提示需 ...

  5. 洛谷【P1104】生日(选择排序版)

    题目传送门:https://www.luogu.org/problemnew/show/P1104 题目很简单,不过我是来讲选择排序的. 选择排序\((Selection sort)\)是一种简单直观 ...

  6. sysbench安装、使用

    二.编译安装 编译非常简单,可参考 README 文档,简单步骤如下:   cd/tmp/sysbench-0.4.12-1.1./autogen.sh./configure --with-mysql ...

  7. Python xlrd、xlwt、xlutils修改Excel文件-OK

    一.xlrd读取excel 这里介绍一个不错的包xlrs,可以工作在任何平台.这也就意味着你可以在Linux下读取Excel文件. 首先,打开workbook:    import xlrdwb = ...

  8. 1 slow requests are blocked > 32 sec解决方法

    [root@node1 ~]# ceph -s cluster: id: b8b4aa68-d825-43e9-a60a-781c92fec20e health: HEALTH_WARN Reduce ...

  9. play 学习 一 : 构建SBT的play项目

    因为帮一个朋友做一个简单的项目,档案管理.同时也为了自己能学习PLay框架,所以记录一下. 项目GitHub地址: https://github.com/liufeiSAP/ArchiveManage ...

  10. hibernate 数据关联一对一

    第一种一对一 person和card,card的id即作为主键,又作为外键  // 各村对方的一个对象 public class Person { private Integer id; privat ...