先刷前四题,剩下的有空补。

792A New Bus Route

题意:给出x 轴上的n 个点,问两个点之间的最短距离是多少,有多少个最短距离。

思路:排序后遍历。

代码:

 #include<stdio.h>
#include<algorithm>
using namespace std;
#define N 200005
int w[N];
int main(){
int n;
while(~scanf("%d", &n)){
for(int i=; i<n; i++){
scanf("%d", &w[i]);
}
sort(w, w+n);
int mint=w[]-w[], co=;
for(int i=; i<n; i++){
if(w[i]-w[i-]<mint){
mint=w[i]-w[i-];
co=;
}
else if(w[i]-w[i-]==mint) co++;
}
printf("%d %d\n", mint, co);
}
return ;
}

792A AC代码

792B Counting-out Rhyme

题意:1-n n个数围成一圈,初始位置为1,有m 个操作,每个操作给一个整数x,表示前进x 步后删去当前位置的数,再前进一步,输出每次操作删除的数

思路:模拟,用pos表示当前位置,循环m 次。注意得到x 后先取余当前剩余数量。

代码:

 #include<stdio.h>

 int main(){
int n, m, x;
while(~scanf("%d%d", &n, &m)){
bool vis[]={}, flag=false;
int pos=, num=n;
while(m--){
scanf("%d", &x);
x=x%num;
while(x--){
do
{
pos++;
pos%=n;
}while(vis[pos]==);
}
if(flag) printf(" ");
flag=true;
printf("%d", pos+);
vis[pos]=;
do
{
pos++;
pos%=n;
}while(vis[pos]==);
num--;
}
printf("\n");
}
return ;
}

792B AC代码

792C Divide by Three

题意:给一个数,问最少删除多少位后可以被3 整除。

思路:

  有一个大数取余要先理解。用sum 保存所有位和取余3 的结果。

  如果sum==0,不需要删除;

  如果sum==1,有可能删除一位1(取余后),有可能删除两位2;

  如果sum==2,有可能删除一位2,有可能删除两位1。

  写一个函数del(char *s, int k)表示从s 里删除一个数字k 并且去除前导0。接着几个if、else判断一下就可以了。

代码:

 #include<stdio.h>
#include<string.h>
void del(char *s, int k){
int ls=strlen(s), i;
for(i=ls-; i>=; i--){
if((s[i]-'')%==k) break;
}
if(i==-) return ;
for(int j=i; j<ls; j++) s[j]=s[j+];
if(s[]==){
s[]='-';
s[]='';
s[]=;
return ;
}
for(i=; s[i]; i++){
if(s[i]!='') break;
}
if(s[i]==) s[]='', s[]=;
else{
for(int j=i; j<ls; j++){
s[j-i]=s[j];
}
}
}
char s[], ts[];
int main(){
while(~scanf("%s", s)){
int sum=;
for(int i=; s[i]; i++){
sum+=s[i]-'';
sum%=;
}
if(sum==) printf("%s\n", s);
else{
int n1=, n2=;
for(int i=; s[i]; i++){
if((s[i]-'')%==) n1++;
else if((s[i]-'')%==) n2++;
}
if(sum==){
if(n2<){
del(s, );
printf("%s\n", s);
}
else if(n1==){
del(s, );
del(s, );
printf("%s\n", s);
}
else{
strcpy(ts, s);
int ls1, ls2;
del(ts, );
ls1=strlen(ts);
del(s, );
del(s, );
ls2=strlen(s);
if(ls1>ls2) printf("%s\n", ts);
else printf("%s\n", s);
}
}
else{
if(n2==){
del(s, );
del(s, );
printf("%s\n", s);
}
else if(n1<){
del(s, );
printf("%s\n", s);
}
else{
strcpy(ts, s);
int ls1, ls2;
del(ts, );
del(ts, );
ls1=strlen(ts);
del(s, );
ls2=strlen(s);
if(ls1>ls2) printf("%s\n", ts);
else printf("%s\n", s);
}
}
}
}
return ;
}

