CodeForces Round #298 Div.2
A. Exam
果然,并没有3分钟秒掉水题的能力,=_=||
n <= 4的时候特判。n >= 5的时候将奇数和偶数分开输出即可保证相邻的两数不处在相邻的位置。
#include <bits/stdc++.h>
using namespace std; int main()
{
int n;
cin >> n;
if(n <= ) puts("1\n1");
else if(n == ) puts("2\n1 3\n");
else if(n == ) puts("4\n2 4 1 3\n");
else
{
printf("%d\n", n);
vector<int> ans;
for(int i = ; i <= n; i+=) ans.push_back(i);
for(int i = ; i <= n; i+=) ans.push_back(i);
int sz = ans.size();
for(int i = ; i < sz; i++)
{
if(i) printf(" ");
printf("%d", ans[i]);
}
puts("");
} return ;
}
代码君
B. Covered Path (贪心)
第一秒的速度为v1,第t秒的速度为v2.
因为d很小,对于中间的每一秒,从d到-d枚举下一秒速度的变化量,只要保证在剩下的时间内能够减速到v2,这个速度变化量就是合法的。
#include <bits/stdc++.h> using namespace std; int main()
{
int v1, v2, t, d;
cin >> v1 >> v2 >> t >> d; vector<int> v; v.push_back(v1);
int now = v1; //当前车速
for(int i = ; i <= t-; i++)
{
int dd;
for(dd = d; dd >= -d; dd--)
if(now + dd <= (t - i) * d + v2)
break;
now += dd;
v.push_back(now);
}
v.push_back(v2);
int s = ;
for(int i = ; i < v.size(); i++) s += v[i];
printf("%d\n", s); return ;
}
代码君
C. Polycarpus' Dice
这n个骰子的点数之和为A。
对于某一个骰子,这个骰子的点数不能过大,因为这样可能使得其他骰子点数出现0的情况。
这个骰子点数也不能过小,因为可能剩余的骰子全部置为最大点也不能使总点数为A。
从这两个方面考虑,就能计算出每个骰子不可能出现的点数有多少种。
#include <iostream>
#include <bits/stdc++.h>
using namespace std; typedef long long LL; const int maxn = + ;
LL a[maxn]; int main()
{
LL n, A, s = ;
cin >> n >> A;
for(int i = ; i < n; i++) { scanf("%I64d", &a[i]); s += a[i]; }
for(int i = ; i < n; i++)
{
if(i) printf(" ");
LL ans = ;
ans += max(0LL, a[i] + n - - A);
LL ss = s - a[i];
ans += max(0LL, A - ss - );
printf("%I64d", ans);
}
puts(""); return ;
}
代码君
D. Handshakes (贪心 模拟 链表)
要和k个人握手的人可能有多个,所以我们用一个链表把他们连接起来。
以第二个样例为例:
9
0 2 3 4 1 1 0 2 2
和0个人握手的人有:1 7
和1个人握手的人有:5 6
和2个人握手的人有:2 8 9
和3个人握手的人有:3
和4个人握手的人有:4
这样我们可以先使7 6 9 3 4入场,然后没有人要和5个人握手,但是如果这五个人有三个人结成一队的话,那么8入场会和两个人握手。
这样还剩3个人,发现没有人要和3个人握手,于是这3个人结成一队。
1 5 2依次入场。
#include <cstdio> const int maxn = + ; int repr[maxn], next[maxn], a[maxn]; int main()
{
//freopen("in.txt", "r", stdin); int n; scanf("%d", &n);
for(int id = ; id <= n; id++)
{//id为和x个人握手的链表的编号
int x; scanf("%d", &x);
next[id] = repr[x]; //将id插入和x个人握手的链表的头部
repr[x] = id; //修改头指针
} int p = , now = ;
while(repr[now])
{
a[p++] = repr[now];
repr[now] = next[repr[now]]; //这个人已入场,修改头指针,相当于将其从链表中删除
now++;
while(repr[now] == && now >= ) now -= ;
}
if(p == n)
{
puts("Possible");
for(int i = ; i < n-; i++) printf("%d ", a[i]);
printf("%d\n", a[n-]);
}
else puts("Impossible"); return ;
}
代码君
CodeForces Round #298 Div.2的更多相关文章
- Codeforces Round #298 (Div. 2) A、B、C题
题目链接:Codeforces Round #298 (Div. 2) A. Exam An exam for n students will take place in a long and nar ...
- Codeforces Round #298 (Div. 2) E. Berland Local Positioning System 构造
E. Berland Local Positioning System Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.c ...
- Codeforces Round #298 (Div. 2) D. Handshakes 构造
D. Handshakes Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/534/problem ...
- Codeforces Round #298 (Div. 2) C. Polycarpus' Dice 数学
C. Polycarpus' Dice Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/534/p ...
- Codeforces Round #298 (Div. 2) B. Covered Path 物理题/暴力枚举
B. Covered Path Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/534/probl ...
- Codeforces Round #298 (Div. 2) A. Exam 构造
A. Exam Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/534/problem/A Des ...
- Codeforces Round #298 (Div. 2) B. Covered Path
题目大意: 一辆车,每秒内的速度恒定...第I秒到第I+1秒的速度变化不超过D.初始速度为V1,末速度为V2,经过时间t,问最远能走多远. 分析 开始的时候想麻烦了.讨论了各种情况.后来发现每个时刻的 ...
- Codeforces Round #298 (Div. 2)--D. Handshakes
#include <stdio.h> #include <algorithm> #include <set> using namespace std; #defin ...
- Codeforces Round #298 (Div. 2)A B C D
A. Exam time limit per test 1 second memory limit per test 256 megabytes input standard input output ...
随机推荐
- asp.net MVC3 + JQuery 的ajax简单使用
一直都没有使用过JQuery,更没使用过JQuery的ajax支持带来的方便,今天试了一下,真是减少了很多工作量,使用方法也比较简单 这里先记下来,以后使用时可以再拿着用. 本应用中,本来是准备使用长 ...
- linux yum 命令 详解
linux yum命令详解 yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能 ...
- ZOJ 3555 Ice Climber(dp)
晦涩的题意+各种傻逼害我调了那么久,实际上题目就是一个dp[i][j],dp[i][j]表示第i层第j个最少需要多少时间,当我们去更新dp[i][j]的时候,考虑的是从第i+1层的某一个dp[i+1] ...
- POJ 1274
#include<iostream> #include<stdio.h> #include <string.h> #include <vector> # ...
- 深入Java集合学习系列:HashMap的实现原理--转
原文出自:http://www.cnblogs.com/xwdreamer/archive/2012/06/03/2532832.html 1. HashMap概述: HashMap是基于哈希表的Ma ...
- java volatile 和Transient 关键字
java关键字volatile volatile修饰的成员变量在每次被线程访问时,都强迫从主内存中重读该成员变量的值.而且,当成员变量发生变化时,强迫线程将变化值回写到主内存.这样在任何时刻,两个不同 ...
- C#程序大打开
打开一个已经存在的工程: 1.用vs打开(.sln)解决方案的文件.(若提示VS提示版本不一致,可用方法二) 2.删除(.sln)的文件.打开项目(.csproj) 文件或 (.vbproj) 文件, ...
- iOS iphone屏幕分析(岂止而大)
在写本文前,我必须介绍几点内容:第一点:屏幕上面显示的内容多少和屏幕的尺寸大小无关第二点:屏幕上面显示的内容多少和分辨率完全无关第三点:屏幕上面显示的内容多少和屏幕尺寸.屏幕分辨率.PPI等都是无关的 ...
- ThreadLocal,ThreadLocalMap,Thread 的相互关系
1.ThreadLocal. 真正关键的类是它的内部类ThreadLocalMap,ThreadLocal 基本上相当于一个代理,或者算是Facade模式的应用,还没想清楚这种设计的妙处.(经过分析, ...
- Oracle ->> 连续聚合
select id, grp_factor, sum (id) over( partition by grp_factor order by id rows between unbounded pre ...