cf 385 C. Bear and Prime Numbers

题目大意:有一个数列{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的更多相关文章

  1. c++中清空输入缓冲区的方法(做cf的时候炸了)

    C/C++ 四种清空输入缓冲区的方法 比较实用的一种 char c; while(c=getchar()!='\n'); 或者是这种 cin.ignore(count,c); count代表要清除的字 ...

  2. = =写个prim希望能够巨巨们看的懂

    prim算法---典型的贪心算法 求最小生成树的算法 (Minimum Spanning Tree)最小生成树: 算法思想:设图G顶点集合为U,首先任意选择图G中的一点作为起始点a,将该点加入集合V, ...

  3. hdu5651 xiaoxin juju needs help(逆元)

    xiaoxin juju needs help  Accepts: 150  Submissions: 966  Time Limit: 2000/1000 MS (Java/Others)  Mem ...

  4. Diary / Solution Set -「WC 2022」线上冬眠做噩梦

      大概只有比较有意思又不过分超出能力范围的题叭.   可是兔子的"能力范围" \(=\varnothing\) qwq. 「CF 1267G」Game Relics   任意一个 ...

  5. XTUOJ 1248 TC or CF 搜索

    这个题一眼看上去不会 然后有人说是网络流 然后我就想怎么建图啊,然后不会(是本蒟蒻太垃圾了),肯定有网络流解法 然后去群里问了gdut的巨巨,他说他队友爆搜+剪枝过了(我也是非常的叹服) 然后我也写了 ...

  6. 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 ...

  7. 在 Laravel 项目中使用 Elasticsearch 做引擎,scout 全文搜索(小白出品, 绝对白话)

    项目中需要搜索, 所以从零开始学习大家都在用的搜索神器 elasiticsearch. 刚开始 google 的时候, 搜到好多经验贴和视频(中文的, 英文的), 但是由于是第一次接触, 一点概念都没 ...

  8. 【Codeforces】CF 467 C George and Job(dp)

    题目 传送门:QWQ 分析 dp基础题. $ dp[i][j] $表示前i个数分成j组的最大和. 转移显然. 吐槽:做cf题全靠洛谷翻译苟活. 代码 #include <bits/stdc++. ...

  9. 基于pygame的打砖块游戏,做到一半,不带做了

    跟着一个博主做的,前面的变量的定义全是内个哥们的,没带任何改动,就做了个界面,背景音乐,绘制了个小球,绘制了挡板 小球可以撞到边界反弹,然后做了砖块,定义了一个存放砖块的列表,,,就没有下文了 原博主 ...

随机推荐

  1. sql中的exsits和not exsits

    select * from table where exsits(sql语句) :  括号中sql语句有数据则返回这些相关id的数据集 select * from table where not ex ...

  2. python代理检测

    import socket,threading,os,sys,queue,re socket.setdefaulttimeout(5) path=sys.path[0] if os.path.isfi ...

  3. struts2默认拦截器defaultStack

    第一次使用Struts2.3.20,前台页面向后台传值,怎么总是提示值为null,查找半天原来是struts配置文件的action中忘记引入defaultStack拦截器了,所以即使Action中万事 ...

  4. UVA1663 Purifying Machine (匈牙利算法,二分图最大匹配)

    模版集合个数减少是因为匹配串集合中没被匹配过的一对串匹配了.所以就是找一个二分图最大匹配. 因为集合X和Y是不好分开的,但是可以直接跑,两个集合都会跑一遍,所以一个匹配会被算两次,返回的时候除以2就行 ...

  5. urllib基础-构造请求对象,设置用户代理User-Agent

    有的网页具有一些反爬机制,如:需要浏览器请求头中的User-Agent.User-Agent类似浏览器的身份证. 程序中不设置User-Agent.默认是Python-urllib/3.5.这样网站就 ...

  6. 运用模逆运算(同余方程)来解决Matlab课上的一道思考题

    一道Matlab编程题 & 暴力解法 Matlab课上老师出了这样一道题: 一个篮子有K个鸡蛋: 2个2个拿剩1个: 3个3个全部拿完: 4个4个拿剩1: 5个5个拿剩4个: 6个6个拿剩3个 ...

  7. mongodb测试类

    public class MongoManager { private static final String MONGO_DBNAME="local"; private stat ...

  8. NOIP 2017 D2T1 奶酪

    #include<iostream> #include<cstdio> #include<cstdlib> #include<algorithm> #i ...

  9. systemverilog 之interface/timing region/program

    1.connecting the testbench and the design 2.verilog connection review 3.systemverilog interfaces 4.s ...

  10. HUD--2553 N皇后问题

    Problem Description 在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上.你的任务是,对于给定的N, ...