792C AC代码

792D Paths in a Complete Binary Tree

题意:给一个n ,一个m ,n 表示有n 个结点的完整二叉树,m 表示m 个询问,每次询问给出初始结点编号和移动序列,问移动后的结点编号。(树结点编码依据中序遍历)

思路:

  预处理+模拟。

  可以先通过一个dfs找到初始位置的层数,这个dfs里面同时求出初始位置到根的路径(用于判断当前位置是父结点的左孩子或右孩子)。

  接着根据初始位置的层数,先预处理一下移动序列,把不合理的操作去掉。(简化后续操作难度)

  接着模拟当前位置变化即可。分三种情况处理即可(重点的子树结点数量可以通过当前层数求出)

代码:

 #include<stdio.h>
#define LL long long int getNum(LL n){
int ret=;
while(n){
n>>=;
ret++;
}
return ret;
} int dfs(LL l, LL r, LL p, bool *ss, int &ssp, int ceng){ // 确定初始位置的行
LL mid=(l+r)/;
if(mid==p) return ceng;
else if(mid>p){
ss[ceng]=;
ssp=ceng;
return dfs(l, mid-, p, ss, ssp, ceng+);
}
else{
ss[ceng]=;
ssp=ceng;
return dfs(mid+, r, p, ss, ssp, ceng+);
}
} void init(char *s, int rp, int num){
int j=;
for(int i=; s[i]; i++){
if(s[i]=='L' || s[i]=='R'){
if(rp==num);
else{
rp++;
s[j++]=s[i];
}
}
else{
if(rp==);
else{
rp--;
s[j++]=s[i];
}
}
}
s[j]=;
} LL dp[];
LL solve(char *s, bool *ss, int ssp, LL p, int rp, int num){
if(s[]==) return p;
if(s[]=='L'){
LL ln=dp[num-rp]-;
p=p-ln+(ln-)/;
rp++;
ss[++ssp]=;
}
else if(s[]=='R'){
LL rn=dp[num-rp]-;
p=p++(rn-)/;
rp++;
ss[++ssp]=;
}
else{
if(ss[ssp]==){
LL rn=dp[num-rp]-;
p=p++rn;
}
else{
LL ln=dp[num-rp]-;
p=p--ln;
}
ssp--;
rp--;
} return solve(s+, ss, ssp, p, rp, num);
} char s[];
bool ss[];
int main(){
dp[]=;
for(int i=; dp[i-]<=1e18; i++){
dp[i]=dp[i-]*;
}
LL n, p;
int m;
while(~scanf("%I64d%d", &n, &m)){
int num = getNum(n);
while(m--){
scanf("%I64d%s", &p, s);
int ssp=;
int rp = dfs(, n, p, ss, ssp, );
init(s, rp, num); printf("%I64d\n", solve(s, ss, ssp, p, rp, num));
}
}
return ;
}

792D AC代码

