CF 15/09/23
CF580A
给出一个数列,求最长不下降子序列(连续)
直接DP,O(n)
CF580B
主人公有n个朋友,每一个朋友有2个属性:m,sat
现在他想邀请部分朋友,邀请的人满足MAX_M-MIN_M<d的条件下,使得sat之和最大
排序,前缀和,枚举左端点,二分右端点
O(NlogN)
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<iostream>
- #define ll long long
- using namespace std;
- const int maxn=1e5+;
- ll sum[maxn];
- struct A
- {
- ll m,s;
- };
- A a[maxn];
- bool cmp(A x,A y)
- {
- return x.m<y.m;
- }
- void solve(int ,ll );
- int main()
- {
- int n;
- ll d;
- scanf("%d %I64d",&n,&d);
- for(int i=;i<=n;i++){
- scanf("%I64d %I64d",&a[i].m,&a[i].s);
- }
- solve(n,d);
- return ;
- }
- int bs(int i,int n,ll d)
- {
- int l=i;
- int r=n;
- while(l+<r){
- int mm=(l+r)>>;
- if(a[mm].m>=a[i].m+d)
- r=mm;
- else
- l=mm;
- }
- if(a[r].m<a[i].m+d)
- return r;
- else
- return l;
- }
- void solve(int n,ll d)
- {
- sort(a+,a+n+,cmp);
- sum[]=;
- for(int i=;i<=n;i++)
- sum[i]=sum[i-]+a[i].s;
- ll ret=;
- for(int i=;i<=n;i++){
- int r=bs(i,n,d);
- ret=max(ret,sum[r]-sum[i-]);
- }
- cout<<ret<<endl;
- return ;
- }
CF580C
水题,直接dfs
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #define ll long long
- using namespace std;
- const int maxn=1e5+;
- const int inf=0x3f3f3f3f;
- struct Edge
- {
- int to,next;
- };
- Edge edge[maxn<<];
- int head[maxn];
- int tot;
- int e[maxn][];
- int out[maxn];
- int val[maxn];
- int dep[maxn];
- void solve(int ,int );
- void pre_init()
- {
- memset(head,-,sizeof head);
- tot=;
- }
- void addedge(int u,int v)
- {
- edge[tot].to=v;
- edge[tot].next=head[u];
- head[u]=tot++;
- }
- int main()
- {
- pre_init();
- int n,m;
- scanf("%d %d",&n,&m);
- for(int i =;i<=n;i++)
- scanf("%d",&val[i]);
- for(int i=;i<n;i++){
- scanf("%d %d",&e[i][],&e[i][]);
- addedge(e[i][],e[i][]);
- addedge(e[i][],e[i][]);
- }
- solve(n,m);
- return ;
- }
- void dfs(int u,int pre)
- {
- for(int i=head[u];~i;i=edge[i].next){
- int v=edge[i].to;
- if(v==pre)
- continue;
- dep[v]=dep[u]+;
- if(val[v])
- val[v]+=val[u];
- dfs(v,u);
- }
- }
- void dfs1(int u,int pre)
- {
- for(int i=head[u];~i;i=edge[i].next){
- int v=edge[i].to;
- if(v==pre)
- continue;
- val[v]=max(val[v],val[u]);
- dfs1(v,u);
- }
- }
- void solve(int n,int m)
- {
- memset(dep,,sizeof dep);
- dfs(,-);
- dfs1(,-);
- memset(out,,sizeof out);
- for(int i=;i<n;i++){
- if(dep[e[i][]]<dep[e[i][]])
- out[e[i][]]++;
- else
- out[e[i][]]++;
- }
- int ret=;
- for(int i=;i<=n;i++){
- if(!out[i] && val[i]<=m)
- ret++;
- }
- printf("%d\n",ret);
- return ;
- }
CF577A
一个n*n的矩阵,maze[i][j]=i*j现在给出x,问x在矩阵中出现的次数
水题
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<iostream>
- #include<cmath>
- #define ll long long
- #define ld long double
- using namespace std;
- int main()
- {
- ld n,x;
- cin>>n>>x;
- if(n*n<x){
- cout<<<<endl;
- return ;
- }
- int m=sqrt(x);
- ll ans=;
- bool flag=false;
- if((ld)m*m==x){
- ans++;
- m--;
- flag=true;
- }
- for(int i=;i<=m;i++){
- if(i>n || i>x)
- break;
- if((ll)x%i== && ((ll)x/i)<=n){
- ans++;
- }
- }
- ans*=;
- if(flag)
- ans--;
- cout<<ans<<endl;
- return ;
- }
CF579A
水题,答案为输入的数的二进制中,1的个数
CF579B
水题,一个排序就好了
CF 15/09/23的更多相关文章
- 总结 Date 2017.09.23
总结 Date 2017.09.23 <1>统计数字 某次科研调查时得到了n个自然数,每个数均不超过1500000000(1.5*10^9).已知不相同的数不超过10000个,现在需要统计 ...
- Java初步学习——2021.09.23每日报告,第三周周四
(1)今天做了什么: (2)明天准备做什么? (3)遇到的问题,如何解决? 学习数组,编写了一个随机选牌的代码.自己最开始一直想只设置一个字符串数组,利用随机数来输出,但那样对字符串赋值会比较麻烦.可 ...
- C语言中返回字符串函数的四种实现方法 2015-05-17 15:00 23人阅读 评论(0) 收藏
C语言中返回字符串函数的四种实现方法 分类: UNIX/LINUX C/C++ 2010-12-29 02:54 11954人阅读 评论(1) 收藏 举报 语言func存储 有四种方式: 1.使用堆空 ...
- CF Educational Round 23 F.MEX Queries
写了3小时 = =.这两天堕落了,昨天也刷了一晚上hihocoder比赛,还爆了零.之后得节制点了,好好准备考研.. 首先很容易想到 压缩数据 + 线段树 然后对于Pushdown真很难写..需要牵涉 ...
- MySQL Crash Course #15# Chapter 23. Working with Stored Procedures
以前写过类似的东西,用来自动生成数据. 你可以将 Stored Procedure 理解为可以重复使用的批处理文件. Stored Procedure 非常有用,我们应该尽可能地去使用它. 那么,应用 ...
- 2018.09.23 codeforces 1053B. Vasya and Good Sequences(前缀和)
传送门 考试的时候卡了一会儿. 显然这个答案只跟二进制位为1的数量有关. 还有一个显然的结论. 对于一个区间[l,r][l,r][l,r],如果其中单个数二进制位为1的数量最大值不到区间所有数二进制位 ...
- 2018.09.23 codeforces 1053A. In Search of an Easy Problem(gcd)
传送门 今天的签到题. 有一个很显然的结论,gcd(n∗m,k)≤2gcd(n*m,k)\le 2gcd(n∗m,k)≤2. 本蒟蒻是用的行列式求三角形面积证明的. 如果满足这个条件,就可以直接构造出 ...
- 2018.09.23 atcoder Boxes and Candies(贪心)
传送门 一道挺有意思的贪心. 从1到n依次满足条件. 注意要特判第一个数已经大于x的情况. 但是如何贪心吃呢? 如果靠左的数没有越界,我们吃靠右的数. 原因是下一次靠右的数就会成为靠左的数,相当于多贡 ...
- 2018.09.23 bzoj1076: [SCOI2008]奖励关(期望+状压dp)
传送门 一道神奇的期望状压dp. 用f[i][j]f[i][j]f[i][j]表示目前在第i轮已选取物品状态为j,从现在到第k轮能得到的最大贡献. 如果我们从前向后推有可能会遇到不合法的情况. 所以我 ...
随机推荐
- List of devices attached ???????????? no permissions
如果显示如下:List of devices attached???????????? no permissions就要设置usb $ lsusbBus 005 Device 001: ID 1d6b ...
- [BZOJ 3622]已经没有什么好害怕的了
世萌萌王都拿到了,已经没有什么好害怕的了—— (作死) 笑看哪里都有学姐,真是不知说什么好喵~ 话说此题是不是输 0 能骗不少分啊,不然若学姐赢了,那么有头的学姐还能叫学姐吗? (作大死) 这 ...
- 【转】GitHub 中国区前 100 名到底是什么样的人?
原文网址:http://mt.sohu.com/20160407/n443539407.shtml 本文根据Github公开API,抓取了地址显示China的用户,根据粉丝关注做了一个排名,分析前一百 ...
- radhat 6.4/centos 6.4 下编译安装 最新ruby 2.1.5
#安装编译环境 yum groupinstall "Development tools" 或者 yum install gcc gcc-c++ gcc-g77 flex bison ...
- docker镜像、容器
第一部分:Docker镜像的基本知识 1.1 什么是Docker镜像 从整体的角度来讲,一个完整的Docker镜像可以支撑一个Docker容器的运行,在 Docker容器运行过程中主要提供文件系统视角 ...
- Code First 约定
Code First 约定 借助 Code First,可通过使用 C# 或 Visual Basic .NET 类来描述模型.模型的基本形状可通过约定来检测.约定是规则集,用于在使用 Code Fi ...
- unity, eulerAngle
unity中欧拉角规定如下: A rotation that rotates euler.z degrees around the z axis, euler.x degrees around the ...
- Python报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe0 in position 0: ordinal not in range(128)
解决办法: 在报错的页面添加代码: import sys reload(sys) sys.setdefaultencoding('utf8')
- git教程,待学习
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 Git教程: Git简介Git的诞 ...
- 如何创建自己的docker image并上传到DockerHub上
这里,记录一下比较常用的docker操作细节,对于初次使用者,可能有很大的帮助. docker作为云计算Paas层面的东西,风靡全世界了,主要是因为它小巧,好用,功能强大.今天主要介绍一下如何依据自己 ...