getchar

Codeforces Round #496 (Div. 3) C D E1 E2 F

丶灬走出姿态 提交于 2020-01-31 21:54:48
Codeforces Round #496 (Div. 3) Problem A 题意: 思路: Problem B 题意: 思路: Problem C 题意: 给出n个数,询问最少删除几个数使得剩下的每一个数总能找到对应的另一个数使得两个数的和是 2 x 2^x 2 x (x为非负整数) 思路: 枚举每个数形成 2 0 2^0 2 0 ~小于2*1e9的最大的 2 x 2^x 2 x 所需的另一个数,只要存在当前的数就是OK的,当然 要排除自身是 2 x 2^x 2 x 然后找到的另一半也是 2 x 2^x 2 x 并且是自己的情况 # include <bits/stdc++.h> using namespace std ; # define ll long long # define for1(i,a,b) for (int i=(a);i<=(b);i++) # define for0(i,a,b) for (int i=(a);i<(b);i++) # define rof1(i,a,b) for (int i=(a);i>=(b);i--) # define rof0(i,a,b) for (int i=(a);i>(b);i--) # define fi first # define se second # define pb push_back # define

NOIP练习赛题目3

大兔子大兔子 提交于 2020-01-31 19:21:17
魔兽争霸 难度级别:C; 运行时间限制:1000ms; 运行空间限制:262144KB; 代码长度限制:2000000B 试题描述 小x正在销魂地玩魔兽 他正控制着死亡骑士和n个食尸鬼(编号1~n)去打猎死亡骑士有个魔法,叫做“死亡缠绕”,可以给食尸鬼补充HP战斗过程中敌人会对食尸鬼实施攻击,食尸鬼的HP会减少,小x希望随时知道自己部队的情况,即HP值第k多的食尸鬼有多少HP,以便决定如何施放魔法.请同学们帮助他:) 小x向你发出3种信号:(下划线在输入数据中表现为空格) A_i_a表示敌军向第i个食尸鬼发出了攻击,并使第i个食尸鬼损失了a点HP,如果它的HP<=0,那么这个食尸鬼就死了(Undead也是要死的……)。 敌军不会攻击一个已死的食尸鬼。 C_i_a 表示死亡骑士向第i个食尸鬼放出了死亡缠绕,并使其增加了a点HP。 HP值没有上限。 死亡骑士不会向一个已死的食尸鬼发出死亡缠绕 Q_k 表示小x向你发出询问 输入 第一行,一个正整数 n 以后n个整数 表示n个食尸鬼的初始HP值 接着一个正整数m 以下m行 每行一个小x发出的信号 输出 对于小x的每个询问,输出HP第k多的食尸鬼有多少HP,如果食尸鬼总数不足k个,输出-1。每个一行数。 最后一行输出一个数:战斗结束后剩余的食尸鬼数 输入示例 5 1 2 3 4 5 10 Q 2 A 4 6 C 1 4 Q 2 A 2 1

Educational Codeforces Round 69 (A、B、C、D)

梦想的初衷 提交于 2020-01-31 12:45:46
http://codeforces.com/contest/1197 A. DIY Wooden Ladder 贪心水题 1 #include<iostream> 2 #include<sstream> 3 #include<fstream> 4 #include<algorithm> 5 #include<cstring> 6 #include<iomanip> 7 #include<cstdlib> 8 #include<cctype> 9 #include<vector> 10 #include<string> 11 #include<cmath> 12 #include<ctime> 13 #include<stack> 14 #include<queue> 15 #include<map> 16 #include<set> 17 #define mem(a,b) memset(a,b,sizeof(a)) 18 #define random(a,b) (rand()%(b-a+1)+a) 19 #define ll long long 20 #define ull unsigned long long 21 #define e 2.71828182 22 #define Pi acos(-1.0) 23 using namespace std; 24 const int

Educational Codeforces Round 81

大憨熊 提交于 2020-01-31 00:35:58
E 题目大意 给定一个排列 p p,和一个数组 a a表示这个排列的每个位置的能量值,要求从中间某个位置把排列分成左右两段,然后把左边的一些数移动到右边,右边的一些数移动到左边,使得 左边的所有值小于右边的所有值 。某个值移动的代价为该位置的能量值。求满足条件所需要的最小能量值。注意,如果有一边没有数,我们也认为这满足了上述的条件(前提假则整个命题为真嘛)。 题解: 首先可知道的是最后答案肯定是两个集合第一个是空集要么是【1~k】,第二个就是【k+1~n】; 所以我们要枚举k,还要枚举割点应该从哪里割,这时我们发现对于K,我们可以用前缀和算出来表示第一个集合为不同K的所花成本(因为我们左边最终肯定是1 2 3 4...这种); 例如我们k=1,表示最终形成左边集合为1,右边的是2~n,k=3,表示最终形成左边为1 2 3,右边为4~n的两个集合; 那在各个k的条件,接下来就是割点选择使得变换的花费所化成本最少 我们用for遍历割点,假设当前割点i,i q w e ,u o p.. 假设i=5,那么【1,4】这里都应该加上5的权重-a【5】,表示k=1~4的这些在变成k+1=5,就应该从右边集合里拿出来到左边集合所增加的花费,所以【5,n】这里的就应该减去a【5】抵消掉之前把他列入右集合的花费, 也就是形成一下俩种画面你割了个5,你选择k=4,也就是左边免费得个5但是得额外补充1 2

