2017 ACM-ICPC EC-Final ShangHai 东亚洲大陆-上海

时间:2022-04-02 23:56:07

比赛链接:传送门

Gym 101775A Chat Group(签到:待补)

Gym 101775B Scapegoat(待补)

Gym 101775C Traffic Light(贪心+思维)

思路:

需要证明两个点:

  ① 所有的N+1个S都是必须要走的,并且可以适当安排使得红灯只用等最长的一个。

  ② 上面这样的安排的答案是S0+S1+…+SN+max(Bi),而答案不可能比这个小,因为总有一种走法可以等到最长的那个红绿灯,如果其他的红绿灯也要等的话就比上面的方法大了。

#include <bits/stdc++.h>

using namespace std;
const int MAX_N = 1e3 + ; double S[MAX_N];
double A[MAX_N], B[MAX_N]; int main()
{
int T;
cin >> T;
for (int kase = ; kase <= T; kase++) {
int N;
cin >> N;
for (int i = ; i <= N; i++) {
scanf("%lf", S+i);
}
double _max = -;
for (int i = ; i <= N; i++) {
scanf("%lf%lf", A+i, B+i);
_max = max(_max, B[i]);
}
for (int i = ; i <= N; i++) {
_max += S[i];
}
printf("Case #%d: %.6lf\n", kase, _max);
}
return ;
}

Gym 101775J Straight Master(差分)

好久没见过差分了,早就把这种方法忘掉了。。。比赛的时候企图用贪心+松弛标记强行搓,结果一直WA。

思路:(下面的差分都指与前一个相邻的数的差)

  大于3的任意长度都可以由3、4、5的长度组成,所以长度大于3的子串都可以构成顺子。因此到第i个位置为止之前的所有正的差分都可以用于更新第i+3个位置及其之后的位置的负差分,如:

  0 1 2 3 4 4 4 1

  第4个位置为止正差分的和为4,第 4 + 3 = 7 个位置的差分为-3,则剩余的差分和sum为1。O(n)遍历维护差分和sum即可。

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int MAX_N = 2e5 + ; int N;
ll a[MAX_N];
ll k[MAX_N];
ll dis[MAX_N]; bool solve()
{
int ind = ;
if (dis[] < || dis[] < )
return false;
ll sum = ;
for (int i = ; i <= N+; i++){
sum += dis[i];
int j = i+;
if (j > N+)
break;
if (dis[j] < ) {
sum += dis[j];
dis[j] = ;
}
if (sum < )
break;
}
if (sum != )
return false;
return true;
} int main()
{
int T;
cin >> T;
for (int kase = ; kase <= T; kase++) {
cin >> N;
a[] = ;
for (int i = ; i <= N; i++) {
scanf("%lld", a+i);
k[i] = ;
dis[i] = a[i] - a[i-];
}
dis[N+] = - a[N];
bool ans = solve();
printf("Case #%d: ", kase);
if (ans)
puts("Yes");
else
puts("No");
}
return ;
}
/*
10
5
3 5 5 2 4
5
3 5 5 2 2
*/

Gym 101775K Downgrade(签到:简单模拟)

思路:

按题意模拟即可。要注意N是109,所以要判断一下状态是否会继续更新。

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
const int MAX_A = 1e5 + ; ll sum[MAX_A], L[MAX_A]; int main()
{
int T;
cin >> T;
for (int kase = ; kase <= T; kase++) {
ll A, B, N;
cin >> A >> B >> N;
sum[] = ;
for (int i = ; i <= A; i++) {
scanf("%lld", &L[i]);
sum[i] = sum[i-] + L[i];
}
ll ansa = A, ansb = B;
ll nxta, nxtb;
while (N--) {
int ind = lower_bound(sum+, sum+A+, ansa) - sum;
nxtb = ansa - sum[ind-];
nxta = ind;
if (nxta == ansa && nxtb == ansb)
break;
ansa = nxta;
ansb = nxtb;
}
printf("Case #%d: %lld-%lld\n",kase, ansa, ansb);
}
return ;
}
/*
3
3 2 2
2 2 2
3 1 2
1 1 1
3 1 1000000000
1 1 1
*/

Gym 101775L SOS(博弈+思维)

思路:

  博弈有两种题,思维题、SG函数题。不管是哪种,上来先打个表。。。其他的打完了表再说。。。打表发现N为大于5的所有奇数都是Panda,N为大于14的所有偶数都是Sheep,其他的为Draw。

  然后是证明:只要构造了S _ _ S的局面,然后跟对手一起把其他的空位填满,下一个填字符的人就必输了。根据N奇偶性,填满空位后面临S _ _ S的局面的人是不同的。所以有下面两种情况:

  ① N为奇数的时候:先手Panda要尽可能构造S _ _ S的局面,而Sheep要尽量避免被构造出S _ _ S的局面。当N = 7时,Panda第一次可以在Sheep的干扰下成功构造S _ _ S的局面:

  Panda: _ _ _ S _ _ _

  Sheep: _ _ _ S _ _ O

  Panda: S _ _ S _ _ O

  不管Sheep放在哪边,Panda都可以在另一边构造S _ _ S的局面。

  ② N为偶数的时候Panda要尽可能避免被Sheep构造出这样的局面,这时候就轮到Sheep来构造S _ _ S的局面了。由①可以发现,当剩下了7个空位时,可以把S放在中间,就能在Panda的干扰下构造S _ _ S的局面。但是有一点需要注意:就是N = 14时:

  Panda: _ _ _ _ _ _ O _ _ _ _ _ _ _

  Sheep: _ _ _ _ _ _ O _ _ _ S _ _ _

  Panda: _ _ _ _ _ _ O _ _ _ S _ _ O

  Sheep: _ _ _ _ _ _ O S _ _ S _ _ O

  Panda: _ _ _ _ _ S O S _ _ S _ _ O

  Game Over.

  Sheep放第二个S的时候如果是在O的旁边,那就崩盘了。所以N=14的时候Panda还是能反制Sheep的,但是当N = 16时Panda就无还手之力了:

  Panda: _ _ _ _ _ _ _ O _ _ _ _ _ _ _ _

  Sheep: _ _ _ _ _ _ _ O _ _ _ _ S _ _ _

  Panda: _ _ _ _ _ _ _ O _ _ _ _ S _ _ O

  Sheep: _ _ _ _ _ _ _ O _ S _ _ S _ _ O

