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. 浏览器Chrome对WebGL支持判断

    1.开启方式: 第一种:打开cmd,切换到Chorme的安装目录,敲入chrome.exe --enable -webgl,回车就会打开一个chrome浏览器窗口: 第二种:找到Chrome浏览器的快 ...

  2. 新唐ARM9之NUC972学习历程之系统的搭建和BSP包的使用

    说到嵌入式,我们首先想到的,就是它的复杂程度,LINUX,BSP,UBOOT,交叉编译,寄存器配置,等等一系列的问题,甚至有的时候我们对此一头雾水,很是头疼,不过我们今天要说的就是关于NUC972的一 ...

  3. 一个java源文件中是否可以包括多个类(非内部类)?有何限制?

    可以有多个类,但只能有一个public的类,并且public的类名必须与文件名一致.

  4. 上传图片Security Error

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAjIAAACXCAIAAACA4CZ6AAAgAElEQVR4nOy96Xcd13UnugFSUrJer/ ...

  5. poj_1204 Trie图

    题目大意 给出一个RxC的字符组成的puzzle,中间可以从左向右,从右到左,从上到下,从下到上,从左上到右下,从右下到左上,从左下到右上,从右上到左下,八个方向进行查找字符串.     给出M个字符 ...

  6. poj_3630 trie树

    题目大意 给定一系列电话号码,查看他们之间是否有i,j满足,号码i是号码j的前缀子串. 题目分析 典型的trie树结构.直接使用trie树即可.但是需要注意,若使用指针形式的trie树,则在大数据量下 ...

  7. 从一次渗透谈到linux如何反弹shell

    零.绪论 背景: ThinkPHP框架的--> 找到一个OS命令注入(很简单的Burp可以直接扫出来的那种):页面配置系统默认网关处. 一.渗透过程 1.首先看了一下,没有回显. 2.用ceye ...

  8. c# WinForm 边框阴影窗体

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  9. java如何使用base64生成图片文件

    import org.apache.commons.codec.binary.Base64; public static void decodeFile(String base64Str,File f ...

  10. OC开发_Storyboard——iPad开发

    iPad开发(Universal Applications) 一.iPad 1.判断是否在iPad上 BOOL iPad = ([[UIDevice currentDevice] userInterf ...