20180219膜你赛题解

ⅰ亾dé卋堺 提交于 2020-01-30 12:42:51
介于本场比赛题目难度并不按照难度顺序排列,所以题解顺序不同。 需要题面或数据可以私聊我QQ(不一定在):468170499. T3:最短路(path) 来源: jzoj3470 Describe: 给定一个n个点m条边的有向图,有k个标记点,要求从规定的起点按任意顺序经过所有标记点到达规定的终点,问最短的距离是多少。 Hint: 20%的数据n<=10。 50%的数据n<=1000。 另有20%的数据k=0。 100%的数据n<=50000,m<=100000,0<=k<=10,1<=z<=5000。 解题思路: 我在考场上写这道题的时候,一眼没看出来。在最后看了一眼数据,发现k<=10,那么答案就非常显然了。我们可以把标记点为起点跑一边最短路。我感觉可能会卡SPFA(然而出题人很凉心),所以就写了一个堆优化的Dijkstra。时间复杂度为O(log(N + M) * N * K)(我习惯变量用小写)。因为k很小,所以我们可以枚举所有的方案,再跑一层k的循环判断。时间复杂度为(K! * K),勉强不会超时,可以写状态压缩优化成O(2^K * K * K),因为这道题暴力能过,所以就没写,以后有空再补吧。这道题我在考场上是只过了一个样例,只有九分。主要是没看清题,有向图连了无向边。还有dis数组因为不能开到n方的大小,所有有一维应该要存点的编号,然后我在这里好像弄错了一点什么。。。

Educational Codeforces Round 81 (Rated for Div. 2)

戏子无情 提交于 2020-01-30 01:06:58
A. Display The Number 题解 题目要求数越大越好,并且有暗示答案会爆longlong, 于是我们就有如下策略: \(n\) 是偶数全填 \(1\) ,因为 \(1\) 只占两格,很值得 \(n\) 是奇数的话先狂填 \(1\) ,再还剩下 \(3\) 个的时候填一个 \(7\) 就好了 #include<iostream> #include<algorithm> #include<cmath> #include<cstdio> #include<cstring> #include<cstdlib> #include<queue> using namespace std; #define mem(a,b) memset(a,b,sizeof(a)) typedef long long LL; typedef pair<int,int> PII; #define X first #define Y second inline int read() { int x=0,f=1;char c=getchar(); while(!isdigit(c)){if(c=='-')f=-1;c=getchar();} while(isdigit(c)){x=x*10+c-'0';c=getchar();} return x*f; } int w[10]={6,2,5,5,4,5

CF922 CodeForces Round #461(Div.2)

不羁岁月 提交于 2020-01-29 04:14:55
CF922 CodeForces Round #461(Div.2) 这场比赛很晚呀 果断滚去睡了 现在来做一下 A CF922 A 翻译: 一开始有一个初始版本的玩具 每次有两种操作: 放一个初始版本进去,额外得到一个初始版本和一个复制版本 放一个复制版本进去,额外得到两个复制版本 一开始有 \(1\) 个初始版本,是否能恰好得到 \(x\) 个复制版本和 \(y\) 个初始版本 Solution 傻逼题 要特判一些特殊情况(没有 \(1A\) ...) #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<set> #include<map> #include<vector> #include<queue> using namespace std; #define ll long long #define RG register inline int read() { RG int x=0,t=1;RG char ch=getchar(); while((ch<'0'||ch>'9')&&ch!='-')ch=getchar(); if(ch=='-')t=-1,ch=getchar(); while

Codeforces Round #611 (Div. 3)

孤街醉人 提交于 2020-01-29 04:04:41
A Minutes Before the New Year 不用写 f o r for f o r 循环,直接用 1440 1440 1 4 4 0 减去当前分钟数就行了 T = int ( input ( ) ) for kase in range ( T ) : h , m = [ int ( x ) for x in input ( ) . split ( ) ] print ( 1440 - h * 60 - m ) B Candies Division T = int ( input ( ) ) for kase in range ( T ) : n , k = [ int ( x ) for x in input ( ) . split ( ) ] ans = n // k * k ans += min ( n % k , k // 2 ) print ( ans ) C Friends and Gifts 这题是要在给定的图上连一些边使其形成一个置换,且 f i ≠ i f_i \neq i f i ​  ​ = i 先统计一下入度,剩下的边必须连到入读为 0 0 0 的点上去 先给那些既没有入度也没有出度的点安排出度,这样是为了防止最后出现他不得不连自己的情况,搞一个双端队列就可以维护了。 然后再安排剩下的就好了 # include <bits/stdc++.h>

C++读入优化

☆樱花仙子☆ 提交于 2020-01-28 23:46:54
inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } //f->signal x->number 通过getchar来取代cin不断对缓冲区的操作,加快速度 调用 n=read() 即可 来源: https://www.cnblogs.com/battlin/p/12239149.html

PAT甲级——1061 Dating (20分)

自作多情 提交于 2020-01-27 21:56:39
Sherlock Holmes received a note with some strange strings: Let's date! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm. It took him only a minute to figure out that those strange strings are actually referring to the coded time Thursday 14:04 -- since the first common capital English letter (case sensitive) shared by the first two strings is the 4th capital letter D, representing the 4th day in a week; the second common character is the 5th capital letter E, representing the 14th hour (hence the hours from 0 to 23 in a day are represented by the numbers from 0 to 9 and the capital