CF-957

赛时A去写全排列……前三题我的写法都挺丑的,后面改进了再更……

Problem - D - Codeforces

虽然是很简单很经典的线性dp,但也是我第一次自己把这种题写出来ヾ(≧▽≦*)o

分析

看题面很容易想到线性递推来更新状态,是一种线性dp。

  • f[i]>=0表示第i个点能被达到,否则不能被达到,因为最多在水中游k米,这一条件会影响是否能达到该点,所以我们用f[i]>=0时的值来表示这一状态,即在第i点最多还能游f[i]米

  • 初始条件:f[0]显然为k,而1~m内的点都在第一次跳跃的范围内,其中s[i]为C情况不能达到,设f[i]=-1,其余点就是f[i]=k,由此m+1~n+1的点都可以通过状态转移递推得到

  • 状态转移:对于在m+1~n+1范围内的点i,如果s[i]为C,显然无法达到,f[i]=-1,而s[i]为W或者L时,点i的状态可以由[i-m,i-1]的点j更新,s[j]=L或者j为0时意味着可以由点j跳到点i,而s[j]为W的情况则只能在j为i-1时更新,表示从i-1游到i,此时要用f[i-1]-1来更新f[i]

最后若判断f[n+1]>=0与否即可

代码

const int N=2e5+5;
int f[N];
void solve() {
int n,m,k;cin>>n>>m>>k;
string s;cin>>s;
s=' '+s;
rep(i,0,n+1) f[i]=-1;
rep(i,0,m){
if(s[i]!='C'||i==0) f[i]=k;
else f[i]=-1;
}
rep(i,m+1,n+1){
if(s[i]!='C'||i==n+1){
rep(j,i-m,i-1){
if(s[j]=='L'||j==0) f[i]=max(f[i],f[j]);
else if(j==i-1&&s[j]=='W') f[i]=max(f[i],f[j]-1);
}
}
else f[i]=-1;
}
if(f[n+1]>=0) cout<<"YES";
else cout<<"NO";
cout<<endl;
}

Problem - E - Codeforces

暴力枚举

分析

注意到a的范围只有1e4,n为一、二、三位数时,n*a最多1e4、1e5、1e6,也就是说,n为一,二,三位数的情况下,a-b分别<=4,5,6,如此我们可以在考虑n的位数的情况下暴力枚举a、b的值求解

代码

int n,_=1e4;
bool f(int w,int a,int b){
int res=0,cnt=0;
if(w==1){
cnt=a-b;
while(cnt--){
res=res*10+n;
}
}
else if(w==2){
cnt=a*2-b;
int now=1;
while(cnt--){
if(now) res=res*10+n/10;
else res=res*10+n%10;
now^=1;
}
}
else{//因为按数据范围,这种情况只有n=100
cnt=a*3-b;
int now=0;
while(cnt--){
if(!now) res=res*10+1;
else res=res*10;
now=(now+1)%3;
}
}
return res==n*a-b;
}
void solve() {
cin>>n;
vector<pair<int,int>>ans;
if(n<10){
rep(i,1,_){
int s=max(i-4,1ll);
rep(j,s,i-1){
if(f(1,i,j)) ans.push_back({i,j});
}
}
}
else if(n<100){
rep(i,1,_){
int s=max(i*2-5,1ll);
rep(j,s,i*2-1){
if(f(2,i,j)) ans.push_back({i,j});
}
}
}
else{
rep(i,1,_){
int s=max(i*3-6,1ll);
rep(j,s,i*3-1){
if(f(3,i,j)) ans.push_back({i,j});
}
}
}
cout<<ans.size()<<endl;
for(auto [a,b]:ans) cout<<a<<" "<<b<<" "<<endl;
}

