洗澡

/*
这个题不能单纯判断左括号和右括号的多少,而应该从左到右扫一遍,看应该如何配对
*/
#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. 分享知识-快乐自己:zookeeper 伪集群搭建

    1):单一 zookeeper  搭建步骤 2):zookeeper 伪集群搭建 1):新建一个集群目录 [root@zoodubbo opt]# mkdir zookeeper_cluster 2) ...

  2. 七 Django框架,models.py模块,数据库操作——F和Q()运算符:|或者、&并且——queryset对象序列化

    F()可以将数据库里的数字类型的数据,转换为可以数字类型 首先要导入 from django.db.models import F from django.shortcuts import rende ...

  3. Bootstrap-other内置组件

    1.缩略图 缩略图在网站中最常用的地方就是产品列表页面,一行显示几张图片,有的在图片底下(左侧或右侧)带有标题.描述等信息.Bootstrap框架将这一部独立成一个模块组件.并通过“thumbnail ...

  4. C - Alyona and SpreadsheetDP

    题目链接 题意在一个矩阵中,询问l~r行是否有一列满足mp[i][j]>=mp[i-1][j](i属于l~r)即非递减序列,是输出Yes,否输出No 用vector<vector<i ...

  5. 洛谷【P1619】 解一元二次方程的烦恼

    我对模拟的理解:https://www.cnblogs.com/AKMer/p/9064018.html 题目传送门:https://www.luogu.org/problemnew/show/P16 ...

  6. asp.net定时任务

    我们这边使用的定时任务框架是Quartz.Net,可以实现异常灵活的定时任务,开发人员只要编写少量的代码就可以实现“每隔一小时执行”.每天22点执行,每月18日下午执行等等各种定时任务. Quartz ...

  7. Python selenium 三种等待方法

    1. 强制等待 sleep(xx) 是最简单粗暴的一种办法,不管你浏览器是否加载完了,程序都得等待3秒,3秒一到,继续执行下面的代码,作为调试很有用,不建议总用这种等待方式,严重影响程序执行速度. 代 ...

  8. 【转载】ruby 中数组函数示例(1)(转)

    函数名称 说明 示例 &      数组与,返回两数组的交集 [1,2] & [2,3] =>[2]   * 复制数组n次 [1,2]*2       => [1,2,1, ...

  9. C++经典题目:约瑟夫环问题

    问题描述: 有n个人围成一圈,顺序排号.从第一个人开始报数(1~3报数),凡报到3的人退出圈子,问最后留下的人原来排在第几号. 分析: 首先由用户输入人数n,然后对这n个人进行编号[因为如果不编号的话 ...

  10. C++类中的常数据成员和静态数据成员的区别

    刚开始学习C++的类和对象的部分,对类中的常数据成员和静态数据成员的概念和用法经常混淆,所以今天整理一下,顺便说一下,今天是我的生日,祝我生日快乐,呵呵. 常数据成员 常数据成员是指在类中定义的不能修 ...