
ACM/ICPC 集训队平时训练题
just_sort
Acdream.
展开
-
HDU 4781 Assignment For Princess 图论,构造,思维
题目链接:这里 题意:构造一个n个点,m条有向边的图,需要满足两个要求: 1.任意一对点对之间最多有一条有向边,且没有自环。 2.保证图联通,m条边的边权严格属于[1, m]且互不相同,从任意点出发,经过任意路径后回到起始点,经过的边权总和是3的倍数。 解法:构造好题,方法 对于每个点i//HDU 4781#include <bits/stdc++.h>using namespace st原创 2017-03-08 11:31:09 · 566 阅读 · 0 评论 -
HDU 5445 Food Problem 2次背包,二进制优化
题目链接:见这里 题意:首先有n种点心,每种点心的t,u,v代表该点心每个所提供的能量,体积,数量。然后有m中车,每种车的x,y,z代表这种车的容量,费用,数量。又有一个p,问你所选的点心达到p的能量值的时候所需要的最少费用。(点心可以切割,即可以分开到每辆车里面,但是只要你选了一个,就整个点心都要放进车里)解法:因为点心是可以切割的,所以我们可以分两次dp,第一次先求出要达到p能量的时候需要的最原创 2017-03-07 18:53:07 · 461 阅读 · 0 评论 -
CF 222D Olympiad 双指针
题目链接:这里 题意:第一行给出两个个数字k和n,第二三行分别有k个数字,求将第二、三行之间的数字相互组合,求最多有多少个组合的和不小于n 解法:将两行数字分别排序,用双端指针分别从头和尾查找最多有多少组合。 代码://CF 222D#include <bits/stdc++.h>using namespace std;const int maxn = 1e5+7;int n, x, a原创 2017-03-11 09:22:08 · 559 阅读 · 0 评论 -
UVALive 7040 Color 容斥,组合数递推,线形逆元,基础数论
题目链接:这里 题意:首先有T组数据,每组数据有 3 个数 n, m, k,分别代表一共有 n 个方格,m种颜色,而我们要 恰好(注意是恰好) 使用 k 中颜色对这些方格进行涂色,并且保证的是每两个相邻的方格的颜色必须是不一样的。 解法:m种颜色选k种,所以有C(m,k),对于选出的k种颜色去给n个人涂色,对于第一个人有k种,第二个人有k-1种,第三个人k-1种。。。。。所以总共是k*(k-1)原创 2017-03-07 19:52:07 · 609 阅读 · 0 评论 -
第二届CCPC女生赛 简易题解
前言:2015/5/13用虚拟OJ的方式3人一台电脑打了CCPC女生赛,一共做出9题(共10题),因为自己太坑D题错了9发,罚时爆炸,在现场就只能排第2,上交小姐姐太强啦,很稳。接下来就把做出来的题,写个简易题解,题目在HDU上可以找到,题号对应为6023-6032。A:模拟水题,不说了。B:题意:有n个节点,我们可以选择在每个节点建或不建商店。 对于第i个点,其坐标是a[i].x,建设商店的成本为原创 2017-05-15 12:50:23 · 1186 阅读 · 0 评论 -
CSU 1803 2016
Description给出正整数 n 和 m,统计满足以下条件的正整数对 (a,b) 的数量:1≤a≤n,1≤b≤m;a×b 是 2016 的倍数。 Input输入包含不超过 30 组数据。每组数据包含两个整数 n,m (1≤n,m≤109). Output 对于每组数据,输出一个整数表示满足条件的数量。 Sample Input32 63 2016 2016 1000000000原创 2017-06-01 15:28:01 · 309 阅读 · 0 评论 -
CSU 1804 有向无环图 拓扑序DP
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1804解法:先将每个点i对应的count(i,j)*bj算出来然后乘ai,累加就是答案,注意这里要类似拓扑排序那样,不过要倒着做,避免后效性#include <bits/stdc++.h>using namespace std;typedef long long LL;const原创 2017-06-01 15:31:02 · 438 阅读 · 0 评论 -
CSU 1806: Toll Simpon积分,最短路
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1806解法:被积函数,就是用spfa跑出来的结果,然后掏出辛普森就可以 了。注意加的边是单向边。#include <bits/stdc++.h>using namespace std;const int maxn = 200;const double eps = 1e-8;str原创 2017-06-01 15:36:32 · 386 阅读 · 0 评论 -
CSU 1808 地铁 最短路变形
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1808题意:ICPCCamp 有 n 个地铁站,用 1,2,…,n 编号。 m 段双向的地铁线路连接 n 个地铁站,其中第 i 段地铁属于 ci 号线,位于站 ai,bi 之间,往返均需要花费 ti 分钟(即从 ai 到 bi 需要 ti 分钟,从 bi 到 ai 也需要 ti 分钟)。原创 2017-06-01 15:43:29 · 412 阅读 · 0 评论 -
CSU 1809 Parenthesis 思维,前缀RMQ
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1809题意:给了一个平衡的括号序列s(平衡是指括号匹配正常) 现在q次询问,每次输入两个数a、b 问将s[a] s[b]交换后是否任然平衡(即是否正常匹配),平衡则输出“Yes” 否则输出“No”解法:粘贴了一段解题报告过来,原地址:这里括号匹配问题的经典做法就是把序列转化成前缀和原创 2017-06-01 15:46:50 · 370 阅读 · 0 评论 -
CSU 1811 Tree Intersection 平衡树启发式合并
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1811题意:每个点有一个颜色,删除一条边后,求这条边两边的点集的颜色交的个数。解法:平衡树启发式合并。那么可以直接用map对每个子树的信息进行记录,然后回溯上去的时候父节点加上子节点信息的时候,把小的往大的加然后每次新出来一个颜色,就+1,如果颜色满了,就−1每次新搜一个节点的时候,如果原创 2017-06-01 16:01:59 · 452 阅读 · 0 评论 -
CSU 1812 两个凸多边形面积交
题目链接:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1812解法:套凸多边交模板。#include <bits/stdc++.h>using namespace std;const int maxn = 555;const int maxsin = 10;const double eps = 1e-8;const double P原创 2017-06-01 16:03:37 · 645 阅读 · 0 评论 -
CF 493C 二分
题目链接:这里 题意:两个人比赛篮球投篮,与正常的篮球比赛不同的是,三分线与篮筐的距离d是不确定的。输入第一个人投了n个球,n个球每个球投的时候他与篮筐的距离;然后输入第二个人头了m个球,m个球每个球投的时候他与篮筐的距离,然后让你选择一个d,使得它对于第一个人最为有利,所谓有利即使得“第一个人的分数-第二个人的分数”最大,将比分输出。当有多个相同的最大差值的情况时,输出第一个人分数最大的那组。这原创 2017-03-10 20:43:58 · 435 阅读 · 0 评论 -
CF 501B Misha and Changing Handles 模拟,水题
题目链接:这里 题意:按照时间顺序给了n对新旧字符串,其中如果满足a->b&&b->c那么最后只会存在a->c,然后让输出最后字符串对。 解法:水题,按照题意模拟就可以了,用map//CF 501B#include <bits/stdc++.h>using namespace std;const int maxn = 1010;map <string, string> mp;int n;原创 2017-03-10 19:19:54 · 561 阅读 · 0 评论 -
HDU 5098 Smart Software Installer 双队列拓扑排序或者DAG的最长路
题目:这里 题意:软件在安装之后需要重启才能发挥作用,现在给你一堆软件(有的需要重启有的不需要)以及安装这个软件之前需要哪些软件发挥作用,求最少的重启次数。 解法:真拓扑好题,但是我不会。然后这个题有两种解法,解法1来自斌神:普通的拓扑排序用了一个队列,而现在用两个队列q1,q2分别来存 不需要重启的software 和 需要重启的software。根据题目输入建好图后,按照拓扑序规则,首先将入原创 2017-03-10 18:53:34 · 565 阅读 · 0 评论 -
UVALive 7043 International Collegiate Routing Contest 字典树,递归
题目链接:这里 题意:给出n个IPv4的子网地址,格式是a-b-c-d/l,a b c d l都是十进制数,然后l是网络地址的长度,最长到32,要求输出最低限度的所有的未能划分出的子网地址,这些子网和给出的n个子网没有交集,这些地址和给出的n个地址能组成完整的网络地址。 解法:把所有的ip地址插进字典树,并且标记单词节点,之后然后暴力递归找所有未被包含在已有子网里的子网地址。其实就是trie树上原创 2017-03-08 10:51:42 · 419 阅读 · 0 评论 -
POJ 2996 模拟,读题
题目链接:这里 题意:打印棋盘上棋子的位置。 解法: 研究一下输出: White: Ke1,Qd1,Ra1,Rh1,Bc1,Bf1,Nb1,a2,c2,d2,f2,g2,h2,a3,e4 Black: Ke8,Qd8,Ra8,Rh8,Bc8,Ng8,Nc6,a7,b7,c7,d7,e7,f7,h7,h6 总共有K,Q,R,B,N,P六种棋子。其中除了P以外所有的棋子在输出位置的同时也原创 2017-03-08 16:56:53 · 470 阅读 · 0 评论 -
POJ 2993 Emag eht htiw Em Pleh 模拟,题意
题目:这里 题解:2996反过来就行了。题解这里//POJ 2993#include <stdio.h>#include <string.h>#include <iostream>char mp[40][40];char s1[40], s2[40];int main(){ //打印没有字母的空盘 for(int i = 0; i < 8; i++) {原创 2017-03-08 17:28:32 · 426 阅读 · 0 评论 -
UVALive 6424 Russian Dolls 贪心
题目链接:这里 题意:每个玩具有占用的空间和内部可容纳的空间。规定每个玩具只能直接嵌套一个玩具,可以间接嵌套,即A套B,B再套C,但是不能A同时套B和C。A能套B的条件是A的内部空间严格大于B的占用空间。第i个玩具有一个单位花费ci,乘以该玩具内部还剩于的空间即为花费。要问的是经过适当的嵌套之后,最小花费是多少。 解法:贪心 显然,每次嵌套会使花费减少。对于每个玩具,如果要将它套进别的玩具里面,原创 2017-03-08 18:41:20 · 352 阅读 · 0 评论 -
HDU 3400 Line belt (三分套三分)
题目链接:这里 题意:就是给你两条线段AB , CD ,一个人在AB以速度p跑,在CD上以q跑,在其他地方跑速度是r。问你从A到D最少的时间。 解法: 先三分AB上的点,再三分CD上的点即可。 证明: 设E在AB上,F在CD上。 令人在线段AB上花的时间为:f = AE / p,人走完Z和Y所花的时间为:g = EF / r + FD / q。 f函数是一个单调递增的函数,而g原创 2017-03-08 21:00:05 · 523 阅读 · 0 评论 -
CF 496E 贪心,排序,set
题目链接:这里 题意:有n首曲子,每首曲子的范围为ai~bi。有m个演奏家,每个演奏家的范围为ci~di,并且可以出演次数为ki次。如果ci<= ai<=bi<=di,则说明该曲子可以由演奏家演出。问是否存在合法方案使得所有曲子都能被演奏。第一行为一个整数表示曲子的数量n,之后n行每行两个整数ai和bi表示这首曲子占的时间范围,然后为一整数m表示演奏家人数,之后m行每行三个整数ci,di和ki分别原创 2017-03-09 09:54:01 · 707 阅读 · 0 评论 -
CF 490E 贪心,回溯法
题目链接:这里 题意:一个严格递增序列 某些数字的某些位被盖住了 求 恢复后的序列。 解法:贪心,让每个数在大于前一个的基础上尽量小,先考虑数字长度。if(len[i] < len[i+1])输出NO,当len[i] > len[i-1],如果第一位是?就改成1,其他的问号改成0,接下来是长度相等的时候DFS(回溯法)即可。//CF 490E#include <bits/stdc++.h>原创 2017-03-09 14:01:54 · 385 阅读 · 0 评论 -
CF 446B DZY Loves Modification 优先队列
题目链接:这里 题意: 有一个n*m的矩阵,你需要操作k次,每次操作是选择一行或者一列,使得ans+=这一行或者这一列的和 然后再使得这一行或者这一列的数全部减去p 现在问你他操作k次之后,最多获得多少分数解法: 假设你最后操作了k次,那么对于整体的答案,你需要减去i*(k-i)*p这么多(重复的点) 这样我们就把p给处理出来了 现在我们再把行和列都分开,然后用一个优先队列去处理就好了原创 2017-03-09 15:43:21 · 700 阅读 · 0 评论 -
CF 387C 贪心
题目链接:这里 题意:就是给处一个长度不超过10^5的十进制正整数, 是按照题目所给的方法从一个数组中拼出来的,为初始的那个数组最多有多少个元素。 解法:从末尾向开头贪心加更大字符串的字符串即可。//CF 387C#include <bits/stdc++.h>using namespace std;const int maxn = 100010;char s[maxn], tmp[max原创 2017-03-09 16:13:33 · 965 阅读 · 0 评论 -
CF 489D Unbearable Controversy of Being BFS
题目链接:这里 题意:给了一个有向图,问有多少个点对(a, b, c, d)满足a->b->d并且a->c->d,求组成这样的菱形的个数。 解法:水题,对每个点aBFS标记,最后那些对于每个点来说标记了2次以上的肯定就是d点。 复杂度O(n*m)//CF 489D#include <bits/stdc++.h>using namespace std;const int maxn = 301原创 2017-03-10 14:00:38 · 355 阅读 · 0 评论 -
CF 489C Given Length and Sum of Digits... 贪心
题目链接:这里 题意:此题要求找到一对数字,长度和数字之和满足n和m的条件,求出这对数的最大区间。 解法:贪心,让第一个数的首位尽可能小,让最后一个数的首位尽可能大。只能说我开始写的代码巨丑,从test3开始wa到test9,最后推了重新构思一发过了,做题还是得想得非常清楚啊, 不然容易把自己写懵逼。然后要注意特判一些情况。//CF 489C#include <bits/stdc++.h>us原创 2017-03-10 09:32:37 · 659 阅读 · 0 评论 -
哈尔滨理工大学第七届程序设计竞赛决赛 题解
比赛链接:https://www.nowcoder.com/acm/contest/30#questionA:在acimo星球, tabris 是一名勇敢的屠龙勇士,在上绿岛屠龙前决定挑选N种装备武装自己,现在每种装备有两个,**但每种装备tabris必须选择拿一个**,**不能多也不能少**。每件装备有自己的属性值,能给tabris属性加成。对于不同种类的装备之间有叠加效原创 2017-12-11 19:54:11 · 811 阅读 · 0 评论