Link:

Codeforces #211 传送门

一套非常简单的题目,但很多细节都是错了一次才能发现啊……

还是不能养成OJ依赖症,交之前先多想想corner case!!!

A:

模拟,要特判0啊

#include <bits/stdc++.h>

using namespace std;
#define X first
#define Y second
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
int n;
void solve(int x)
{
if(x<) printf("O-|");
else printf("-O|");
if(x>=) x-=;
for(int i=;i<=x;i++) printf("O");
printf("-");
for(int i=;i<=-x;i++) printf("O");
puts("");
} int main()
{
scanf("%d",&n);
if(!n) solve();//特判0!
while(n) solve(n%),n/=;
return ;
}

Problem A

B:

模拟,范围是$1.5*1e5$!!!仔细读题啊

#include <bits/stdc++.h>

using namespace std;
#define X first
#define Y second
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
int n,k,cur,dat[];P res;
//范围是1.5*1e5!
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++) scanf("%d",&dat[i]);
for(int i=;i<=k;i++) cur+=dat[i];
res.X=;res.Y=cur;
for(int i=;i<=n-k;i++)
{
cur-=dat[i];cur+=dat[i+k];
if(res.Y>cur) res.Y=cur,res.X=i+;
}
printf("%d",res.X);
return ;
}

Problem B

C:

string.erase和vector.erase一样,尽量不要用

期望复杂度是$O(n)$级别的

此题为了支持删除我还手写了个链表……

其实不用两次扫描+删除+输出,只要扫一遍,边扫边判断当前字母能否加入答案就行了

#include <bits/stdc++.h>

using namespace std;
#define X first
#define Y second
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
const int MAXN=2e5+;
char s[MAXN];int len,k,nxt[MAXN]; int main()
{
scanf("%s",s+);len=strlen(s+);
for(int i=;i<=len;i++) nxt[i]=i+;
k=;nxt[len+]=len+;
while(nxt[nxt[k]]!=len+)
if(s[k]==s[nxt[k]]&&s[nxt[k]]==s[nxt[nxt[k]]])
nxt[k]=nxt[nxt[k]];
else k=nxt[k];
k=;
while(nxt[nxt[nxt[k]]]!=len+)
if(s[k]==s[nxt[k]]&&s[nxt[nxt[k]]]==s[nxt[nxt[nxt[k]]]])
nxt[nxt[k]]=nxt[nxt[nxt[k]]];
else k=nxt[k];
k=;
while(k!=len+) printf("%c",s[k]),k=nxt[k];
return ;
}

Problem C

D:

答案的可行性具有单调性,明显可以二分

由于使用自己的钱数为$a-\sum p_i$,和哪些人参与购买无关

因此每次判断时可以采取贪心的策略

1、选择拥有钱数最多的$k$个人和价格最低的$k$个车购买

2、为了使额外挪用的钱数不超过$a$,人和车从小到大排序后一一对应明显是最优的选择

最后要特判$\sum p_i\le a$的情况,此时直接减会出现负数,因此要用最终答案和0取max!!!

#include <bits/stdc++.h>

using namespace std;
#define X first
#define Y second
typedef long long ll;
typedef double db;
typedef pair<int,int> P;
const int MAXN=1e5+;
int n,m,a,p[MAXN],b[MAXN];ll pre[MAXN]; bool check(int x)
{
ll sum=;
for(int i=;i<=x;i++)
if(b[n-x+i]<p[i]) sum+=p[i]-b[n-x+i];
return sum<=a;
} int main()
{
scanf("%d%d%d",&n,&m,&a);
for(int i=;i<=n;i++) scanf("%d",&b[i]);
for(int i=;i<=m;i++) scanf("%d",&p[i]);
sort(b+,b+n+);sort(p+,p+m+);
for(int i=;i<=m;i++) pre[i]=pre[i-]+p[i]; int l=,r=min(m,n);
while(l<=r)
{
int mid=(l+r)>>;
if(check(mid)) l=mid+;
else r=mid-;
}//答案一定要记得取MAX!
printf("%d %d",r,max(pre[r]-a,0ll));
return ;
}

Problem D

E:

貌似题解出锅了……

后面再填吧,其实就是一个预处理+暴力枚举

