- 博客(17)
- 收藏
- 关注
转载 ACM 比赛ubuntu配置
每年都指导新生配置ubuntu太麻烦了,留给帖方便大家看吧首先邀请赛级别以上的比赛都是用ubuntu的,所以我们平时的组队训练也十分建议使用ubuntu系统,这里给出配置过程首先是ubuntu 12.04的下载地址:http://pan.baidu.com/s/1kTkcmxD解压之后双击wubi.exe就可以安装了,像装普通软件一样,最好装在一个空磁盘里,从其他盘分3
2016-10-31 12:38:14 1271
原创 矩阵专题
参考矩阵资料:资料首先是一道入门题NYOJ623就是求两个矩阵的乘积, 数据又给的很友好所以#include#includetypedef long long ll;const int qq = 55;struct rec{ ll mar[qq][qq]; rec(){ memset(mar, 0, sizeof(mar)); }}a, b;void mult
2016-10-28 20:49:30 251
原创 codeforces 589J
题意:有一个清洁机器人,他有三种操作 第一种:打扫当前单元, 第二种是按着当前机器人的方向走一格然后回到第一种操作, 第三种是机器人的方向按着顺时针转90度然后回到第二步,问最终能清洁多少个单元。思路:刚开始又理解错题意, 因为转一次之后如果不能走就不能继续走下去了, 其实是可以的, 定义一个vis[i][j][d] 表示机器人是否在 i 行 j 列 方向为 d 的时候访问过, 如果访问过
2016-10-27 10:31:46 284
原创 HDU 5072
题意:给出n个数,要你选出三个数, a,b,c 两两之间要么互质, 要么都不互质 求有多少个这样的三元组思路:直接求肯定不行,但我们考虑反面就只有一种情况,选出的三元组存在一组互质一组不互质 那么单色三角形模型+容斥做咯,但是在前面还要预处理能被某个因子整除的数的个数#include#include#include#include#include#include#includ
2016-10-12 08:57:37 459
原创 扩展欧几里德模版
参考资料:Arimura | kasumiint gcd(int a, int b){ return b==0?a:gcd(b, a%b);}void exgcd(int a, int b, int &x, int &y){ if(b==0){ x = 1; y = 0; return; } exgcd(b, a%b, x,
2016-10-11 11:02:54 165
原创 HDU 4135
题意:求a到b之间与k互质的个数思路:容斥原理#include#include#include#include#includeusing namespace std;typedef long long ll;const int qq = 10005;int num;int prime[qq];void Analyze(ll x){ for(ll i=2
2016-10-10 23:29:18 403
原创 容斥原理求1到n与k互质个数
参考博客:传送门题目:HDU 4135此处的k#include#include#include#include#includeusing namespace std;typedef long long ll;const int qq = 10005;int num;int prime[qq];void Analyze(ll x){ for(ll i=2;
2016-10-10 23:21:23 1614
原创 HDU 5071
这题不难、处理好相应的状态就行首先说一下几点要注意吧、 (1) words 类型要用 long long 题目说的是所有参数小于1e9、但加起来可能就超了(2) Top 这只是一种状态,不需要把它放进队列的头部,而且题意也没说,果然英文不好的我....就容易误解(3) 注意close操作的时候如果关闭了一个Top状态的要记得及时把状态清除(4) 每次操作后面有一个小点
2016-10-10 16:02:01 338
原创 codeforces 369C
题意:给出一棵树, 边有两种 类型1, 代表路是好的, 类型2代表路是坏的, 我们要修复所有的路, 当我们修复结点x的时候, 那么它到结点1之间的所有路都会被修复,求最小的修路节点的集合思路:对于节点x,它到父节点的边为类型2,那么如果节点x的所有子树都不存在类型为2的边,则将节点x加入子集,否则任意一个子树中的边得到维修,x到父节点的边也一定会被维修,这种情况x就不加入子集。#inclu
2016-10-09 12:40:16 809
原创 codeforces 374C
题意:给出一张n*m的图,找出顺序为DIMA的路径, 可以循环也就是说可以DIMADIMA..... 如果形成回路就Poor Inna!, 如果找不到一组DIMA就Poor Dima!, 如果能找到输出找到DIMA的最大循环次数。思路:记忆化搜索,判断回路的话直接判断是否访问过就行了#include#include#include#include#includeusing na
2016-10-09 11:53:03 382
原创 Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined)
A. Checking the Calendar题意:给出两个周几, 问是否有这样一个non-leap year, 在一年中 某一个月的第一天等于第一个给出的周几, 这个月的下一个月的第一天等于第二个给出的周几、我又他喵的少读题了、 以后这两个周几可以互换判断... 结果可想而知#include#include#include#include#include#include
2016-10-09 10:36:55 230
原创 计数排序模版、
参考:百度百科#include#includeconst int qq = 2100000;int num[qq];int rank[qq];int c[qq];int main(){ int n,m; while(scanf("%d%d", &n)){ for(int i=0; i<n; ++i){ scanf("%d", num+i); c[num[i]]+
2016-10-07 12:43:02 170
原创 codeforces 366C
题意:给出n,k 然后给出n个水果对应的taste和calories 要求选出一些水果 满足 ,在满足这个的情况下求sigma(a[j])的最大值、思路:令bi=ai-k×bi,就是sigma(b[i])=0,sigma(a[i])最大。把b[i]当体积,a[i]当价值,这样就形成了一个01背包、然后设置一个偏移量就好、#include#includ
2016-10-04 16:09:48 683
原创 codeforces 364A
题意:给出一个a,然后给出一行数字,数字的个数小于4000,数字的长度为len,这些数字组成一个n*n的方阵,方阵中 bij = si*sj ,问有多少矩阵的和是等于a的思路:由这个方阵的特性 ,我们知道 每一行都是成比例的,也就是说 第i行 bik = si * sk, 就是si去乘给出的n个数, 而且矩阵又是连续的,那么意味的一个矩阵的和sum = (si +.... +sj)*(s
2016-10-04 14:22:24 225
原创 codeforces 358C
题意:有三种数据结构,栈 队列 双端队列, 每次遇到一个非0的数就可以把这个数放到 栈顶or队列尾or 双端队列的前面或者尾部, 当遇到0的时候最多可以提取三种数据结构中的一个数字, 栈顶的数 + 队列的头部 + 双端的头或尾, 使得每次提取的结果最大,且提取完后三种数据结构全部清空。请模拟整个操作过程。思路:因为每次遇到0之后数据会全部清空,那也就是说我们只要找到0之前的最大的三个数
2016-10-01 20:10:28 327
原创 codeforces 361C
题意:给出n,m代表有一个数列有n个元素,m次操作, 操作类型1 代表从l dao r内的所有元素都加上d, 操作类型2 代表从l 到 r内的最大值是 x,求任何一个满足题意的数列、思路:实际上需要求出每一位上可能的最小数值, 就如题解上说的 a[i] + diff[i] a[i] #include#include#include#include#includeusin
2016-10-01 19:32:19 208
原创 codeforces 362C
题意:给出一个数n,然后给出n个数,问交换其中某两个数所形成的新的数列得到的逆序数最少,输出最小逆序数并且输出有几种交换方式、思路:看看题,n的最大只有5000,n^2的算法还是能挺过的、 我们发现交换两个元素a b实际上逆序数改变只会来源于a b之间的数, 以及 a b两个数本身,如果我们知道了a b两个数之间的数和a b形成的逆序数,那么我们就可以利用容斥原理算出交换后产生的逆序数。
2016-10-01 13:43:04 504
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人