01
2019
08

详解归并排序和树状数组两种求逆序对数得思路

首先通过题目看看如何考察逆序数,什么是逆序数?逆序数就是找前面有几个比自己大的数即如果i<j&&a[i]>a[j] 则a[i]和a[j]构成一个逆序对这里排序求交换次数比正好就是我们前面讲到的逆序对吗?因此我们首先就想到了o(logn)方法的归并排序 mergesort(int l,int r)归并排序的思路就是:先二分分到不能再分,保证(l<r),再将两个有序的序列合并起来。如一个序列a[7]={100,29,8,9,10,5} 对齐归并排序步骤如下:100,
31
2019
07

noip2014 day1t3 无线网络发射器选址

#include <iostream> #include <cstdio> #include <algorithm> using namespace std; int map[130][130],d, n,; long long sum[130][130],  ans, cnt; void init() {&n
29
2019
07

真题题解:2014年day1T2 联合权值

思路:1、联合的两个节点距离为二,所以必定有一个中转点。所以,我们可以枚举每一个中转点。(震惊!!!)2、假设每个中转点周围有两个点,权值分别为a、b,则联合权值为2ab=(a+b)^2-(a^2+b^2)。3、若有三个点,权值分别为a、b、c,则联合权值为2ab+2bc+2ac=(a+b+c)^2-(a^2+b^2+c^2)。4、综上,以某个节点为中转点的联合权值之和等于权值和的平方减去权值的平方和。(+1!!!!!)5、为了找到最大的联合权值,只需找到周围最大的两个权值max1,max2,相
24
2019
07

2011提高组-玛雅游戏

#inclue<bits/stdc++.h> #define ll long long #define N 10 //快速读  int read() {     int X=0,w=0; char ch=0;     while(!isdigit(ch)) {w|=ch==
25
2019
06

信息学奥赛一本通 提高组 1576:选课

时间限制: 1000 ms         内存限制: 524288 KB提交数: 135     通过数: 107 【题目描述】原题来自:CTSC 1997大学实行学分制。每门课程都有一定的学分,学生只要选修了这门课并通过考核就能获得相应学分。学生最后的学分是他选修各门课的学分总和。每个学生都要选择规定数量的课程。有些课程可以直接选修,有些课程需要一定的基础知识,必须在选了其他的一些课程基础上才
13
2019
04

信息学一本通:1174:大整数乘法

【题目描述】求两个不超过200位的非负整数的积。【输入】有两行,每行是一个不超过200位的非负整数,没有多余的前导0。【输出】一行,即相乘后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。【输入样例】12345678900 98765432100【输出样例】1219326311126352690000#include<bits/stdc++.h> using namespace std; int main(){
12
2019
04

信息学一本通 1168:大整数加法

题目描述】求两个不超过200位的非负整数的和。【输入】有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。【输出】一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。【输入样例】22222222222222222222 33333333333333333333【输出样例】55555555555555555555#include <bits/stdc++.h> using namespace std
11
2019
04

信息学奥赛一本通 1278:【例9.22】复制书稿(book)

【题目描述】现在要把m本有顺序的书分给k个人复制(抄写),每一个人的抄写速度都一样,一本书不允许给两个(或以上)的人抄写,分给每一个人的书,必须是连续的,比如不能把第一、第三和第四本书给同一个人抄写。现在请你设计一种方案,使得复制时间最短。复制时间为抄写页数最多的人用去的时间。【输入】第一行两个整数m,k;(k≤m≤500)第二行m个整数,第i个整数表示第i本书的页数。【输出】共k行,每行两个整数,第i行表示第i个人抄写的书的起始编号和终止编号。k行的起始编号应该从小到大排列,如果有多解,则尽可
01
2019
04

突然很怕死

最近胳膊腋窝下面长了一个疙瘩,到网上一查都是各种恐怖的言论,突然好害怕自己得了什么绝症,赶紧早早上床休息,再也不敢玩手机了。对于以前的自己,觉得年轻就是用来挥霍的,从来没想过得了病会怎样,或者真的自己有一天离开了能给家人留下什么。昨晚在床上想了一晚,发现我现在真的死不起。孩子才1岁半,老婆工作很辛苦,父母年龄越来越大,我身上还有一堆贷款,如果真的病倒了家里会怎样真的不敢去想,真的有点讳疾忌医的想法了,突然想到原来听人讲,很多人不是病死的都是怕死的。当你躺在冷冰冰的病床上的时候,当你看到家人忙完工
30
2019
03

NOIP 2000 方格取数

#include <bits/stdc++.h> using namespace std; /* 思路: 有来、回两次行走,而且不能有路径交叉。我们可以转换为一次行走,有两个人同时行走,形象地说为多线程。 只要每一时刻都保证两个人不在同一点上就可以保证路径不会交叉(这个仔细想想或者画一画就可以证明是对的)。 那么状态表示可以是f[i][j][k][l]表示第一个人在(i,j)第二个人在(k,l)时的最优解。 */ int N;