2018寒假训练
Uniontake
这个作者很懒,什么都没留下…
展开
-
Codeforces-681D Gifts by the List
思维DFS 题意: 给出一颗树。树的每一个结点都想要给其祖先送礼。(祖先=其自身+其父结点到根结点) 给出每个结点想要送礼的祖先结点。 但是送礼需要基于一个独立表(只能送这张表里的)。每个结点只能送这张表上第一个是他的祖先的结点。 于是 你需要构造这么一张表。满足每个结点送给的祖先结点的都是其想要送的结点。题解: 如果是根结点,其只能送给自己。 如果是中间结点。他要么送给自己要么原创 2018-01-21 13:33:32 · 212 阅读 · 0 评论 -
Codeforce-618A A Good Contest
#include#include#includeusing namespace std;int main(){ string name; int last,now; bool flag = false; int n; scanf("%d",&n); for(int i=1;i<=n;i++) { cin>>name>原创 2018-01-20 20:28:47 · 200 阅读 · 0 评论 -
Codeforces-540A-Combination Lock
#include#include#include#include#includeusing namespace std;int main(){ int n,ans = 0; string a,b; scanf("%d",&n); cin>>a>>b; for(int i=1;i<=n;i++){ ans += min((a[i-原创 2018-02-06 12:27:25 · 138 阅读 · 0 评论 -
Codeforces-540B-School Marks(思维贪心)
/** 题意: 给你n,k,p,x,y,五个数,分别表示小明要考n门课,现在已经考了k门课了,每门课的最高成绩为p,但小明有两个小要求。 1、小明考的n门课的总成绩不能超过x; 2、小明的n门课的成绩在排完序后,他的中位数要>=y。 问小明剩下的几门课要考多少分,若有多种情况,输出其中任意一种就行,如果不能满足两个条件,原创 2018-02-06 12:28:27 · 234 阅读 · 0 评论 -
Codeforces-540C-Ice Cave (BFS)
题意: 有n*m的冰面,. 表示完整的冰块,X表示残破的冰块,如果踩到完整的冰块,则冰块会变成残破的冰块,如果踩到残破的冰块,则人会坠落, 现给出r1,c1起始点,起始点是残破的冰块。终点r2,c2,要求从起始点走的终点,并在终点坠落。不能原地踩踏。#include#include#include#include#includeusing namespace std;const原创 2018-02-06 12:54:53 · 170 阅读 · 0 评论 -
Codeforces-540D-Bad Luck Island(概率DP)
题目链接Codeforces 540D题意在一座岛上,有r个人只会出石头,有s个人只会出剪刀,有p个人只会出布,很不幸的是上帝现在只希望岛上最终只有1种人存活。问r,s,p存活的概率分别为多少题解概率DP我们定义dp[i][j][k]三维分别表示三种人剩余的个数,数组记录的值是当前这个状态出现的概率。定义pi,pj,pk,和sum,假设当前存活i,j,k原创 2018-02-06 14:16:47 · 235 阅读 · 0 评论 -
Codeforces-540E-Infinite Inversions (离散化BIT)
题目链接Codeforces-540E-Infinite Inversions题意给一个无限大的递增序列,n次操作,每次操作一组x,y,代表第x位置的数和第y位置的数进行交换,问最后n次交换后存在多少对逆序对。(n题解离散化树状数组 x,y很大,但n很小可以通过离散化的形式来使用树状数组求逆序对。 注意到交换后两数之间未操作数也会影响到最终逆序对的个数。于是对于每一原创 2018-02-06 23:43:36 · 235 阅读 · 0 评论 -
UVA11582-Colossal Fibonacci Numbers
题目链接UVA11582题意输入两个非负整数a,b和正整数n(0题解fibonacci数论取余存在周期性。求出数论对n取余的周期M,再通过快速幂计算 k = a^b%M。即ans = f[k];代码/** * Give you a,b,n; a,b<=2^64, and n <= 1000; * * f(0) = 0, f(1) = 1; *原创 2018-02-07 11:41:17 · 150 阅读 · 0 评论 -
Uva10375-Choose and Divide
题目链接Uva10375-Choose and Divide题意计算C(p,q)/C(r,s), (p>=q,r>=s,p,q,r,s题解思路1: 唯一分解定理,C(m,n) = m!/(n!(m-n)!) to solve c(p,q) / c(r,s) = p! * s! * (r-s)! / r! * q! * (p-q)! 将原创 2018-02-07 18:24:21 · 120 阅读 · 0 评论 -
Codeforces-686D-Kay and Snowflake
题意: 一颗有向边的树,根节点为 1,q次询问,询问以该点为根节点的子树的重心编号 暴力思路: 对于每一个结点进行一次DFS,深搜的时间复杂度是O(n) 于是改算法的时间复杂度是O(n^2)。对于结点树n是3十万,显然会超时但还是给出代码#include#include#include#include#includeusing namespace std;const i原创 2018-02-04 23:28:40 · 377 阅读 · 0 评论 -
Codeforces-686B Little Robber Girl's Zoo
冒泡排序原理题#include#include#include#includeusing namespace std;const int maxn = 105;int a[maxn];int main(){ int n; while(~scanf("%d",&n)) { for(int i=1;i<=n;i++) {原创 2018-01-21 13:36:02 · 228 阅读 · 0 评论 -
Codeforces-686C Robbers' watch
读题读题!!!有个手表,由小时和分钟组成,而且小时和分钟是基于7进制储存的。 现在一天有n个小时,每个小时m分钟。 于是将这一天所有时间的显示在手表上(时:分) 注意都是7进制表示 如9时8分为(12:01) 于是一天可以有n*m中不同的时刻。 问你这n*m个时刻显示在手表上(每一位都不相同的)个数有多少个 eg 9时8分(12:01) 1重复原创 2018-01-21 13:37:36 · 329 阅读 · 0 评论 -
Codeforces-686A Free Ice Cream
水题#include#include#include#includeusing namespace std;typedef long long ll;int main(){ int n; ll x,it; char op; while(~scanf("%d%I64d",&n,&x)) { int cnt = 0;原创 2018-01-21 13:34:55 · 262 阅读 · 0 评论 -
Codeforces-681C Heap Operations
优先队列的模拟支持3种操作insert x :将x插入到最小堆中。getMin x :获取最小堆的堆顶,要求最小值为xremoveMin:将最小堆的堆顶弹出。题目给出了一些操作,不一定合法,往里再添加一些操作使得所有的操作都合法,求添加操作最少的情况并按序输出全部操作(新添加的和已存在的)题解:优先队列模拟最小堆insert x向队列里加入xremoveMin时将堆顶to原创 2018-01-20 20:33:55 · 172 阅读 · 0 评论 -
Codeforce-681B Economy Game
#include#include#includeusing namespace std;typedef long long ll;const int INF = 1e9;int main(){ ll n; while(~scanf("%lld",&n)) { bool ans = false; for(int a=0;;a++)原创 2018-01-20 20:31:28 · 136 阅读 · 0 评论 -
哈理工A大吉大利-吃鸡
#include#include#include#includeusing namespace std;const int maxn = 1050;typedef struct node{ int p,k; int kk[maxn];}Gay;Gay gay[maxn];double qq[maxn];int main(){ int n,m;原创 2018-01-21 17:48:01 · 236 阅读 · 0 评论 -
哈理工H递推
#include#include#include#includeusing namespace std;typedef long long ll;const int maxn = 100;ll ans[maxn];void init(){ ans[1] = 1; ans[2] = 2; for(int i=3;i80;i++) ans[i] = ans[i-1]+原创 2018-01-21 17:48:49 · 131 阅读 · 0 评论 -
哈理工I暴力
#include#include#include#includeusing namespace std;int vis[11];void con(int a){ while(a) { vis[a%10] = 1; a/=10; }}bool judge(int x,int a,int b){ if(x % a == 0||原创 2018-01-21 17:49:23 · 204 阅读 · 0 评论 -
Uva12169-Disgruntled Judge
题目链接Uva-12169-Disgruntled Judge题意给出一个序列的一半,x1,x3,x5,x7,…x(2*t-1),序列的长度为2 * t。这个序列是通过x[i] = (x[i-1] * a + b) % mod (mod == 10001) 生成的。要求让你输出x2,x4,x6….,x(2 * t) 其中t 题解根据紫书的思路 由于a,b都是原创 2018-02-07 17:14:06 · 525 阅读 · 0 评论