[Codeforces #211] Tutorial的更多相关文章

  1. [Codeforces #172] Tutorial

    Link: Codeforces #172 传送门 A: 一眼看上去分两类就可以了 1.每个矩形只有两条边相交,重合的形状为菱形 2.每个矩形四条边都有相交 对于情况1答案为$h*h/sin(a)$ ...

  2. [Codeforces #514] Tutorial

    Link: Codeforces #514 传送门 很简单的一场比赛打崩了也是菜得令人无话可说…… D: 一眼二分,发现对于固定的半径和点,能包含该点的圆的圆心一定在一个区间内,求出区间判断即可 此题 ...

  3. [Codeforces #210] Tutorial

    Link: Codeforces #210 传送门 A: 贪心,对每个值都取最大值,不会有其他解使答案变优 #include <bits/stdc++.h> using namespace ...

  4. [Codeforces #196] Tutorial

    Link: Codeforces #196 传送门 A: 枚举 #include <bits/stdc++.h> using namespace std; #define X first ...

  5. [Codeforces #174] Tutorial

    Link: Codeforces #174 传送门 A: 求原根的个数,有一条性质是原根个数为$\phi(\phi(n))$,多了一个不会证的性质 如果要确定哪些是原根的话还是要枚举,不过对于每个数不 ...

  6. [Codeforces #190] Tutorial

    Link: Codeforces #190 传送门 A: 明显答案为$n+m-1$且能构造出来 #include <bits/stdc++.h> using namespace std; ...

  7. [Codeforces #192] Tutorial

    Link: Codeforces #192 传送门 前两天由于食物中毒现在还要每天挂一天的水 只好晚上回来随便找套题做做找找感觉了o(╯□╰)o A: 看到直接大力模拟了 但有一个更简便的方法,复杂度 ...

  8. [Codeforces #201] Tutorial

    Link: 传送门 代码量很少的一套思维题 A: 试一试发现最后状态一定是所有$min,max$间$gcd$的倍数 直接判断数量的奇偶性即可 #include <bits/stdc++.h> ...

  9. [Codeforces #188] Tutorial

    Link: Codeoforces #188 传送门 A: 先全转为正数,后面就全是指数级增长了 #include <bits/stdc++.h> using namespace std; ...

随机推荐

  1. bootstrap框架的搭建

    bootstrap框架 Bootstrap,来自 Twitter,是目前最受欢迎的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快 ...

  2. Mac 上真机调试cocos2d-x-3.16的test程序

    文章比较长,一个算是新手又不是新手的程序员的解决过程. 一 xcode中打开项目 首先,下载完成cocos2d-x-3.16之后,解压,然后在根目录build目录下双击cocos2d_tests.xc ...

  3. httpd -v command not found

    使用 find / -name "apachectl"查找文件目录下执行 ./apachectl -v

  4. 【Sqlite3】sqlite_sequence表(转)

    sqlite_sequence表也是SQLite的系统表.该表用来保存其他表的RowID的最大值.数据库被创建时,sqlite_sequence表会被自动创建.该表包括两列.第一列为name,用来存储 ...

  5. 不要用Serverzoo 提供的CloudLinux 的五大原因 Linode 強大VPS 資源為你解密

    不要用Serverzoo 提供的CloudLinux 的五大原因 Linode 強大VPS 資源為你解密 https://www.williamformosa.com/cloud-linux/

  6. 【2017 Multi-University Training Contest - Team 1】小结

    啊人生第一次打多校被虐 紧随yql的脚步做题. 1001: 可以发现我们平时表示的数都是$x*log_{10}{10}$,所以类似于做一个换底公式就可以了. -1是一个烟雾弹,因为小学生都知道2^n不 ...

  7. java多线程以及Android多线程

    Java 多线程 线程和进程的区别 线程和进程的本质:由CPU进行调度的并发式执行任务,多个任务被快速轮换执行,使得宏观上具有多个线程或者进程同时执行的效果. 进程:在操作系统来说,一个运行的程序或者 ...

  8. Redis错误:jedis.exceptions.JedisDataException: ERR Client sent AUTH, but no password is set

    原文链接:http://blog.csdn.net/rchm8519/article/details/48347797 redis.clients.util.Pool.getResource(Pool ...

  9. php上传文件限制

    客户端限制(客户端限制在实际上是无法阻止上传): 通过表单隐藏域限制上传文件的最大值 <input type=’hidden’ name=’MAX_FILE_SIZE’ value=’字节数’ ...

  10. javascript定义对象的方式

    javascript定义对象的方式(javascript中没有类,只有对象)1)基于已有对象扩充属性和方法(弊端:每次创建都与要重新定义属性方法) var object = new Object(); ...