Codeforces Round #467(Div2)题解
凌晨起来打CF,0:05,也是我第一次codeforces
第一题:
我刚开始怀疑自己读错题了,怎么会辣么水。
判除了0的数字种类
#include <cstdio>
;
];
int main(){
scanf("%d",&n);int i;
;i<=n;++i){
;
}
printf("%d",ans);
}
第二题:让你找一个x使x<=y且x不能被[2,p]内的数整除,使x尽量大
其实是暴力枚举。
#include <cstdio>
int p,y;
bool ck(int x){
int i;
;i*i<=x&&i<=p;++i));
;
}
int main(){
scanf("%d%d",&p,&y);
int i;
for(i=y;i>p;--i)if(ck(i)){
printf("%d",i);
;
}
printf("-1");
}
第三题,模拟题,太水了,不细说:
#include <cstdio>
#include <iostream>
using namespace std;
long long k,d,t;
;
int main(){
scanf(){
printf("%I64d",t);
;
}
)*d;tmp-=k;
;
long long tm=(long long)((double)t/(x+y));ans=tm*(k+tmp);double rt=(double)t-(double)tm*(x+y);
if(rt<=k){
ans+=rt;printf("%lf",ans);
}else{
ans+=k;rt-=k;ans+=rt*(;printf("%lf",ans);
}
}
第四题:
给你一个有向图,问你能否奇数步走到一个初度为0的点,输出路径
初看吓得我以为是SG函数,然而并不是, tarjan+bfs就行了
bfs和dp一起来,这里的dp可以用spfa的方式,用一个可以让元素多次进出的队列,然后搞dp
tarjan用来判能不能平局,如果s以后的路上没有scc,就输出lose
#include <cstdio>
#include <algorithm>
#include <stack>
#include <queue>
using namespace std;
#define maxn 100010
#define maxm 200010
struct edge{int nxt,to;}e[maxm];
];
],inq[maxn];
void add(int u,int v){e[++pos]=(edge){head[u],v},head[u]=pos;}
stack<int>s;
queue<int>q;
void tar(int u){
dnf[u]=low[u]=++dfs_cnt;s.push(u);int i;
for(i=head[u];i;i=e[i].nxt){
int v=e[i].to;
if(!dnf[v]){
tar(v);low[u]=min(low[u],low[v]);
}else if(!scc[v])low[u]=min(low[u],dnf[v]);
}
if(low[u]==dnf[u]){
for(scc_cnt++;;){
int x=s.top();s.pop();++scc_size[scc_cnt];
scc[x]=scc_cnt;if(x==u)break;
}
}
}
void dfs(int u,int sta){
if(u){
dfs(pre[u][sta],sta== ? :);
ans[++ans[]]=u;
}
}
int main(){
scanf("%d%d",&n,&m);int i;
;i<=n;++i){
int k,x;scanf("%d",&k);
while(k--){
scanf("%d",&x);add(i,x);++out[i];
}
}
scanf("%d",&st);
;i<=n;++i)if(!dnf[i])tar(i);
;
dp[st][]=;q.push(st);inq[st]=;
while(!q.empty()){
;
)flg=;
for(i=head[u];i;i=e[i].nxt){
int v=e[i].to;
] && dp[v][]==){
dp[v][]=;pre[v][]=u;;
}
] && dp[v][]==){
dp[v][]=;pre[v][]=u;;
}
}
}
;i<=n;++i)] && ){
dfs(i,);printf("Win\n");
;j<=ans[];++j)printf(;
}
if(flg)printf("Draw");else printf("Lose");
}
T5:构造题
题意是给定一个字符串S1,S2(这不是两个吗。。。)长度2e3以下
定义操作:
将s1的后缀x个进行一次反转,再放到字符串首
如果操作多余6100,则答案无效
分析:
对于一个字符串:ABxC(A:与s2后缀相符的字符串,x:S2后缀A之前的那个字符,也就是我们要将x放到A前面,B,C:都是无关紧要的乱序字符串)
ABxC->CxBA(每个都反转)->ABCx->xABC 操作次数3n
#include <cstdio>
#include <cstring>
using namespace std;
#define maxn 2010
char s1[maxn],s2[maxn];
],h1[],h2[];
int idx(char c){return c-'a';}
bool jg(){
;i<n;++i);
;
}
bool ck(int l1,int r1,int l2,int r2){
;
;
}
int main(){//freopen("o1.txt","w",stdout);
scanf("%d",&n);
scanf(;
int i;
;i<n;++i)h1[idx(s1[i])]++,++h2[idx(s2[i])];
;i<;++i)if(h1[i]!=h2[i]){
printf(;
}
while(!jg()){
,bpos=-,cpos=-,xpos=-;
,i-,n-i,n-);--i);len=i;
apos=len-;
;s1[i]!=s2[n-len-];++i);
bpos=i-;xpos=i;cpos=n;
ans[++ans[]]=n;ans[++ans[]]=bpos+;ans[++ans[]]=;
char tmp[maxn];
tmp[]=s2[n-len-];;
;i<=apos;++i)tmp[++ps]=s1[i];
;i<=bpos;++i)tmp[++ps]=s1[i];
//for(i=xpos+1;i<n;++i)tmp[++ps]=s1[i];
;i>=xpos+;--i)tmp[++ps]=s1[i];
;i<n;++i)s1[i]=tmp[i];
}
printf(]);
;i<=ans[];++i)printf("%d ",ans[i]);
}
Codeforces Round #467(Div2)题解的更多相关文章
- [Codeforces Round #461 (Div2)] 题解
[比赛链接] http://codeforces.com/contest/922 [题解] Problem A. Cloning Toys [算法] 当y = 0 , 不可以 当 ...
- CodeForces round 967 div2 题解(A~E)
本来准备比完赛就写题解的, 但是一拖拖了一星期, 唉 最后一题没搞懂怎么做,恳请大神指教 欢迎大家在评论区提问. A Mind the Gap 稳定版题面 https://cn.vjudge.net/ ...
- Codeforces Round #407 div2 题解【ABCDE】
Anastasia and pebbles 题意:你有两种框,每个框可以最多装k重量的物品,但是你每个框不能装不一样的物品.现在地面上有n个物品,问你最少多少次,可以把这n个物品全部装回去. 题解:其 ...
- Codeforces Round#704 Div2 题解(A,B,C,D,E)
FST ROUND !!1 A Three swimmers: 直接整除一下向上取整就好了: #include <bits/stdc++.h> using namespace std; t ...
- Codeforces Round#687 Div2 题解
打这场的时候迷迷糊糊的,然后掉分了( A Prison Break: 题面很复杂,但是题意很简单,仅需求出从这个点到四个角的最大的曼哈顿距离即可 #include <bits/stdc++.h& ...
- CodeForces Round #516 Div2 题解
A. Make a triangle! 暴力... 就是给你三个数,你每次可以选一个加1,问最少加多少次能构成三角形 #include <bits/stdc++.h> #define ll ...
- Codeforces Round #467 (div.2)
Codeforces Round #467 (div.2) 我才不会打这种比赛呢 (其实本来打算打的) 谁叫它推迟到了\(00:05\) 我爱睡觉 题解 A. Olympiad 翻译 给你若干人的成绩 ...
- Codeforces Round #539 div2
Codeforces Round #539 div2 abstract I 离散化三连 sort(pos.begin(), pos.end()); pos.erase(unique(pos.begin ...
- Codeforces Round #543 Div1题解(并不全)
Codeforces Round #543 Div1题解 Codeforces A. Diana and Liana 给定一个长度为\(m\)的序列,你可以从中删去不超过\(m-n*k\)个元素,剩下 ...
随机推荐
- IDEA使用maven中tomcat插件来启动服务器配置
一 .在项目pom文件中配置tomcat 先添加如下配置: <!-- 配置Tomcat插件 --> <build> <plugins> <plugin> ...
- rman命令详解(三)
1. Report 命令用户判断数据库的当前可恢复状态和提供数据库备份的特定信息1.1 指定最近没有备份的数据文件查询3天内没有备份过的表空间,可以用如下命令:RMAN> report need ...
- zabbix发送邮件
1.zabbix服务器上已安装postfix邮件服务,如果没安装用yum安装sendmail也可以(简单) 2.vim /etc/mail.rc 在此配置中加上用户名及密码等,即可用这个账号发送邮件 ...
- 【Android学习笔记】 点击穿透(Click Through)
问题:开发一个App,主界面用了Activity,子页面用了Fragment.从Activity跳转到Fragment后Fragment透明,并且点击击穿到Axtivity. 分析:刚开始没有注意到点 ...
- 杂项:TModJS
ylbtech-杂项:TModJS TmodJS(原名 atc)是一个简单易用的前端模板预编译工具.它通过预编译技术让前端模板突破浏览器限制,实现后端模板一样的同步“文件”加载能力.它采用目录来组织维 ...
- Java 编程规范,常见规范,命名规范,复杂度
方法/步骤 1. *不允许把多个短语句写在一行中,即一行只写一条语句 1. 示例:如下例子不符合规范. LogFilename now = null; LogFilename t ...
- java基础知识(6)---抽象类与接口
抽象类: abstract抽象:不具体,看不明白.抽象类表象体现.在不断抽取过程中,将共性内容中的方法声明抽取,但是方法不一样,没有抽取,这时抽取到的方法,并不具体,需要被指定关键字abstract所 ...
- 请问两个div之间的上下距离怎么设置
转自:https://zhidao.baidu.com/question/344630087.html 楼上说的是一种方法,yanzilisan183 <div style="marg ...
- Qt webview调用JavaScript 带参函数
void MainWindow::on_pushButtonShowMarker_clicked() { QString lat = "104.701681"; QString l ...
- [原创]SQL表值函数:返回从当前周开始往回的自定义周数
一如往常一样,一篇简短博文记录开发过程中遇到的一个问题.初衷都是记录自己的一些Idea,也是希望能够帮助一些凑巧遇到此类需求的问题,这个需求的的开端是因为,要统计最近N周的销售数据. 接下来我们来看看 ...