CF-957(D-E)的更多相关文章

  1. ORA-00494: enqueue [CF] held for too long (more than 900 seconds) by 'inst 1, osid 5166'

    凌晨收到同事电话,反馈应用程序访问Oracle数据库时报错,当时现场现象确认: 1. 应用程序访问不了数据库,使用SQL Developer测试发现访问不了数据库.报ORA-12570 TNS:pac ...

  2. cf之路,1,Codeforces Round #345 (Div. 2)

     cf之路,1,Codeforces Round #345 (Div. 2) ps:昨天第一次参加cf比赛,比赛之前为了熟悉下cf比赛题目的难度.所以做了round#345连试试水的深浅.....   ...

  3. cf Round 613

    A.Peter and Snow Blower(计算几何) 给定一个点和一个多边形,求出这个多边形绕这个点旋转一圈后形成的面积.保证这个点不在多边形内. 画个图能明白 这个图形是一个圆环,那么就是这个 ...

  4. ARC下OC对象和CF对象之间的桥接(bridge)

    在开发iOS应用程序时我们有时会用到Core Foundation对象简称CF,例如Core Graphics.Core Text,并且我们可能需要将CF对象和OC对象进行互相转化,我们知道,ARC环 ...

  5. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  6. CF memsql Start[c]UP 2.0 A

    CF memsql Start[c]UP 2.0 A A. Golden System time limit per test 1 second memory limit per test 256 m ...

  7. CF memsql Start[c]UP 2.0 B

    CF memsql Start[c]UP 2.0 B B. Distributed Join time limit per test 1 second memory limit per test 25 ...

  8. CF #376 (Div. 2) C. dfs

    1.CF #376 (Div. 2)    C. Socks       dfs 2.题意:给袜子上色,使n天左右脚袜子都同样颜色. 3.总结:一开始用链表存图,一直TLE test 6 (1)如果需 ...

  9. CF #375 (Div. 2) D. bfs

    1.CF #375 (Div. 2)  D. Lakes in Berland 2.总结:麻烦的bfs,但其实很水.. 3.题意:n*m的陆地与水泽,水泽在边界表示连通海洋.最后要剩k个湖,总要填掉多 ...

  10. CF #374 (Div. 2) D. 贪心,优先队列或set

    1.CF #374 (Div. 2)   D. Maxim and Array 2.总结:按绝对值最小贪心下去即可 3.题意:对n个数进行+x或-x的k次操作,要使操作之后的n个数乘积最小. (1)优 ...

随机推荐

  1. Linux上执行内存中的脚本和程序

    在Linux中可以不需要有脚本或者二进制程序的文件在文件系统上实际存在,只需要有对应的数据在内存中,就有办法执行这些脚本和程序. 原理其实很简单,Linux里有办法把某块内存映射成文件描述符,对于每一 ...

  2. Python语言:散修笔记

    文章目录 前言 转义字符的使用 原字符 变量的定义 类型转换 注释 接收用户信息 运算规则 整除运算 幂运算 比较运算符 布尔运算 运算优先级 对象的布尔值 if else elif分支结构 条件表达 ...

  3. selenium 滚动截图参考

    Selenium本身并不直接支持滚动截图,但是你可以通过编程方式实现滚动截图.下面是一个Python的例子,使用Selenium和PIL库实现滚动截图: from selenium import we ...

  4. 【U8】快速获取u8单据的类型key值

    win10下 打开 写字板,直接搜索栏搜索写字板打开. 登录u8,找到需要的单据,以基础档案存货为例,打开存货档案界面. 按住键盘ctrl+shift,鼠标左键单据单据上的某个按钮,以新增按钮为例,单 ...

  5. 详解Spring循环依赖

    一. 什么是循环依赖 循环依赖,就是两个或则两个以上的bean互相依赖对方,最终形成闭环.比如"A对象依赖B对象,而B对象也依赖A对象",或者"A对象依赖B对象,B对象依 ...

  6. 实战SQL优化(以MySQL深分页为例)

    1 准备表结构 CREATE TABLE `student` ( `id` int NOT NULL AUTO_INCREMENT, `user_no` varchar(50) CHARACTER S ...

  7. Flask学习记录:在w3cschool资料的基础上的个人摘录、实践与总结

    学习与转载自w3cschool,在w3cschool资料的基础上的个人摘录.实践与总结,如有错误望留言. 一.Flask 概述 2021-08-25 14:01 更新 1.1 什么是Web Frame ...

  8. [brief]虚拟机安装UbuntuServer

    1.下载Ubuntu--Server镜像官网点击 2.Vmware15.x配置 2G /boot 4G swap(一倍或两倍于分配内存量) rest / or /+/home 3.terminal下安 ...

  9. itestwork(爱测试)开源一站式接口测试&敏捷测试工作站 9.0.0 RC2 发布,重大升级

    (一)itest 简介 itest work (爱测试)  一站式工作站让测试变得简单.敏捷.itest work 包含极简的任务管理,测试管理,缺陷管理,测试环境管理,接口测试,接口Mock 6合1 ...

  10. c# Redis缓存的使用和helper类;

    使用背景: 项目中用户频繁访问数据库会导致程序的卡顿,甚至堵塞.使用缓存可以有效的降低用户访问数据库的频次,有效的减少并发的压力.保护后端真实的服务器. 对于开发人员需要方便调用,所以本文提供了hel ...