跟着xiaoxin巨巨做cf
题目大意:有一个数列{xi},每次给出一个询问[l, r],即问 S(l ,r)是l和r之间的素数,f(p)表示数列{xi}中整除p的个数
思路:筛法,显然xi的顺序是无所谓的,我们把它记录下来,然后做筛法,如果一个素数筛合数的过程中遇到一个数的话显然得记到这个素数的头上,然后再把这样得到的表求一个sum就行
#include<iostream>
#include<cstdio>
#define maxn 10000009
int sum[maxn*],ans[maxn*];
bool visit[maxn*];
int main()
{
int n,m,x,y;
scanf("%d",&n);
for(int i=;i<=n;i++)
{
scanf("%d",&x);
sum[x]++;
}
for(int i=;i<=maxn;i++)
{
if(!visit[i])
{
for(int j=;j*i<=maxn;j++)
{
visit[i*j]=;
ans[i]+=sum[i*j];
}
}
ans[i]+=ans[i-];
}
scanf("%d",&m);
for(int i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
if(x>=maxn )x=maxn;
if(y>maxn)y=maxn;
printf("%d\n",ans[y]-ans[x-]);
} return ;
}
cf 14 E Camels
题目大意:问你长度为n的数列,其中只有1 到4 ,有t个峰 t-1个谷并且不存在连续两个相同高度的序列的个数
思路:dp[i][j][k][b]表示现在到第i个数字,第i个数字为j,有k个驼峰,如果第i个点高于第i-1个点那么b=0,不然b=1,可以很自然的推出转移,不过需要注意的是仔细画一下就可以发现峰和谷必然是交替出现的,并且在头和尾上必然是一个上升一个下降的,不然不可能满足t-1个谷,所以在i=2的时候强制上升就可以了
#include<iostream>
#include<cstdio>
using namespace std;
int dp[][][][];
int main()
{
int n,t;
scanf("%d%d",&n,&t);
for(int i=;i<=;i++)dp[][i][][]=;
for(int i=;i<=n;i++)
{
for(int j=;j<=;j++)
{
for(int k=;k<=min(i,t);k++)
{
for(int m=;m<=j-;m++)
{
dp[i][j][k][]+=dp[i-][m][k][]+dp[i-][m][k][];
}
if(i!=)for(int m=j+;m<=;m++)
{
dp[i][j][k][]+=dp[i-][m][k-][]+dp[i-][m][k][];
}
}
}
}
int ans=;
for(int i=;i<=;i++)ans+=dp[n][i][t][];
printf("%d\n",ans);
return ;
}
cf 69D Dot
题目大意:一开始在坐标系中有一个点,两人轮流操作,每次操作可以将一个点走一个偏移量(偏移量是给定的,题目给出了一坨偏移量,每次选择一个),或者每个选手有一次机会把点做y=x的对称操作,谁让点离远点欧几里的距离超过d谁就输,问谁胜
思路:博弈dp,利用一个P有一个子局面是N态,而N态所有子局面都是P态的思路进行记忆话搜索,值得注意的是y=x对称的这个操作是没有用的,显然这个操作不会改变和原点的距离,并且如果对手这个操作以后改变了当前局面的N P状态的话也可以改回来,由于只能改一次,对于胜负状态没有影响
#include<cstdio>
#include<iostream>
#define maxn 1000
using namespace std;
int x[maxn],y[maxn],d,n,xx,yy,dp[][];
int dfs(int a,int b)
{
if(a*a+b*b>d*d)return ;
int &u=dp[a+][b+];
if(u!=)return u;
for(int i=;i<=n;i++)if(dfs(a+x[i],b+y[i])==)return u=;
return u=;
}
int main()
{
scanf("%d%d%d%d",&xx,&yy,&n,&d);
for(int i=;i<=n;i++)scanf("%d%d",&x[i],&y[i]);
if(dfs(xx,yy)==)puts("Anton");else puts("Dasha");
return ;
}
CF 276 D. Little Girl and Maximum XOR
题目大意:在区间[L,R]中最大的a^b的值
思路:当时做群赛的时候做的这题,xiaoxin机智的打表得出了答案都是2^n-1的形式,然后只要知道n是多少就行,然后仔细想想就能发现其实就是L和R中从高位算起第一位二进制不同的位
#include<iostream>
#include<cstdio>
#include<cstring>
#define LLD "%lld"
using namespace std;
int main()
{
long long a,b;
scanf(LLD LLD,&a,&b);
long long cnt=,n=a^b;
while(n>)
{
cnt++;
n>>=;
}
printf(LLD"\n",(1LL<<(cnt))-);
return ;
}
CF 257 B. Playing Cubes
题目大意:有N个蓝木块和M个红木块,两人分别在其中拿出一个放成一排,一人是以最后相邻同色木块数量得分,一人是以相邻不同色木块计分,两人都用最优策略使自己得分最高问最后得分情况
思路:稍微想想就知道最后序列是这样的BRRBBRRBBRRRRRRRRRRR总是以少的那个颜色开头,然后对着这串多看两眼就能想到答案了
#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
int a,b;
scanf("%d%d",&a,&b);
if(a<b)swap(a,b);
printf("%d %d\n",a-,b);
return ;
}
CF 343 B. Alternating Current
题目大意:给你两根绳子,弯弯绕,问你最后能不能仅扯着四个线头把两条绳子分开
思路:显然++或者--这种情况直接可以舍掉的,然后很自然的想到用栈来搞,然后就没有然后了
#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
#define maxn 500000
using namespace std;
stack<int>q;
char ch[maxn];
int main()
{
scanf("%s",ch+);
int len=strlen(ch+);
for(int i=;i<=len;i++)
{
char c=ch[i];
if(!q.empty())
{
char u=q.top();
if(u==c)q.pop();else q.push(c);
}
else q.push(c);
}
if(q.empty())puts("Yes");else puts("No");
return ;
}
跟着xiaoxin巨巨做cf的更多相关文章
- c++中清空输入缓冲区的方法(做cf的时候炸了)
C/C++ 四种清空输入缓冲区的方法 比较实用的一种 char c; while(c=getchar()!='\n'); 或者是这种 cin.ignore(count,c); count代表要清除的字 ...
- = =写个prim希望能够巨巨们看的懂
prim算法---典型的贪心算法 求最小生成树的算法 (Minimum Spanning Tree)最小生成树: 算法思想:设图G顶点集合为U,首先任意选择图G中的一点作为起始点a,将该点加入集合V, ...
- hdu5651 xiaoxin juju needs help(逆元)
xiaoxin juju needs help Accepts: 150 Submissions: 966 Time Limit: 2000/1000 MS (Java/Others) Mem ...
- Diary / Solution Set -「WC 2022」线上冬眠做噩梦
大概只有比较有意思又不过分超出能力范围的题叭. 可是兔子的"能力范围" \(=\varnothing\) qwq. 「CF 1267G」Game Relics 任意一个 ...
- XTUOJ 1248 TC or CF 搜索
这个题一眼看上去不会 然后有人说是网络流 然后我就想怎么建图啊,然后不会(是本蒟蒻太垃圾了),肯定有网络流解法 然后去群里问了gdut的巨巨,他说他队友爆搜+剪枝过了(我也是非常的叹服) 然后我也写了 ...
- CF#213DIV2:B The Fibonacci Segment
You have array a1, a2, ..., an. Segment [l, r] (1 ≤ l ≤ r ≤ n) is good if ai = ai - 1 + ai - 2, for ...
- 在 Laravel 项目中使用 Elasticsearch 做引擎,scout 全文搜索(小白出品, 绝对白话)
项目中需要搜索, 所以从零开始学习大家都在用的搜索神器 elasiticsearch. 刚开始 google 的时候, 搜到好多经验贴和视频(中文的, 英文的), 但是由于是第一次接触, 一点概念都没 ...
- 【Codeforces】CF 467 C George and Job(dp)
题目 传送门:QWQ 分析 dp基础题. $ dp[i][j] $表示前i个数分成j组的最大和. 转移显然. 吐槽:做cf题全靠洛谷翻译苟活. 代码 #include <bits/stdc++. ...
- 基于pygame的打砖块游戏,做到一半,不带做了
跟着一个博主做的,前面的变量的定义全是内个哥们的,没带任何改动,就做了个界面,背景音乐,绘制了个小球,绘制了挡板 小球可以撞到边界反弹,然后做了砖块,定义了一个存放砖块的列表,,,就没有下文了 原博主 ...
随机推荐
- (转)Linux下清理Cache方法
频繁的文件访问会导致系统的Cache使用量大增, 系统运行缓慢. 1 首先用free 命令查看内存的使用:$ free -m total used fr ...
- Android(java)学习笔记148:网易新闻RSS客户端应用编写逻辑过程
1.我们的项目需求是编写一个新闻RSS浏览器,RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用.RSS目前广泛用于网上新闻频道,bl ...
- python学习(day1)
一.在这次实训之前,虽然听说过很多次python这种语言,但是从来没有真正去学习过,仅仅知道它是一种目前十分流行且功能非常强大的语言,可以方便快捷的实现很多功能.今天的课程带我了解了python,并且 ...
- Alfred的配置和使用
http://www.jianshu.com/p/f77ad047f7b0 Alfred:mac上的神兵利器,提升工作效率*n,快捷键:option + 空格.鉴于是看了池老师的<人生元编程 ...
- ubuntu 18.* 重启网卡
systemctl UNIT LOAD ACTIVE SUB DESCRIPTION proc-sys-fs-binfmt_misc.automount loaded active waiting A ...
- HTML5服务器发送事件(Server-Send Events)
HTML5服务器发送事件是允许获得来自服务器的更新. server-sent事件-单向传递消息,表示网页自动获取来自服务器的更新. 其中有一个重要的对象,eventsource对象是用来接收服务器发送 ...
- Shell脚本中时间处理
Shell脚本中时间处理 1.脚本内容 #!/bin/bash #环境变量 #设置环境变量和sql文件格式相符 source /etc/profileexport LD_LIBRARY_PATH=&q ...
- SVN的使用二
一,打开SCM 在xcode中,点击菜单: File -> Source Control –> Repositories 二,连接SVN服务器 1, 2,配置SVN服务器地址(http:/ ...
- 一次线上mysql死锁分析
一.现象 发运车次调用发车接口时发生异常,后台抛出数据库死锁日志. 二.原因分析 通过日志可以看出事务T1等待 heap no 8的行锁 (X locks 排他锁) 事务T2持有heap no 8的行 ...
- redis 散列学习要点记录
散列类型键值也是种字典结构,存储了字段和字段值的映射,字段值只能是字符串,不可以是其他类型(redis数据类型都不可嵌套使用其他类型),散列类型键可以有2的32次方减1个字段 散列的命令组 hset ...