12 2019 档案

cf1207E——交互,思维
摘要:/* a=Ai^x b=Bj^x a^b=Ai^Bj 只要让A[]占后7位,B[]占前7位,就可以算出Bj 然后x=b^bj */ #include<bits/stdc++.h> using namespace std; #define N 205 int a,b,A[N],B[N]; void a 阅读全文

posted @ 2019-12-29 21:19 zsben 阅读(147) 评论(0) 推荐(0) 编辑

cf1271D——经典 dp+贪心+图论
摘要:/* 该题目很好的将图论和dp的状态转移结合在了一起 首先有一个贪心策略: 每个点都只能被离其最远(最靠右)的那个点派兵守卫,这个点可能是其自身 正确性显然:士兵留到越后面,其产生的贡献越大,所以不到关键时刻,就不派兵守卫 dp[i,j]表示进攻到i点时,剩余兵力为j时的最大收益 转移时的策略:将i 阅读全文

posted @ 2019-12-29 19:16 zsben 阅读(284) 评论(0) 推荐(0) 编辑

cf1271E——数学找规律,二分套二分
摘要:哎,规律就是难看出来 /* 二分判y是否可行,judge函数里: 找规律可以发现: y是奇数时 第0层:y 第一层:2y,2y+1 第二层:4y,4y+1,4y+2,4y+3 第三层:8y,8y+1,8y+2,8y+3,8y+4,8y+5,8y+6,8y+7 ... 第k层:[2^k*y,2^k*y 阅读全文

posted @ 2019-12-29 14:42 zsben 阅读(262) 评论(0) 推荐(0) 编辑

cf1272E——bfs反边图
摘要:/* 分别对奇数点和偶数点各求一次,首先每个点连两条单向边 1.建立一个源点s,和所有偶数点连边,一次bfs出来的是所有奇数点的答案 2.建立一个源点t,和所有奇数点连边,一次bfs出来的是所有偶数点的答案 */ #include<bits/stdc++.h> #include<vector> us 阅读全文

posted @ 2019-12-29 10:44 zsben 阅读(195) 评论(0) 推荐(0) 编辑

cf1272F——经典升维dp,好题!
摘要:/* 给两个括号序列,用一个合法的括号串来覆盖这两个串,求出这个最短串 这个问题可以分解成两个条件: 1.用一个最短的括号序列来覆盖这两个串 2.这个序列要合法 首先考虑第一个条件: 不难想到用两个状态dp[i,j]来表示匹配s[1..i],t[1..j]时的最短长度 转移也很简单:初始状态dp[0 阅读全文

posted @ 2019-12-29 00:10 zsben 阅读(191) 评论(0) 推荐(0) 编辑

cf1276B——割点+深搜树
摘要:/* 如果ab都是图的割点,那么答案非0,反之答案是0 把割点处断开后,原图裂成三张不联通的图,大小分别是size1,size2,size3. 求出同时包含这两个割点的图,设大小是size1,那么答案就是(size2-1)*(size3-1) */ #include<bits/stdc++.h> # 阅读全文

posted @ 2019-12-28 17:42 zsben 阅读(190) 评论(0) 推荐(0) 编辑

cf1276C——单调性分析,思维
摘要:/* 假设row<=col,先求出面积最大的矩阵的(row,col),再去考虑往里面填数 当前行是row时,这个矩阵里最多容纳同一个数row次, 将数统计之后,按出现次数排序,再从大到小枚举row,通过每个数的出现次数,算出此时最大的col 记录下最大的row和col,然后进行填数,填数时同一个数斜 阅读全文

posted @ 2019-12-28 13:04 zsben 阅读(229) 评论(0) 推荐(0) 编辑

cf1277D——思维贪心+字符串
摘要:总是把题目想复杂,哎 /* 所有0x0的摆在一起,1x1摆在一起 考虑0x1或1x0, 如果有0x0且1x1,但是没有0x1或1x0,那么不可行 所有0x0,1x1都接在同一个0x1两端,所以只要考虑0x1和1x0即可 如果一个 串的反串有对应的,那么这个串就不可以翻转,反之是可以的, 即可以从0x 阅读全文

posted @ 2019-12-28 00:31 zsben 阅读(218) 评论(0) 推荐(0) 编辑

cf1278C——dp
摘要:先预处理后一段的信息,然后前半段从前往后遍历一次,更新答案即可 #include<bits/stdc++.h> using namespace std; #define N 200005 int n,a[N]; map<int,int>mp; int main(){ int t;cin>>t; wh 阅读全文

posted @ 2019-12-27 19:40 zsben 阅读(156) 评论(0) 推荐(0) 编辑

cf1280B——分类讨论+模拟
摘要:一开始想复杂了,然后写了一大堆代码,其实2的情况是判一下四个角,再判一下每一行每一列即可 /* 结果必定<=4 0:所有人都是A 1:边界一整行都是A 2:非边界一整行/列都是A, 角落是A 3:剩余情况 4:A被P包围 不可能:都是P */ #include<bits/stdc++.h> usin 阅读全文

posted @ 2019-12-27 19:01 zsben 阅读(153) 评论(0) 推荐(0) 编辑

