A:Chat Group

题意:给出一个n, k 计算C(n, k) -> C(n,n) 的和

思路:k只有1e5 反过来想,用总的(2^ n) 减去 C(n, 0) -> C(n, k - 1), 预处理逆元,

 #include <bits/stdc++.h>

 using namespace std;

 #define ll long long
#define N 100010 const ll MOD = (ll)1e9 + ; int t;
ll n, k;
ll inv[N]; inline void Init()
{
inv[] = ;
for (int i = ; i < N; ++i) inv[i] = inv[MOD % i] * (MOD - MOD / i) % MOD;
} inline ll qpow(ll x, ll n)
{
ll base = x;
ll ans = ;
while (n)
{
if (n & ) ans = (ans * base) % MOD;
base = base * base % MOD;
n >>= ;
}
return ans;
} int main()
{
Init();
scanf("%d", &t);
for (int kase = ; kase <= t; ++kase)
{
scanf("%lld%lld", &n, &k);
printf("Case #%d: ", kase);
if (k > n)
{
puts("");
continue;
}
ll ans = qpow(, n);
ll tmp = ;
for (int i = ; i < k; ++i)
{
ans = (ans - tmp + MOD) % MOD;
tmp = tmp * (n - i) % MOD * inv[i + ] % MOD;
}
printf("%lld\n", ans);
}
return ;
}

B:Scapegoat

题意: 给出n件错误,每件错误的严重程度是ai, 有m只替罪羊,每只替罪羊只能承担一件事情的责任,如果多只替罪羊承担一件事情的责任,那么就是这多只替罪羊平均分担这件事情的责任,求每只替罪羊承担责任的方差

思路:当替罪羊总量固定的时候,那么平均值也是固定的,那么我们可以根据减少量排序,每次贪心取最大

 #include <bits/stdc++.h>
using namespace std; #define N 200010 double ave; struct node
{
int num;
double tot, cur, dis, gap;
inline bool operator < (const node &r) const
{
return gap < r.gap;
}
inline node() {}
inline node(double _tot, int _num, double _cur)
{
tot = _tot; num = _num; cur = _cur;
dis = (cur - ave) * (cur - ave) * num;
gap = dis - ((tot / (num + ) - ave) * (tot / (num + ) - ave)) * (num + );
}
}; int t, n, m;
double arr[N]; inline void Run()
{
scanf("%d", &t);
for (int kase = ; kase <= t; ++kase)
{
printf("Case #%d: ", kase);
scanf("%d%d", &n, &m);
ave = ;
for (int i = ; i <= n; ++i) scanf("%lf", arr + i), ave += arr[i]; ave /= m;
priority_queue <node> q;
for (int i = ; i <= n; ++i)
q.emplace(arr[i], , arr[i]);
for (int i = n + ; i <= m; ++i)
{
node top = q.top(); q.pop();
q.emplace(top.tot, top.num + , top.tot / (top.num + ));
}
double ans = ;
for (int i = ; i <= n; ++i)
{
node top = q.top(); q.pop();
ans += top.dis;
}
ans /= m;
printf("%.10f\n", ans);
}
} int main()
{
#ifdef LOCAL
freopen("Test.in", "r", stdin);
#endif Run(); return ;
}

C:Traffic Light

题意:给出两个红绿灯之间的时间以及每个红绿灯的红扥和绿灯时间,求最小的最坏情况。

思路:当经过一个红灯的时候可以发现,可以通过调整OFFi来保证接下来都是绿灯,所以答案就是最大的红灯时间和路程

 #include<bits/stdc++.h>

 using namespace std;

 #define N 1010

 double sum;
int n; int main()
{
int t;
scanf("%d", &t);
for(int cas = ; cas <= t; ++cas)
{
scanf("%d", &n);
sum = ;
for(int i = ; i <= n; ++i)
{
double x;
scanf("%lf", &x);
sum += x;
}
double tmp = ;
for(int i = ; i <= n; ++i)
{
double a, b;
scanf("%lf %lf", &a, &b);
tmp = max(tmp, b);
}
sum += tmp;
printf("Case #%d: %.10f\n", cas, sum);
}
return ;
}

D:Mr. Panda and Geometric Sequence

留坑。

E:Snakebird

留坑。

F:Good Number

留坑。

G:Image Recognition