codeforces 792A-D的更多相关文章

  1. 3.26-3.31【cf补题+其他】

      计蒜客)翻硬币 //暴力匹配 #include<cstdio> #include<cstring> #define CLR(a, b) memset((a), (b), s ...

  2. python爬虫学习(5) —— 扒一下codeforces题面

    上一次我们拿学校的URP做了个小小的demo.... 其实我们还可以把每个学生的证件照爬下来做成一个证件照校花校草评比 另外也可以写一个物理实验自动选课... 但是出于多种原因,,还是绕开这些敏感话题 ...

  3. 【Codeforces 738D】Sea Battle(贪心)

    http://codeforces.com/contest/738/problem/D Galya is playing one-dimensional Sea Battle on a 1 × n g ...

  4. 【Codeforces 738C】Road to Cinema

    http://codeforces.com/contest/738/problem/C Vasya is currently at a car rental service, and he wants ...

  5. 【Codeforces 738A】Interview with Oleg

    http://codeforces.com/contest/738/problem/A Polycarp has interviewed Oleg and has written the interv ...

  6. CodeForces - 662A Gambling Nim

    http://codeforces.com/problemset/problem/662/A 题目大意: 给定n(n <= 500000)张卡片,每张卡片的两个面都写有数字,每个面都有0.5的概 ...

  7. CodeForces - 274B Zero Tree

    http://codeforces.com/problemset/problem/274/B 题目大意: 给定你一颗树,每个点上有权值. 现在你每次取出这颗树的一颗子树(即点集和边集均是原图的子集的连 ...

  8. CodeForces - 261B Maxim and Restaurant

    http://codeforces.com/problemset/problem/261/B 题目大意:给定n个数a1-an(n<=50,ai<=50),随机打乱后,记Si=a1+a2+a ...

  9. CodeForces - 696B Puzzles

    http://codeforces.com/problemset/problem/696/B 题目大意: 这是一颗有n个点的树,你从根开始游走,每当你第一次到达一个点时,把这个点的权记为(你已经到过不 ...

  10. CodeForces - 148D Bag of mice

    http://codeforces.com/problemset/problem/148/D 题目大意: 原来袋子里有w只白鼠和b只黑鼠 龙和王妃轮流从袋子里抓老鼠.谁先抓到白色老鼠谁就赢. 王妃每次 ...

随机推荐

  1. Python:fake-useragent 伪装请求头

    写爬虫的时候,在进行 request 请求的时候,多数情况下需要添加请求头,否则就不能正常请求. 添加请求头最常用的做法是修改 User-Agent 来伪装浏览器. 以前在写请求头的时候,都是通过 c ...

  2. WKWebView讲解与使用

    随着IOS开发的应用,对于网页嵌入也越来越多了,在IOS 8之前我们使用UIWebView展示详情页,自从IOS 8之后就出现了WKWebView,相比UIWebView,WKWebView优化了较多 ...

  3. PostgreSql的Explain命令详解

    http://toplchx.iteye.com/blog/2091860 使用EXPLAIN PostgreSQL为每个收到的查询设计一个查询规划.选择正确的匹配查询结构和数据属性的规划对执行效率是 ...

  4. asp.net easyui 动态绑定下拉框

    前台: <title>标题</title> <link href="EasyUi_v1.3.4/easyui/themes/default/easyui.css ...

  5. C++系列总结——封装

    前言 众所周知,封装.继承和多态是面向对象编程的三大特性.C++作为一门面向对象的编程语言,自然支持了这些特性,但C++是如何实现这些特性的呢?今天先说下我理解的封装. 封装 通常我们会把下面的行为也 ...

  6. Python 使用python-kafka类库开发kafka生产者&消费者&客户端

    使用python-kafka类库开发kafka生产者&消费者&客户端   By: 授客 QQ:1033553122       1.测试环境 python 3.4 zookeeper- ...

  7. 基于jwt的用户登录认证

    最近在app的开发过程中,做了一个基于token的用户登录认证,使用vue+node+mongoDB进行的开发,前来总结一下. token认证流程: 1:用户输入用户名和密码,进行登录操作,发送登录信 ...

  8. TCP点对点转发的实现与原理(nodejs)

    Nagent Nagent是TCP点对点转发实现,名称来源于Nat与Agent的组合.类似frp项目,可以在局域网与互联网提供桥梁. 前提是你要有一台流量服务器并且有一个公网IP.如果没有,也可以找服 ...

  9. JavaScript 节流函数 Throttle 详解

    在浏览器 DOM 事件里面,有一些事件会随着用户的操作不间断触发.比如:重新调整浏览器窗口大小(resize),浏览器页面滚动(scroll),鼠标移动(mousemove).也就是说用户在触发这些浏 ...

  10. Python之Scripy框架

    为什么要用到cmd界面 --- 在这里操作的是Scripy框架的指令,不是Python代码 Parse --- Scripy的回调函数 fiddler --- 用于爬取JS存储数据的页面 项目: 1. ...