题意: 思路: 写了两种版本 考场版本 ..,..]of longint; t:..,..]of longint; n,m,i,j,k,oo,ans,d1:longint; function min(x,y:int64):int64; begin if x<y then exit(x); exit(y); end; begin assign(input,'room.in'); reset(input); assign(output,'room.out'); rewrite(output); re…
题意: 100%的数据:|Ax|,|Ay|,|Bx|,|By| <= 500, 0 <= n,Ex,Ey <= 500 思路:听说这是一道原题 只能往右或者下走一步且有禁止点的简化版是CF559C 然而这道题并没有这么简单 以下开始转化: 转化后套用弱化版做法即可 ; ..]of int64; dp:..]of int64; x,y:..]of longint; ex,ey,sx,sy,ax,ay,bx,by:int64; n,n1,i,j:longint; u,v,eps:double…
题意:现在 Matej 手上有 N 个英文小写字母组成的单词, 他想知道,如果将这 N 个单词中的字母分别进行重新排列,形成的字母树的节点数最少是多少. n<=16,len[i]<=1000000 思路: 显然,如果我们希望 Trie 树的节点数尽量少,我们应该先将所有单词公共的字母拿出来,作为 Trie 树最上几层的初始链. 比如说我们有 aaab, baab 和 cab 三个单词,我们会将ab 挑出来,然后剩下的单词就变成了 aa, ab, c. 对于剩下的单词, 我们将其分成两个子集,(…
题意: 对于边带权的无向图 G = (V, E),请选择一些边, 使得1<=i<=d,i号节点和 n − i + 1 号节点可以通过选中的边连通, 最小化选中的所有边的权值和. d<=4 n<=10000 m<=10000 w[i]<=1000 思路: 求一个最小生成树(或森林),使得若干组点对各自联通由于d很小(<=4),考虑采用状压DP的做法.令1,2,..d和n,n-1...n-d+1为2d个特殊点先考虑生成树的情况:设F[i][j](i=1,2...n j…
题意:你要从(0,0)点走到(n,m), 每次只能往 x 轴或者 y 轴正方向移动一个单位距离.从(i,j)移动到(i,j+1)的代价为 ri,从(i,j)移动到(i+1,j)的代价为 cj. 求最小代价. 对于 20%的数据, n, m<=5000.对于 100%的数据, n, m<=10^5,0<ri,ci<=10^8. 思路:杜教原题 • 建出r和c的下凸壳,每次走斜率大的那个.• 证明? • P q• | |• a--|-----|---• b--|-----|---• r…
题意: 思路: #include <algorithm> #include <iostream> #include <cstring> #include <cstdio> #include <cmath> #include <map> using namespace std; , INF = -0x3f3f3f3f; int n, m, ans[N], v[N], a[N], last[N][N], f[N][N][N], g[N][…
题意:给你一个有向图, 并指定起点和终点. 问要从起点走向终点, 再从终点走向起点, 最少需要走过多少不同的节点. 对于 100%的数据, 有 N<=100, M<=min(1000,N*N). 图中可能有重边或者自环 思路: ; ..]of longint; q:..]of record x,y:longint; end; dis,f:..,..]of longint; inq:..,..]of boolean; n,m,i,j,k,cas,tot1,tot2,x,y,z:longint;…
2017.4.1: NOIP+Round1综合成绩出来,标准分离续命线差了80分,果然还是联赛坑挖太大了…… 不管怎么说能续命的话还是要试一下的…… 发毒誓:Round2前不打手游,不看NGA,不看星际,不看NBA…… 能翘的课全翘…… 学考选考看天……哪个脑残想出来的JB制度 其实就算到续命线,还不是要看板的外交功力和MG,Gold_7的成绩么…… 很快的,马上就退役了 Soon As I Get Home…
题意: 思路:分块 使用树状数组维护sum[i]的前缀和 使用主席树维护root到u的路径上点的编号出现的个数 每次操作如果是修改就加入队列 如果是询问,考虑块内操作对询问的影响,每次在x点加上y会使x到root的点sum都加上y 每根号n次操作就暴力重构一次,清空队列并求出新的sum[i]的前缀和 ..]of record l,r:longint; s:int64; end; sum,bit:..]of int64; stk:..,..]of longint; head,vet,next,fa…
题意: 思路: 根据欧拉定理,a^(phi(n)-1)为a mod n的逆元 ..]of longint; s,ans,x,mo,k,phi,tmp:int64; i,m,n,j:longint; function mult(x,y:int64):int64; var tmp:int64; begin tmp:=x; mult:=; do begin = then mult:=mult*tmp mod mo; tmp:=tmp*tmp mod mo; y:=y>>; end; end; fun…