cf1280C——树的性质
摘要:/* 给定一颗2n结点的树,求两个值: 1.给每两个点配对,并且两点之间距离和最小 从叶子结点往上统计,如果子树大小是偶数,那么其到父亲的边权就不用统计,反之要统计 2.给每两个点配对,并且两点之间距离和最大 每条边都被尽可能的访问,一条边将树分成两部分,取小的那部分的size*边权就是这条边的贡献 阅读全文

posted @ 2019-12-27 17:46 zsben 阅读(179) 评论(0) 推荐(0) 编辑

cf1282C,E
摘要:D是个交互,一看就不太想做,于是把CE写了些,C算是比较简单的遍历,E写了老半天,近期感觉自己编码能力没以前那么强了 #include<bits/stdc++.h> using namespace std; #define ll long long #define N 200005 int n,T, 阅读全文

posted @ 2019-12-27 13:57 zsben 阅读(162) 评论(0) 推荐(0) 编辑

cf1278D——树的性质+并查集+线段树/DFS判环
摘要:昨天晚上本来想认真打一场的,,结果陪女朋友去了。。 回来之后看了看D,感觉有点思路,结果一直到现在才做出来 首先对所有线段按左端点排序,然后用并查集判所有边是否联通,即遍历每条边i,和前一条不覆盖它的边合并,和后一条不被它覆盖的边合并 再用线段树求边的总条数 ps.其实可以直接用并查集合并的思路,每 阅读全文

posted @ 2019-12-20 13:43 zsben 阅读(255) 评论(0) 推荐(0) 编辑

linux内核源码——内存管理:段页式内存及swap
摘要:os的内存管理大概可以分成两块:1.段页式管理(虚存)2.swap in 和 swap out 段页式管理 段式管理的图像:运行时重定位 多级页表的管理图像 块表加速 用户(程序员)希望用段,物理内存希望用页来进行管理 所以引入虚存的概念: 段面向用户,用户眼里的地址是0-4G,页面向物理内存,存储 阅读全文

posted @ 2019-12-19 20:18 zsben 阅读(616) 评论(0) 推荐(0) 编辑

Linux0.11内核源码——内核态进程切换的改进
摘要:本来想自己写的,但是发现了一篇十分优秀的博客 https://www.cnblogs.com/tradoff/p/5734582.html system_call的源码解析:https://blog.csdn.net/tq02h2a/article/details/2934094?utm_sourc 阅读全文

posted @ 2019-12-14 12:41 zsben 阅读(330) 评论(0) 推荐(0) 编辑

Linux0.11内核源码——内核态线程(进程)切换的实现
摘要:以fork()函数为例,分析内核态进程切换的实现 首先在用户态的某个进程中执行了fork()函数 fork引发中断,切入内核,内核栈绑定用户栈 首先分析五段论中的第一段: 中断入口:先把相关寄存器压栈保存,然后call真正的fork系统调用 当前进程被阻塞或时间片到后,使用调度算法进行线程切换 re 阅读全文

posted @ 2019-12-13 16:38 zsben 阅读(1257) 评论(0) 推荐(0) 编辑

linux0.11内核源码——用户级线程及内核级线程
摘要:参考资料:哈工大操作系统mooc 用户级线程 1.每个进程执行时会有一套自己的内存映射表,即我们所谓的资源,当执行多进程时切换要切换这套内存映射表,即所谓的资源切换 2.但是如果在这个进程中创建线程,共用一套资源,那么进行线程切换时,只要切换pc指针和栈指针esp即可,这样便省去了许多资源切换的操作 阅读全文

posted @ 2019-12-13 15:12 zsben 阅读(735) 评论(0) 推荐(0) 编辑

linux0.11内核源码——进程各状态切换的跟踪
摘要:准备工作 1.进程的状态有五种:新建(N),就绪或等待(J),睡眠或阻塞(W),运行(R),退出(E),其实还有个僵尸进程,这里先忽略 2.编写一个样本程序process.c,里面实现了一个函数 /* * 此函数按照参数占用CPU和I/O时间 * last: 函数实际占用CPU和I/O的总时间,不含 阅读全文

posted @ 2019-12-11 21:48 zsben 阅读(758) 评论(0) 推荐(0) 编辑

linux0.11源码内核——系统调用,int80的实现细节
摘要:linux0.11添加系统调用的步骤 假设添加一个系统调用foo() 1.修改include/linux/sys.h 添加声明 extern int foo(); 同时在sys_call_table数组的最后添加一个元素 ...,sys_foo 2.修改include/unistd.h 增加一个调用 阅读全文

posted @ 2019-12-10 21:31 zsben 阅读(1040) 评论(0) 推荐(0) 编辑

linux0.11内核源码——boot和setup部分
摘要:https://blog.csdn.net/KLKFL/article/details/80730131 https://www.cnblogs.com/joey-hua/p/5528228.html 参考的两篇博客 x86系统在刚开机时CPU处于实模式 计算机在刚打开电源时 :CS=0xFFFF, 阅读全文

posted @ 2019-12-09 15:55 zsben 阅读(881) 评论(0) 推荐(0) 编辑

cf 1263
摘要:A #include<bits/stdc++.h> using namespace std; int main(){ int t;cin>>t; while(t--){ int a[3]; cin>>a[1]>>a[2]>>a[3]; sort(a+1,a+4); int ans=0; if(a[1 阅读全文

posted @ 2019-12-04 16:47 zsben 阅读(259) 评论(0) 推荐(0) 编辑

导航

统计

点击右上角即可分享
微信分享提示