跟着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的打砖块游戏,做到一半,不带做了
跟着一个博主做的,前面的变量的定义全是内个哥们的,没带任何改动,就做了个界面,背景音乐,绘制了个小球,绘制了挡板 小球可以撞到边界反弹,然后做了砖块,定义了一个存放砖块的列表,,,就没有下文了 原博主 ...
随机推荐
- jmeter常量吞吐量定时器
jmeter常量吞吐量定时器
- 51nod 算法马拉松17 解题报告 以后不能赛中写题解(查逐梦者抄袭本人代码...
B题(数学题: 问(1+sqrt(2)) ^n 能否分解成 sqrt(m) +sqrt(m-1)的形式 如果可以 输出 m%1e9+7 否则 输出no n<=1e18 刚看题没思路 暴力一下 ...
- jni 修bug
1. ReferenceTable overflow (max=512) 内存泄露,程序运行一段时间就挂掉了. 在利用反射调用java中的函数需要释放掉查找到的类 void publishJava ...
- 利用python进行数据分析3_Pandas的数据结构
Series #通过list构建Series ser_obj=pd.Series(range(10,20)) print(type(ser_obj))#<class 'pandas.core.s ...
- python已安装好第三方库,pycharm import时仍标红的解决办法
pip install pymysql之后导入import pymysql时候标红 发现 pymysql下方还是标红,不能正常导入 可以试用一下以下的办法 解决办法: 首先打开 Settings找到P ...
- request :fail url not in domain list
1.可点击开发者工具右上角 详情-域名信息,看看是否配置了域名: 2. 手机预览小程序的时候,打开调试
- 用事件队列解决GUI的操作顺序问题(Qt中处理方法)
GUI操作顺序问题引发异常: 有时候我们使用写GUI程序的时候会遇到这样的问题:比如在程序中,建立了一个列表的GUI.这个列表是随着时间不断更新的,而且操作也会读取这个列表GUI的内容. 如果这个程序 ...
- C# 队列Queue
using System; using System.Collections.Generic; using System.Linq; namespace Queue测试 { class Program ...
- 响应式Web设计- 背景图片
背景图片可以响应式调整大小或缩放,以下是三种不同的方式 1.如果 background-size 属性设置为 "contain", 背景图片将按比例自适应内容区域.图片保持其比例不 ...
- (41)zabbix监控api接口性能及可用性 天气预报api为例
现在各种应用都走api,例如淘宝,天气预报等手机.pad客户端都是走api的,那么平时也得对这些api做监控了.怎么做呢?zabbix的web监控是不二选择了.今天就以天气预报api作为一个例子. 天 ...