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. js 小数取整,js 小数向上取整,js小数向下取整

    js 小数取整,js 小数向上取整,js小数向下取整 >>>>>>>>>>>>>>>>>>& ...

  2. 如果我们的MCU调试不通过,我们该如何测试?(未完待续)

    我们拿到一款MCU,首先在选型的时候对他们都会有一个大概的了解,首先我们知道它多大与的FLASH,多大的RAM,是否与我们的项目适合,资源上是否足够,内频是否足够,运行速率能否达到标准,性能怎么样,比 ...

  3. 谷歌Volley网络框架讲解——HttpStack及其实现类

    前两篇已经对网络请求流程已经梳理了个大概,这次我们着重看一下HttpStack和它的其实现类.我们之前在Network篇讲过它仅有一个实现类,而今天我们讲的HttpStack有两个实现类. 其中Htt ...

  4. web基础----->servlet中得到请求的数据

    对tomcat的源码做一些分析,今天我们就开始servlet中的请求分析. form表单中的默认类型 一.在index.jsp中get请求: <form action="Paramet ...

  5. you-get 下载网络上的富媒体信息

    You-Get 乃一小小哒命令行程序,提供便利的方式,下载网络上的富媒体信息. 利用you-get下载这个网页的视频: $ you-get http://www.fsf.org/blogs/rms/2 ...

  6. android 软键盘回车键捕获

    EditText editText2 = (EditText)findViewById(R.id.txtTest2); editText2.setOnEditorActionListener(new ...

  7. windows下resin的配置部署与调试

    配置 从Resin官网(http://www.caucho.com)下载Resin解压后,启动Resin,运行resin根目录下的resin.exe文件,运行期间将出现下图所示的命令提示符窗口. 表示 ...

  8. shell 输出文件内容

    cat $filepath | while read line; do echo $line ; done #!/bin/bash #filepath=/opt/jenkins_home/worksp ...

  9. es navi map+++++++nginx logs-parser

    http://www.cnblogs.com/ahaii/p/7410421.html [2017-12-17T00:01:03+08:00] ["GET /user/comm/login? ...

  10. C# WinForm实现任务栏程序图标闪烁

    相信大家在用QQ的时候都会知道,你打开了QQ聊天窗口,如果窗口不是当前激活的窗口的话,收到QQ消息时,任务栏(不是托盘图标)上的图标会闪一下变成黄色(Win7默认主题下),用以通知用户有消息进来了,之 ...