2017北京国庆刷题Day3 morning】的更多相关文章

期望得分:100+60+0=160 实际得分:100+30+0=130 考场上用的哈希 #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define mod 1000003 #define mod2 100003 ]; bool vis[mod],vis2[mod2]; int hash1,hash2; int gethash() { int len=strlen(…
期望得分:100+0+30=130 实际得分:100+36.5+0=136.5 T3 一个变量写混了,丢了30.. 模拟栈 #include<cstdio> #include<cstring> using namespace std; #define N 10001 char s[N]; int st[N],top; int main() { freopen("a.in","r",stdin); freopen("a.out&quo…
期望得分:100+100+100=300 实际得分:100+100+100=300 T1 一道图论好题(graph) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,不仅有边权还有点权. LYK给出了一个子图的定义,一张图G’={V’,E’}被称作G的子图,当且仅当 ·G’的点集V’包含于G的点集V. ·对于E中的任意两个点a,b∈V’,当(a,b)∈E时,(a,b)一定也…
期望得分:100+0+100=200 实际得分:100+20+0=120 离散化搞搞 #include<cstdio> #include<iostream> #include<algorithm> using namespace std; #define N 100001 int a[N],b[N]; bool vis[N]; void read(int &x) { x=; char c=getchar(); while(!isdigit(c)) c=getch…
期望得分:100+60+100=260 实际得分:0+60+40=100 设图中有m个环,每个环有si条边,有k条边不在环中 ans= (2^s1 -2)*( 2^s2 -2)* (2^s3 -2)…… *( 2^sm -2)* 2^k (环上的边只有两种可能形成环) 找环好找,怎么找树? 一种方法是tarjan找出所有的环,总边数-环的边数=树的边数 std用了拓扑排序 考场上忘了树的情况,爆零了. 注意:n个点n条边是环套树森林 #include<cstdio> #define N 100…
期望得分:100+100+50=250 实际得分:100+70+50=220 T1 最大值(max) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一本书,上面有很多有趣的OI问题.今天LYK看到了这么一道题目: 这里有一个长度为n的正整数数列ai(下标为1~n).并且有一个参数k. 你需要找两个正整数x,y,使得x+k<=y,并且y+k-1<=n.并且要求a[x]+a[x+1]+…+a[x+k-1]+a[y]+a[y+1]+…+a[y+k-1…
期望得分:100+100+40=240 实际得分:100+40+0=140 T1 一道图论神题(god) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一张无向图G={V,E},这张无向图有n个点m条边组成.并且这是一张带权图,只有点权. LYK想把这个图删干净,它的方法是这样的.每次选择一个点,将它删掉,但删这个点是需要代价的.假设与这个点相连的还没被删掉的点是u1,u2,…,uk.LYK将会增加a[u1],a[u2],…,a[uk]的疲劳值.…
期望得分:0+40+30=70 实际得分:0+10+10=20 题目修改:只能由0变1,只能用一次操作 大模拟 #include<cstdio> #include<cstring> using namespace std; ]; int len,n; ]; bool solve1() { if(len!=n) return false; ; ;i<len;i++) ; )==) { puts(s); return true; } return false; } bool so…
期望得分:0+60+60=120 实际得分:0+30+60=90 令g=gcd(X11,X12,X13……) 则行列式可能为D的充要条件为g|D 1.g|D为必要条件: 由定义来算行列式的时候,每一项都要从第一行里取一个数,所以g|D 2.g|D为充分条件: 首先可以通过矩阵的初等变换,将矩阵X消成对角矩阵 其中,X11* X22 * X33* X44=D 上述矩阵等价于 把D拆为g*D/g 还原到矩阵中 即     X22= 此矩阵模拟先前初等变换即可还原为原矩阵X #include <alg…
期望得分:100+100+0=200 实际得分:5+0+0=5 每加入一个数,x的因数位置++ 注意:根号x枚举时,如果x是完全平方数,根号x会重复累计2次,要减去 考场上没减,5分 /(ㄒoㄒ)/~~ #include<cmath> #include<cstdio> #include<iostream> using namespace std; #define N 40001 int sum[N]; void read(int &x) { x=; char c…
期望得分:100+100+40=240 实际得分:100+0+40=140 二进制拆分.二进制前缀和 #include<cstdio> #include<iostream> using namespace std; typedef long long LL; #define N 100001 int a[N],b[N],c[N]; ; ],sumb[N][]; ]; void read(int &x) { x=; char c=getchar(); while(!isdig…
期望得分:100+30+100=230 实际得分:60+30+100=190 排序去重 固定右端点,左端点单调不减 考场上用了二分,没去重,60 #include<cstdio> #include<iostream> #include<algorithm> using namespace std; #define N 100001 void read(int &x) { x=;char c=getchar(); while(!isdigit(c)) c=getc…
期望得分:100+100+20=220 实际得分:100+100+20=220 模拟栈 #include<cstdio> #include<cstring> using namespace std; #define N 10002 char s[N],st[N]; int top; int main() { freopen("kakutani.in","r",stdin); freopen("kakutani.out",&…
期望得分:100+100+100=300 实际得分:100+100+70=270 T1位运算1(bit) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK拥有一个十进制的数N.它赋予了N一个新的意义:将N每一位都拆开来后再加起来就是N所拥有的价值.例如数字123拥有6的价值,数字999拥有27的价值. 假设数字N的价值是K,LYK想找到一个价值是K-1的数字,当然这个答案实在太多了,LYK想使得这个价值为K-1的数字尽可能大. 输入格式(bit.in…
T2火柴棒 (stick) Time Limit:1000ms   Memory Limit:128MB 题目描述 众所周知的是,火柴棒可以拼成各种各样的数字.具体可以看下图: 通过2根火柴棒可以拼出数字“1”,通过5根火柴棒可以拼出数字“2”,以此类推. 现在LYK拥有k根火柴棒,它想将这k根火柴棒恰好用完,并且想知道能拼出的最小和最大的数分别是多少. 输入格式(stick.in) 一个数k. 输出格式(stick.out) 两个数,表示最小的数和最大的数.注意这两个数字不能有前导0. 输入样…
D2 今天的题感觉还是好妙的 T1 传送门 Description 现在有一张\(n\)个节点\(m\)条边的无向连通图\(G=(V,E)\),满足这张图中不存在长度大于等于3的环且图中没有重边和自环. 定义两个点\(u,v\)的距离\(d(u,v)\)为这两个点之间最短路上的点数,求 \[min_{u~\in~V}~max_{v~\in~V}~d(u,v)\] Input 第一行两个正整数n,m,表示点数边数 接下来\(m\)行,每行两个正整数,描述一条无向边 Output 一行一个整数代表答…
Day1 事实上D1的题目还是比较简单的= =然而D1T2爆炸了就十分尴尬--错失一波键盘 看题 T1 传送门 Description 现在你手里有一个计算器,上面显示了一个数\(S\),这个计算器十分的牛逼,他只有两个按钮,分别可以把屏幕上显示的数加上\(1\)或者减去\(1\).并且,如果计算器屏幕上的数变成了负数,那么计算器就会损坏.现在你想要在\(K\)次操作之内吧屏幕上的数字变成\(T\),而且不让计算器损坏,求一共有多少种方案. 两种方案不同当且仅当按钮被按下的序列不同 Input…
竞赛时间:????年??月??日??:??-??:?? 题目名称 a b c 名称 a b c 输入 a.in b.in c.in 输出 a.out b.out c.out 每个测试点时限 1s 1s 1s 内存限制 256MB 256MB 256MB 测试点数目 10 10 10 每个测试点分值 10 10 10 是否有部分分 无 无 无 题目类型 传统 传统 传统 a [问题描述] 你是能看到第一题的 friends 呢. ——hja 怎么快速记单词呢?也许把单词分类再记单词是个不错的选择.…
竞赛时间:????年??月??日??:??-??:?? 题目名称 a b c 名称 a b c 输入 a.in b.in c.in 输出 a.out b.out c.out 每个测试点时限 1s 1s 1s 内存限制 256MB 256MB 256MB 测试点数目 6 100 或 200 10 每个测试点分值 16 或者 17 1 或 0.5 10 是否有部分分 无 无 无 题目类型 传统 传统 传统 a [问题描述] 你是能看到第一题的 friends 呢. ——hja 给你一个只有小括号和中…
括号序列(bracket) Time Limit:1000ms   Memory Limit:128MB 题目描述 LYK有一个括号序列,但这个序列不一定合法. 一个合法的括号序列如下: ()是合法的括号序列. 若A是合法的括号序列,则(A)是合法的括号序列. 若A和B分别是合法的括号序列,则AB是合法的括号序列. LYK想通过尽可能少的操作将这个不一定合法的括号序列变成合法的括号序列.一次修改操作是将某个字符变成另一个字符. 你能帮帮它吗? 输入格式(bracket.in) 一行一个字符串S.…
题目链接 题意:在n*m的矩阵中选择变换或者不变换一个数变成p,使得最大子矩阵和最小 1<=n,m<=150, -1000<=p<=1000; 题解: 他人题解链接 涉及到知识点求最大矩阵和 : memset(ma,0x88,sizeof(ma)); memset(dp,0,sizeof(dp)); ans=-inf; for(int i=1;i<=n;i++) { for(int l=1;l<=m;l++) { sum=0; for(int r=l;r<=m;r…
类型:三维动态规划 题目链接 题意: 合并连续石头块,最终要合并成一块,求时间最短,每次只能连续合并L~R块石头,不能合并成一块时输出-1 题解: 利用动态规划解决两种分问题 dp[l][r][k]:表示在区间l到r之间分成k堆石头的最小代价 当k=1时,转移方程为:dp[l][r][1]=min(dp[l][r][1],dp[l][i][x-1]+dp[i+1][r][1]+sum[l][r]); 当k>=2时,转移方程为:dp[l][r][k]=min(dp[l][r][k],dp[l][i…
/* 可以并查集维护 可以发现,某个联通快出现大于等于2个环,一定无法分配. 有解要么一个环,要么没有环. 一个环时答案等于点数乘2(顺时针或逆时针). 没有环是树,对于一个n个点的树,方案一定有n种(不连某个点). */ #include<iostream> #include<cstdio> #include<cstring> #define N 100007 #define mod 1000000007 #define ll long long using name…
#1629 : Graph 时间限制:4000ms 单点时限:4000ms 内存限制:256MB 描述 The country contains N cities numbered from 1 to N and M undirected roads connecting pairs of cities. There are some queries. Each query is represented by two numbers: L and R , meaning that all the…
[LOJ6067][2017 山东一轮集训 Day3]第三题 FFT 题目大意 给你 \(n,b,c,d,e,a_0,a_1,\ldots,a_{n-1}\),定义 \[ \begin{align} x_k&=b\times c^{4k}+d\times c^{2k}+e\\ f(x)&=\sum_{i=0}^{n-1}a_ix^i \end{align} \] 求 \(f(x_0),f(x_1),\ldots,f(x_{n-1})\). 对 \({10}^6+3\) 取模. 题解 直接多…
[LOJ#6066]「2017 山东一轮集训 Day3」第二题(哈希,二分) 题面 LOJ 题解 要哈希是很显然的,那么就考虑哈希什么... 要找一个东西可以表示一棵树,所以我们找到了括号序列. 那么二分一个答案\(d\),把所有点挂到\(d+1\)次祖先上去,那么\(d+1\)次祖先的哈希值就是它原本的括号序列挖去了若干段,直接暴力哈希拼接起来就好了. #include<iostream> #include<cstdio> #include<cstdlib> #inc…
收到swe提前批面试hhh算是ep挂了的后续 努力刷题呀争取今年冲进去! Num 21 合并两个有序链表 Merge Two Sorted Lists 注意新开的链表用来输出结果的是ListNode *l3=new ListNode(0)这样的写法 还有就是,注意一下可能会返回到NULL,有必要重新写一下 因为是链表,最后就直接补上去就ok了,一个一个加有可能触发NULL /** * Definition for singly-linked list. * struct ListNode { *…
声明:本文以学习为目的,请不要影响他人正常判题 HDU刷题神器,早已被前辈们做出来了,不过没有见过用python写的.大一的时候见识了学长写这个,当时还是一脸懵逼,只知道这玩意儿好屌-.时隔一年,决定自己实现这个功能. 96名,没有再继续刷(,,,已经被管理员发现啦) 首先对辛苦刷题的acmer和hdu的管理员道歉,各位,抱歉. 介绍整体思路: 整体用多线程:线程执行从爬代码到提交的全部过程 分层次:对搜索引擎搜索的结果,进行划分,分层爬取 局部思路: 爬取搜索引擎得到的与题目相关的url,得到…
今天学了莫比乌斯反演,竟然破天荒的自己推出来了一个题目!有关莫比乌斯反演的题解,和上次的01分数规划的题解明天再写吧~~~ 学长们都在刷面试题,我也去试了试,120分钟,写出6题要有一点熟练度才行.先填上水题咯~·~~,4题可以进面试了,还是可以去面试的啦,开心~~~ 多线程协作打印(完美世界2017秋招真题) 建立m个线程,每个线程只能打印一种字符,要求线程同时运行,交替打印n次字符. 比如: n=3 m=2打印字符为A和B.要求线程1打印3次A,线程2打印3次B,在屏幕输出ABABAB 注意…
不多说,直接上干货! 集合框架中包含了大量集合接口.这些接口的实现类和操作它们的算法. 集合容器因为内部的数据结构不同,有多种具体容器. 不断的向上抽取,就形成了集合框架. Map是一次添加一对元素.Collection是一次添加一个元素. iterator是迭代获取元素 第一大类:Iterator 迭代器是一个对象,它是遍历并选择序列中的对象. 说比了,就是给后面的Collection接口里的实现类使用搭配的,为了取值罢了.    Iterator 只能正向遍历集合,适用于获取移除元素. Li…