留坑。

H:Mr. Panda and Birthday Song

留坑。

I:PLAYERUNKNOWN'S BATTLEGROUNDS

留坑。

J:Straight Master

题意:给出n种牌的数量,你可以打出长度为3,4,5的顺子,问最后能否打完。

思路:345可以拼凑出所有大于等于3的数字。先构造出差分约束,将每一个正值贪心的与最近的负值匹配,贪心扫一遍即可

 #include<bits/stdc++.h>

 using namespace std;

 const int maxn = 2e5 + ;

 int n;
int arr[maxn];
int brr[maxn]; int main()
{
int t;
scanf("%d", &t);
for (int cas = ; cas <= t; ++cas)
{
scanf("%d", &n);
for (int i = ; i <= n; ++i)
{
scanf("%d", arr + i);
}
arr[n + ] = ;
for (int i = ; i <= n + ; ++i)
{
brr[i] = arr[i] - arr[i - ];
}
bool flag = true;
int now = ;
for (int i = ; i <= n + ; ++i)
{
while (brr[i] < && now <= i - )
{
if (brr[now] + brr[i] >= )
{
brr[now] += brr[i];
brr[i] = ;
}
else
{
brr[i] += brr[now];
brr[now] = ;
}
if (brr[i] < ) ++now;
}
if (brr[i] < )
{
flag = false;
break;
}
}
printf("Case #%d: %s\n", cas, flag ? "Yes" : "No");
}
return ;
}

K:Downgrade

题意:给出一个游戏里面,有主等级以及副等级,如果有一天没有打,那么它的等级就将主等级当成副等级,副等级满了可以生主等级

思路:虽然n很大,然后a只有1e5,可以知道最多下降到1-1就不会再变,然后二分找对应的主等级

 #include<bits/stdc++.h>

 using namespace std;

 const int N = +;
long long la[N],f[N];
int main() {
long long t,p,i,j,l,r,k;
long long a,b,x,y,n,m;
scanf("%lld",&t);
p=;
f[]=;
while (t--) {
++p;
scanf("%lld%lld%lld",&a,&b,&n);
for (i=;i<=a;++i) {
scanf("%lld",&la[i]);
f[i]=f[i-]+la[i];
}
x=a; y=b;
while (n--)
{
long long prex = x,prey = y;
int pos = lower_bound(f + , f + + a, x) - f;
y = x - f[pos - ]; x = pos;
if(x == prex && y == prey) break;
if(x == && y == ) break;
}
printf("Case #%lld: %lld-%lld\n",p,x,y);
}
return ;
}

L:SOS

题意:给出n个格子,两个人轮流放'S' 或者 'O' 如果一个人放了之后,棋盘上出现"SOS" 它就赢了,Panda先手,求胜负关系或者平局

思路:有一个规律,当出现S__S 这样的局面的时候,谁第一步走进这个坑,谁就输了

找一下规律,16(lts)是一个分界点

 #include <bits/stdc++.h>

 using namespace std;

 int t, n;

 int main()
{
scanf("%d", &t);
int d = ;
for (int kase = ; kase <= t; ++kase)
{
printf("Case #%d: ", kase);
scanf("%d", &n);
if (n < )
puts("Draw");
else if (n < d)
puts((n & ) ? "Panda" : "Draw");
else
puts((n & ) ? "Panda" : "Sheep");
}
return ;
}

M:World Cup

水。

 #include <bits/stdc++.h>

 using namespace std;

 #define ll long long

 int t, n;
ll price[]; int main()
{
scanf("%d", &t);
for (int kase = ; kase <= t; ++kase)
{
for (int i = ; i <= ; ++i) scanf("%lld", price + i);
scanf("%d", &n);
ll ans = ;
for (int i = , num; i <= n; ++i)
{
scanf("%d", &num);
if (num >= && num <= ) ans += price[];
else if (num >= && num <= ) ans += price[];
else if (num >= && num <= ) ans += price[];
else if (num >= && num <= ) ans += price[];
else ans += price[];
}
printf("Case #%d: %lld\n", kase, ans * );
}
return ;
}

