Codeforces Round #262 (Div. 2)解题报告
详见:http://robotcator.logdown.com/posts/221514-codeforces-round-262-div-2
1:A. Vasya and Socks http://codeforces.com/contest/460/problem/A
有n双袜子,每天穿一双然后扔掉。每隔m天买一双新袜子,问最多少天后没有袜子穿。
。
简单思维题:曾经不注重这方面的训练,结果做了比較久。这样的题自己边模拟边想。只是要多考虑trick
```c++
int main(){
int n, m;
long long ans = 0;
scanf("%d%d", &n, &m);
ans = n/m*m;
int tmp = n/m;
int left = tmp + n%m;
while(true){
ans += left/m*m;
tmp = left/m;
left = tmp+left%m;
if(left < m) break;
}
ans += left;
printf("%I64d\n", ans);
return 0;
}
```
2:B. Little Dima and Equation http://codeforces.com/contest/460/problem/B
题意:
```mathjax
求满足方程 x = b*S(x)^{a}+c方程解 \\
0 \lt x \lt 10^{9} ,\ \ 1 \le a \le 5 ,\ \ 1 \le b \le 10000 ,\ \ -10000 \le c \le 10000\\
s(x) 为x每位数的和
```
题解:假设简单枚举x肯定超时,可是我们能够换个角度,枚举S(x)。这样就简单多了。由于依据右边就能够算出x..
```c++
int get_sum(long long x){
int ans = 0;
while(x){
ans += x%10;
x /= 10;
}
return ans;
}
int main(){
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
long long ans[maxn];
int num = 0;
for(int i = 1; i <= 81; i ++){
long long tmp = 1;
for(int j = 1; j <= a; j ++) tmp *= i;
long long temp = b*tmp + c;
if(temp > 1e9) continue;
if(get_sum(temp) == i) {
ans[num++] = temp;
}
}
printf("%d\n", num);
if(num > 0) {
for(int i = 0; i < num; i ++)
printf("%I64d ", ans[i]);
printf("\n");
}
return 0;
}
```
3: C. Present http://codeforces.com/contest/460/problem/C
题意:有n朵花,给出初始高度。然后能够浇m次水,每次浇水能够浇连续的w朵,每次浇水后花都会长高1个单位。
问最后最矮的那朵花最大值为多少。
题解:刚開始想,首先要贪心选出最矮的花和其相邻的花浇水。然后是a_(i) 到a_(i+w-1)加一个单位。当时没想到什么好的办法。于是我就想用线段树维护区间最小值,每次找出最小值的下界。然后往右w多花都浇水。刚開始在求下界时想了好久,只是联系一维情况还是写出来了。
```c++
long long a[maxn];
long long mm[4*maxn];
int setv[4*maxn];
void build(int root, int l, int r){
int lc = 2*root, rc = 2*root+1;
if(l < r){
int mid = (l+r)/2;
build(2*root, l, mid);
build(2*root+1, mid+1, r);
mm[root] = min(mm[lc], mm[rc]);
}else{
mm[root] = a[l];
}
}
void pushdown(int root, int l, int r){
int lc = 2*root, rc = 2*root+1;
if(setv[root] > 0){
setv[lc] += setv[root];
setv[rc] += setv[root];
mm[lc] += setv[root];
mm[rc] += setv[root];
setv[root] = 0;
}
}
void pushup(int root, int l, int r){
int lc = 2*root, rc = 2*root+1;
mm[root] = min(mm[lc], mm[rc]);
}
void modify(int root, int l, int r, int x, int y, int s){
if(x <= l && r <= y){
mm[root] += s;
setv[root] += s;
}else{
pushdown(root, l, r);
int mid = (l+r)/2;
if(x <= mid) modify(2*root, l, mid, x, y, s);
if(y > mid) modify(2*root+1, mid+1, r, x, y, s);
pushup(root, l, r);
}
}
int minn;
void query(int root, int l, int r, int z){
int lc = 2*root, rc = 2*root+1 , mid = (l+r)/2;
if(l == r){
if(l < minn) minn = l;
}else{
pushdown(root, l, r);
if(mm[lc] <= z) query(lc, l, mid, z);
else query(rc, mid+1, r, z);
pushup(root, l, r);
}
}
void print(int root, int l, int r){
printf("%d %d\n", root, mm[root]);
if(l < r){
int mid = (l+r)/2;
print(2*root, l, mid);
print(2*root+1, mid+1, r);
}
}
int main(){
int w, n, m;
scanf("%d%d%d", &n, &m, &w);
for(int i = 1; i <= n; i ++)
scanf("%d", &a[i]);
memset(setv, 0, sizeof(setv));
build(1, 1, n);
// print(1, 1, n);
for(int i = 1; i <= m; i ++){
minn = inf;
query(1, 1, n, mm[1]);
//cout << minn << endl;
if(n-minn+1 < w) modify(1, 1, n, n-w+1, n, 1);
else modify(1, 1, n, minn, minn+w-1, 1);
}
printf("%I64d\n", mm[1]);
return 0;
}
```
昨晚上面两题时间还有15分钟左右,后两题没想出什么好办法。
下次再补上。
Codeforces Round #262 (Div. 2)解题报告的更多相关文章
- Codeforces Round #324 (Div. 2)解题报告
---恢复内容开始--- Codeforces Round #324 (Div. 2) Problem A 题目大意:给二个数n.t,求一个n位数能够被t整除,存在多组解时输出任意一组,不存在时输出“ ...
- Codeforces Round #382 (Div. 2) 解题报告
CF一如既往在深夜举行,我也一如既往在周三上午的C++课上进行了virtual participation.这次div2的题目除了E题都水的一塌糊涂,参赛时的E题最后也没有几个参赛者AC,排名又成为了 ...
- Codeforces Round #380 (Div. 2) 解题报告
第一次全程参加的CF比赛(虽然过了D题之后就开始干别的去了),人生第一次codeforces上分--(或许之前的比赛如果都参加全程也不会那么惨吧),终于回到了specialist的行列,感动~.虽然最 ...
- Codeforces Round #216 (Div. 2)解题报告
又范低级错误! 只做了两题!一道还被HACK了,囧! A:看了很久!应该是到语文题: 代码:#include<iostream> #include<]; ,m2=; ;i ...
- Codeforces Round #281 (Div. 2) 解题报告
题目地址:http://codeforces.com/contest/493 A题 写完后就交了,然后WA了,又读了一遍题,没找出错误后就开始搞B题了,后来回头重做的时候才发现,球员被红牌罚下场后还可 ...
- Codeforces Round #277 (Div. 2) 解题报告
题目地址:http://codeforces.com/contest/486 A题.Calculating Function 奇偶性判断,简单推导公式. #include<cstdio> ...
- Codeforces Round #276 (Div. 2) 解题报告
题目地址:http://codeforces.com/contest/485 A题.Factory 模拟.判断是否出现循环,如果出现,肯定不可能. 代码: #include<cstdio> ...
- Codeforces Round #350 (Div. 2)解题报告
codeforces 670A. Holidays 题目链接: http://codeforces.com/contest/670/problem/A 题意: A. Holidays On the p ...
- Codeforces Round #479 (Div. 3)解题报告
题目链接: http://codeforces.com/contest/977 A. Wrong Subtraction 题意 给定一个数x,求n次操作输出.操作规则:10的倍数则除10,否则减1 直 ...
随机推荐
- 限制MYSQL从服务器为只读状态
修改全局变量的方法有两种,第一种是修改配置文件,第二种是SQL语句设置全局变量的值.(可以参考:http://www.cnblogs.com/qlqwjy/p/8046592.html) 0.简介: ...
- 【Tomcat】如何注册Tomcat到Window Service服务
对于Web项目来说,经常用的服务器就是Tomcat.但是麻烦的事是,每次都得启动一下Tomcat服务.但是,如果把Tomcat的服务注册为Windows Service服务,就可以设置为开机自动启动, ...
- gdb 记录临时变量
gdb ./pgm set logging file log set logging on ... set logging off gdb ./pgm | tee -a log ... file a. ...
- android hook 框架 ADBI 如何实现so函数挂钩
上一篇 android 5 HOOK 技术研究之 ADBI 项目 02 分析了hijack.c, 这个文件编译为一个可执行程序 hijack, 该程序实现了向目标进程注入一个动态库的功能.这一篇继续研 ...
- kubernetes 搭建集群外部ip服务
nginx-pod.yaml apiVersion: v1 kind: Pod metadata: name: webapp labels: app: webapp spec: containers: ...
- Python-mysql索引
MySQL索引的概念 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.更通俗的说,数据库索引好比是一本书前面的目录,能加快数据库的查询 ...
- python爬虫beautifulsoup4系列2【转载】
本篇转自博客:上海-悠悠 原文地址:http://www.cnblogs.com/yoyoketang/tag/beautifulsoup4/ 前言 本篇详细介绍beautifulsoup4的功能,从 ...
- 【原创】SSIS-执行包任务调用子包且子包读取父包变量
背景: 有时候需要将一个个开发好的独立的ETL包串接起来形成一个独立而庞大的包,如:每家分公司都开发不同的ETL包,最后使用执行包任务来将这些分公司的包给串联起来形成一个独立而完整运行的ETL包,此时 ...
- Laravel实现用户名或密码登录
要实现用户名或密码登录,这就要用到强大的filter_var函数 该函数通过指定的过滤器过滤变量,可以判断输入值是否是数字.是否是字符串.是否是邮箱.是否是IP等等,不用写麻烦的正则 $type = ...
- ORA-17003. Invalid column index
sql里面有? 希望输入有参数 java程序里面没有给入参数