#include <bits/stdc++.h>

using namespace std;
const int MAX_N = + ; int main()
{
int T;
cin >> T;
int kase = ;
while (T--) {
int N;
cin >> N;
printf("Case #%d: ", kase++);
if (N > && N % )
puts("Panda");
else if (N < )
puts("Draw");
else
puts("Sheep");
}
return ;
}

Gym 101775M World Cup(签到:待补)

2017 ACM-ICPC EC-Final ShangHai 东亚洲大陆-上海的更多相关文章

  1. 2017 ACM&sol;ICPC Asia Regional Shenyang Online spfa&plus;最长路

    transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 132768/1 ...

  2. 2017 ACM ICPC Asia Regional - Daejeon

    2017 ACM ICPC Asia Regional - Daejeon Problem A Broadcast Stations 题目描述:给出一棵树,每一个点有一个辐射距离\(p_i\)(待确定 ...

  3. 2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest

    2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest A - Arranging Wine 题目描述:有\(R\)个红箱和\(W\)个白箱,将这 ...

  4. ACM ICPC China final G Pandaria

    目录 ACM ICPC China final G Pandaria ACM ICPC China final G Pandaria 题意:给一张\(n\)个点\(m\)条边的无向图,\(c[i]\) ...

  5. 2017 ACM&sol;ICPC Shenyang Online SPFA&plus;无向图最长路

    transaction transaction transaction Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 132768/1 ...

  6. 2017 ACM&sol;ICPC Asia Regional Qingdao Online

    Apple Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submi ...

  7. HDU - 6215 2017 ACM&sol;ICPC Asia Regional Qingdao Online J - Brute Force Sorting

    Brute Force Sorting Time Limit: 1 Sec  Memory Limit: 128 MB 题目连接 http://acm.hdu.edu.cn/showproblem.p ...

  8. 2020 ICPC EC Final西安现场赛游记

    也不知道从何说起,也不知道会说些什么,最想表达的就是很累很累. 从第一天去的时候满怀希望,没什么感觉甚至还有一些兴奋.到后来一直在赶路,感觉很疲惫,热身赛的时候觉得马马虎虎,导致热身赛被咕.然后教练就 ...

  9. 2014 ACM&sol;ICPC Asia Regional Shanghai Online

    Tree http://acm.hdu.edu.cn/showproblem.php?pid=5044 树链剖分,区间更新的时候要用on的左++右--的标记方法,要手动扩栈,用c++交,综合以上的条件 ...

随机推荐

  1. Mysql hql字符串字段中是否包含某个字符串,用 find&lowbar;in&lowbar;set

    有这样一个需求,在Mysql数据库字符串字段(权限)中,有范围在 1 到 N 之间代表不同权限的值,分别被','分开,现在要取出具有某权限的所有成员列表. 创建表: 1 CREATE TABLE us ...

  2. 博客后台迁移至i&period;cnblogs&period;com及小经验分享

    大家好!我们已经将博客后台从原来的 www.cnblogs.com/博客地址名/admin/ 迁移至独立的二级域名 i.cnblogs.com.如果您发现任何问题,麻烦您立即向我们反馈. 虽然这次迁移 ...

  3. AndroidStudio KeyMap

  4. Spring配置优化&lowbar;构造器注入&plus;自动装配

    2014-05-16 09:01:08上课内容: 依赖注入的第二种注入方式:构造器注入 创建带参数的构造方法,参数类型为注入类的类型 项目要先添加Spring支持: package com; publ ...

  5. MFC拖拽、选择目录、遍历文件

    1.选择目录 void CDecryptFileDlg::OnBnClickedSel() { std::wstring selectedDir; WCHAR szDir[MAX_PATH]; Zer ...

  6. oracle 用户 权限

    一. 概述 与权限,角色相关的视图大概有下面这些: DBA_SYS_PRIVS: 查询某个用户所拥有的系统权限 USER_SYS_PRIVS:   当前用户所拥有的系统权限 SESSION_PRIVS ...

  7. HDU 2276 Kiki &amp&semi; Little Kiki 2&lpar;矩阵位运算&rpar;

    Kiki & Little Kiki 2 转载自:点这里 [题目链接]Kiki & Little Kiki 2 [题目类型]矩阵位运算 &题意: 一排灯,开关状态已知,每过一秒 ...

  8. CISC&comma; RISC 探究

    iPhone Simulator  Intel iPhone  ARM 区别很大, Intel目前的处理器主要为IA架构, IA-32即俗称x86,包括桌面处理器系列(赛扬,奔腾,酷睿等)以及服务器处 ...

  9. 【Vue】hello world

    参考链接:http://www.jianshu.com/p/5ba253651c3b 1.Vue 是一个前端框架,特点是数据绑定.组件化 如果你之前已经习惯了用jQuery操作DOM,学习Vue.js ...

  10. FIS构建工具学习(一)

    一.FIS是什么 在做项目的时候,用到部门内部前端人员开发的fiskit构建工具,经过这次项目基本把它的配置弄清楚了,fiskit构建工具是基于FIS的,所以自己也准备学习FIS,以便更好的理解. 后 ...