2017-2018 ACM-ICPC Asia East Continent League Final (ECL-Final 2017) Solution的更多相关文章

  1. The 2017 ACM-ICPC Asia East Continent League Final记录

    首先感谢tyz学弟的麻麻-给我们弄到了名额- 然后就开始了ACM ECLFinal的玩耍,A*仙人掌可是立了flag要好好打的- 试机赛好像就全是GCJ kickstart的原题,然后AK了但是由于一 ...

  2. Codeforces Gym 101775D Mr. Panda and Geometric Sequence(2017-2018 ACM-ICPC Asia East Continent League Final,D题,枚举剪枝)

    题目链接  ECL-Final 2017 Problem D 题意  给定$2*10^{5}$组询问,每个询问求$l$到$r$之间有多少个符合条件的数 如果一个数小于等于$10^{15}$, 并且能被 ...

  3. 训练20191005 2017-2018 ACM-ICPC Asia East Continent League Final

    A 签到 M 签到 K 读懂后签到 L 博弈论 [引理]出现SXXS结构时后手必胜. 很容易发现n为奇数时后手不可能胜利,n为偶数时先手不可能胜利.n≤6时一定平局,n≥7时先手有可能胜利,n≥16时 ...

  4. 2017 ACM/ICPC Asia Regional Shenyang Online spfa+最长路

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

  5. 2017 ACM ICPC Asia Regional - Daejeon

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

  6. 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\)个白箱,将这 ...

  7. 2017 ACM/ICPC Asia Regional Qingdao Online

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

  8. 2016 ACM/ICPC Asia Regional Shenyang Online 1009/HDU 5900 区间dp

    QSC and Master Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) ...

  9. hdu 5444 Elven Postman(二叉树)——2015 ACM/ICPC Asia Regional Changchun Online

    Problem Description Elves are very peculiar creatures. As we all know, they can live for a very long ...

随机推荐

  1. python2.0_s12_day9_协程&Gevent协程

    Python之路,Day9 - 异步IO\数据库\队列\缓存 本节内容 Gevent协程 Select\Poll\Epoll异步IO与事件驱动 Python连接Mysql数据库操作 协程 1.协程,又 ...

  2. List自定义排序

    List自定义排序我习惯根据Collections.sort重载方法来实现,下面我只实现自己习惯方式.还有一种就是实现Comparable接口. 挺简单的,直接上代码吧. package com.so ...

  3. 【RF库Collections测试】Dictionary Should Not Contain Value

    Name:Dictionary Should Not Contain ValueSource:Collections <test library>Arguments:[ dictionar ...

  4. Redis(八)-- Redis分布式锁实现

    一.使用分布式锁要满足的几个条件 系统是一个分布式系统(关键是分布式,单机的可以使用ReentrantLock或者synchronized代码块来实现) 共享资源(各个系统访问同一个资源,资源的载体可 ...

  5. EditPlus详解

    如何让EditPlus支持LUA教程是本文要介绍的内容,这次主要介绍一下学习Lua之前的准备工作.关于在EditPlus中实现lua的安装,具体内容来看本文详解. (1) 下载Lua安装包,最新版本是 ...

  6. ExtJS6的中sencha cmd中自动创建案例项目代码分析

    在之前的博文中,我们按照sencha cmd的指点,在自己win7虚拟机上创建了一个案例项目,相当于创建了一个固定格式的文档目录结构,然后里面自动创建了一系列js代码.这是使用sencha cmd自动 ...

  7. Delphi数据类型转换

    [转]Delphi数据类型转换 DateTimeToFileDate        将DELPHI的日期格式转换为DOS的日期格式 DateTimeToStr              将日期时间格式 ...

  8. flag - 待浏览学习网站

    学习:gulp+jade(pug)+sass 待浏览网站如下:http://www.ydcss.com/archives/18#lesson1 https://nodejs.org/en/ https ...

  9. kubernetes创建yaml,pod服务一直处于 ContainerCreating状态的原因查找与解决

    最近刚刚入手研究kubernetes,运行容器的时候,发现一直处于ContainerCreating状态,悲了个催,刚入手就遇到了点麻烦,下面来讲讲如何查找问题及解决的 运行容器命令: kubectl ...

  10. DNS隧道通信的检测

    DNS隧道通信的检测 DNS 隧道通信 DNS 隧道通信是C&C常用的通信方式,一般常用的编码方式Base64,Binary编码,NetBios编码等,Hex编码等.且请求的Type一般都是t ...