<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ttu___的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ttu___</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ttu___]]></copyright><item><title><![CDATA[UVA - 12563 Jin Ge Jin Qu hao]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/108630481</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/108630481</guid><author>ttu___</author><pubDate>Wed, 16 Sep 2020 21:08:55 +0800</pubDate><description><![CDATA[很久没发做题记录了，明天有个机试今天临阵磨枪……
某实验室好像非常钟爱背包，面试和机试都常考。紫书的背包题只有这一道，随便做做8
总时间t其实不会超过180*50（不包括劲歌金曲）
不用考虑自选歌总时间等于t的情况，因为所有歌都比劲歌金曲短，也就是说，最优解的最后一首歌总是劲歌金曲。所以时间限制到t-1就行。
用-1来标记在那个时间点不能唱歌。
#include&lt;bits/stdc++.h&gt;

using namespace std;
int main(){
    int casenum;
 ]]></description><category></category></item><item><title><![CDATA[UVA - 297 Quadtrees]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/107647565</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/107647565</guid><author>ttu___</author><pubDate>Tue, 28 Jul 2020 22:50:54 +0800</pubDate><description><![CDATA[夏令营暂告一段落 目前0offer状态
继续随心刷几题吧
#include &lt;bits/stdc++.h&gt;

using namespace std;
bool g[1124];
void buildTree(int level,int base){
    char c;
    scanf("%c",&amp;c);
    if(c=='p'){
        int perbloc=pow(2,level-2);
        buildTree(level-2,base);
   ]]></description><category></category></item><item><title><![CDATA[UVA - 514 Rails]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/106773870</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/106773870</guid><author>ttu___</author><pubDate>Mon, 15 Jun 2020 23:52:41 +0800</pubDate><description><![CDATA[okk 买了紫书 没事刷一刷UVa
UVa打开挺慢的 这里用的是virtual judge 感觉还好
记得PAT甲级里面有道跟这个意思差不多的 模拟一下进出栈顺序 碰到和栈顶数字一样的就出栈 最后栈空就是对的顺序 不空就是不对
#include &lt;bits/stdc++.h&gt;

using namespace std;

int main(){
    int n;
    while(1){
        cin&gt;&gt;n;
        while(n!=0){
        ]]></description><category></category></item><item><title><![CDATA[1009 Product of Polynomials (25分)]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/106755167</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/106755167</guid><author>ttu___</author><pubDate>Mon, 15 Jun 2020 01:28:00 +0800</pubDate><description><![CDATA[最后一题了！一直拖着没做是因为之前一直看不懂题目……
数个数和输出的时候要判断非零项，不能判断大于0因为可能有负数系数。
#include &lt;bits/stdc++.h&gt;
using namespace std;
vector&lt;double&gt; a(1001,0.0),b(1001,0.0),c(2001,0.0);

int main(){
    int n;
    cin&gt;&gt;n;
    for(int i=0;i&lt;n;i++){
        int ex]]></description><category></category></item><item><title><![CDATA[1033 To Fill or Not to Fill (25分)]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/106755115</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/106755115</guid><author>ttu___</author><pubDate>Mon, 15 Jun 2020 01:05:41 +0800</pubDate><description><![CDATA[大概想法是

找在可达范围内第一个油价比当前油价低的站点


开到那里 更新参数


如果范围内没有油价更低的站点


把油加满 并把参数更新到范围内油价最低的站点



第二个点卡了好久 发现是要加一个对起始点是否为0的判断
#include &lt;bits/stdc++.h&gt;

using namespace std;
struct Node{
    double price,distance;
    bool friend operator &lt;(Node a,Node b){
   ]]></description><category></category></item><item><title><![CDATA[1015 Reversible Primes (20分)]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/106740769</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/106740769</guid><author>ttu___</author><pubDate>Sun, 14 Jun 2020 00:19:38 +0800</pubDate><description><![CDATA[决定要考这次pat了 就把剩下的都刷刷完吧
因为进制在2-10之间 所以转换函数就自己写了 而且atoi strtol那些参数大概率我记不住
另外1不是素数
#include &lt;bits/stdc++.h&gt;

using namespace std;
bool isPrime(long long num){
    if(num==2)return true;
    else if(num&lt;2)return false;
    long long sq=sqrt(num)+1;
   ]]></description><category></category></item><item><title><![CDATA[1131 Subway Map (30分)]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/106109102</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/106109102</guid><author>ttu___</author><pubDate>Wed, 13 May 2020 23:05:30 +0800</pubDate><description><![CDATA[PAT30分最后一题做完了，????的青春结束了
一般最后一题都是dijkstra做，加上之前做的几题刚好是dij找相同最短路径+dfs遍历确认所以第一次做这题的时候绕进去了（那样是24分，一个点WA一个点TLE）。然后参考了一下柳婼大神的思路，一次dfs解决，比想象的要轻松很多
dfs过程中记录每个站点到起始点的最短距离。换乘次数的局部最优不能推导全局最优，但是距离是可以的。所以当当前到达该站点的距离大于已有的距离时返回。判断返回的时候不能把换乘次数考虑进去，因为距离才是第一标尺，换乘次数要到搜索到终点时]]></description><category></category></item><item><title><![CDATA[1026 Table Tennis (30分)]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/106080561</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/106080561</guid><author>ttu___</author><pubDate>Tue, 12 May 2020 17:18:57 +0800</pubDate><description><![CDATA[终！于！过！了！PAT三十分题中行数最多的一道（瘫）或许1131Subway Map的行数也可与之一战（还没AC）今天调了三个来钟头吧可怕考试考到肯定很焦虑 毕竟三个钟头还是按着牛客用例调的==
几个注意点：

最后等待时间换成分钟，四舍五入
如果人在21点前到，但是加上服务时间超过21点，还是要继续输出
如果人在21点整及以后到，不算
如果有两个人的开始服务时间相等，那么等待时间长的要靠后输出
VIP用户的优先选择：VIP空闲桌中号码最小的&gt;所有空闲桌中号码最小的
如果playing time超过1]]></description><category></category></item><item><title><![CDATA[1108 Finding Average (20分)]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/106045987</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/106045987</guid><author>ttu___</author><pubDate>Mon, 11 May 2020 01:55:55 +0800</pubDate><description><![CDATA[一个拖了蛮久的题……是之前一直没发现用scanf读string有问题的时候写的，找了很久是不是输出不对，后来发现应该是resize之后string的end就应该不是有效位数的结尾了。反正以后都记着只用cin读string了
今天力扣一直没刷新每日一题……
#include &lt;bits/stdc++.h&gt;
using namespace std;
int n;
bool isint(string str){
    if(str[0]=='-') str.erase(0,1);
    auto ]]></description><category></category></item><item><title><![CDATA[236. 二叉树的最近公共祖先]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/106030874</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/106030874</guid><author>ttu___</author><pubDate>Sun, 10 May 2020 00:50:27 +0800</pubDate><description><![CDATA[给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为：“对于有根树 T 的两个结点 p、q，最近公共祖先表示为一个结点 x，满足 x 是 p、q 的祖先且 x 的深度尽可能大（一个节点也可以是它自己的祖先）。”
PAT上都是给遍历序列推LCA，所以其实用指针做还是第一次
记录父节点，找到根节点上第一个重复的节点。
class Solution {
public:
    unordered_map&lt;TreeNode*,TreeNode*&gt; mp;
    vo]]></description><category></category></item><item><title><![CDATA[1282. 用户分组]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/106026383</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/106026383</guid><author>ttu___</author><pubDate>Sat, 09 May 2020 19:33:03 +0800</pubDate><description><![CDATA[有 n 位用户参加活动，他们的 ID 从 0 到 n - 1，每位用户都 恰好 属于某一用户组。给你一个长度为 n 的数组 groupSizes，其中包含每位用户所处的用户组的大小，请你返回用户分组情况（存在的用户组以及每个组中用户的 ID）。
你可以任何顺序返回解决方案，ID 的顺序也不受限制。此外，题目给出的数据保证至少存在一种解决方案。
就还蛮迷惑的哦 分到贪心类里面官方题解也只有哈希没有贪心 暂时也想不出来贪心做法
class Solution {
public:
    vector&lt;vec]]></description><category></category></item><item><title><![CDATA[221. 最大正方形]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/105986197</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/105986197</guid><author>ttu___</author><pubDate>Fri, 08 May 2020 03:09:43 +0800</pubDate><description><![CDATA[在一个由 0 和 1 组成的二维矩阵内，找到只包含 1 的最大正方形，并返回其面积。
暴力法：扫描每一个位置，更新该位置的对应的边长。从现有的最大边长+1开始比较，到到达matrix边界时结束。如果可能的最大边长小于等于现有边长就直接返回。最后返回边长*边长。
class Solution {
public:

    int side,wid,hei;
    void check(vector...]]></description><category></category></item><item><title><![CDATA[面试题 02.05. 链表求和]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/105978017</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/105978017</guid><author>ttu___</author><pubDate>Thu, 07 May 2020 17:57:53 +0800</pubDate><description><![CDATA[给定两个用链表表示的整数，每个节点包含一个数位。
这些数位是反向存放的，也就是个位排在链表首部。
编写函数对这两个整数求和，并用链表形式返回结果。
正向存放也是一样的，正向逆向来一遍就行了
class Solution {
public:
    ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {
        int len1=0,len...]]></description><category></category></item><item><title><![CDATA[142. 环形链表 II]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/105976484</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/105976484</guid><author>ttu___</author><pubDate>Thu, 07 May 2020 17:01:40 +0800</pubDate><description><![CDATA[给定一个链表，返回链表开始入环的第一个节点。 如果链表无环，则返回 null。
感觉自己是铁five了
vector搜索
class Solution {
public:
    ListNode *detectCycle(ListNode *head) {
        vector&lt;ListNode*&gt; lis;
        while(head!=NULL){
      ...]]></description><category></category></item><item><title><![CDATA[98. 验证二叉搜索树]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/105926670</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/105926670</guid><author>ttu___</author><pubDate>Tue, 05 May 2020 00:56:35 +0800</pubDate><description><![CDATA[今天的题，验证二叉搜索树。
假设一个二叉搜索树具有如下特征：

节点的左子树只包含小于当前节点的数。
节点的右子树只包含大于当前节点的数。（也就是说[1,1]应该是false）
所有左子树和右子树自身必须也是二叉搜索树。

一个月前写过，现在的我揣摩不透当时的思维
今天的：中序遍历之后验证序列是否递增，应该是比较自然的思路
class Solution {
public:
    vector&l...]]></description><category></category></item><item><title><![CDATA[34. 在排序数组中查找元素的第一个和最后一个位置]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/105898693</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/105898693</guid><author>ttu___</author><pubDate>Sun, 03 May 2020 04:33:44 +0800</pubDate><description><![CDATA[给定一个按照升序排列的整数数组 nums，和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。
你的算法时间复杂度必须是 O(log n) 级别。
如果数组中不存在目标值，返回 [-1, -1]。
就……二分
class Solution {
public:
    int findleft(int l,int r,int target,vector&lt;int&gt;&am...]]></description><category></category></item><item><title><![CDATA[19. 删除链表的倒数第N个节点]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/105898684</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/105898684</guid><author>ttu___</author><pubDate>Sun, 03 May 2020 04:16:57 +0800</pubDate><description><![CDATA[给定一个链表，删除链表的倒数第 n 个节点，并且返回链表的头结点。
进阶：你能尝试使用一趟扫描实现吗？
多趟扫描也不好实现吧难道要一个个从尾元素开始逼近倒数第123…k个元素吗
按顺序push进vector，取前面的元素改一下next指针就完了，如果要删除的是头元素就直接返回next。不知道这道题为啥能成中等（也可能是这题目另有玄机我没看懂 ）
class Solution {
public:
 ...]]></description><category></category></item><item><title><![CDATA[42. 接雨水]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/105898669</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/105898669</guid><author>ttu___</author><pubDate>Sun, 03 May 2020 04:00:51 +0800</pubDate><description><![CDATA[PAT刷了就剩几题了，开始发一点力扣的解题记录。
给定 n 个非负整数表示每个宽度为 1 的柱子的高度图，计算按此排列的柱子，下雨之后能接多少雨水。

之前好像看到字节面试题有这道
最开始是想，每次都关注最底下那一行，计算完一行的雨水数后将这一行高度降低1，直到所有高度都为0或只有一个高度不为0。显然当高度很大时容易超时，用例最后一个不通过。
int trap(vector&lt;int&gt;&...]]></description><category></category></item><item><title><![CDATA[1122 Hamiltonian Cycle (25分)]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/105894109</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/105894109</guid><author>ttu___</author><pubDate>Sat, 02 May 2020 19:17:44 +0800</pubDate><description><![CDATA[Hamiltonian Cycle：首尾相连，经过所有元素，且必须是可行路径。依次判断。
有时候过不过还挺玄妙的，经常是一些不涉及逻辑的小改动……
#include &lt;bits/stdc++.h&gt;
#define INF 9999999
using namespace std;
const int maxn=210;
int m,n,query;
//int path[maxn];这里...]]></description><category></category></item><item><title><![CDATA[1112 Stucked Keyboard (20分)]]></title><link>https://blog.youkuaiyun.com/ttu___/article/details/105885882</link><guid>https://blog.youkuaiyun.com/ttu___/article/details/105885882</guid><author>ttu___</author><pubDate>Sat, 02 May 2020 03:30:08 +0800</pubDate><description><![CDATA[一个字符重复m次将被视为坏键。如果一个字符被扫描到k次且k整除m，那k就可判定为坏键。但当某字符重复出现k1(k1%m==0)和k2次(k2%m!=0)时，该字符将不视作坏键。
注意最后要根据扫描的顺序输出坏的键
#include &lt;bits/stdc++.h&gt;
using namespace std;

int main(){
    int n1;
    cin&gt;&gt;n...]]></description><category></category></item></channel></rss>