首页 > TAG信息列表 > ans1
题解 CF1712D Empty Graph
CF1712D 洛谷的 CF 的提交无了,所以可能没人来看了,但是在题解区是清一色的二分,而唯一一篇贪心题解的讨论还略显复杂的情况下,我还是希望提供一种比较简洁的贪心题解。 在复杂度允许的情况下,尽可能把东西丢给机子去做。 ——秋语橙 方便起见,以下记 \(MD=10^9\). 贪心做法需要一些结P4343 [SHOI2015]自动刷题机题解
题型考察 根据数据范围可以大致确定是 \(\text{O(nlogn)}\) 或 \(O(n)\) 的算法才可以通过本题。考虑二分,可以发现问题具有单调性:设 \(check(x)\) 为长度为 \(x\) 时切的题数,则对于 \(x < y\) 而言,\(check(x) \leq check(y)\)。 思路 本题要求的是最大值和最小值分开讨论。 对于最leetcode每日一题-1305. 两棵二叉搜索树中的所有元素
简单题:中序+归并 class Solution { public: vector<int> ans1,ans2,ans3; void dfs(TreeNode* root,vector<int> &ans){ if(root==nullptr) return ; dfs(root->left,ans); ans.emplace_back(root->val); dfs(root-&[数据结构PTA]最小子列和
最小子列和 法1:(n3)暴力略 法2 :O(n2) #include<iostream> using namespace std; const int N = 1e5+10; int a[N]; int t[N]; int ans = -1e8; int main() { int k; cin >> k; for(int i = 0; i < k; i++)scanf("%d",&a[i]); for(int iCF888E Maximum Subsequence 题解
首先看完本题,最直接的想法就是——爆搜! 但是, \(2^{35}\) 让我们望而却步,因此我们需要考虑一定的优化。 而本题的优化是十分经典的 折半搜索 (Meet in middle) 算法。 折半搜索的主要思路就是:将序列裂成两半搜索,然后合并答案。 对于这道题,我们首先对 \([1,\dfrac{n}{2}]\) 做一次暴力task5.c
#include<stdio.h> int main() { char ans1,ans2; printf("第3章认真学完一遍了没?(输入y或Y表示认真学完一边了,输入n或N表示没有):"); ans1 = getchar(); getchar(); printf("\n动手敲代码实践了没?(输入y或Y表示敲了,输入n或N表示木有敲:");task.5 c
#include <stdio.h> int main() { char ans1, ans2; printf("第3章认真学完一遍了没? (输入y或Y表示认真学完一遍了,输入n或N表示没有) :"); ans1 = getchar(); getchar(); printf("\n动手敲代码实践了没? (输入y或Y表示敲了,输入n或N表示木有敲) : "); a实验5
#include <stdio.h> int main() { char ans1, ans2; printf("第三章认真学完一遍了没?(输入Y或y表示认真学完一遍了,输入n或N表示没有):"); ans1 = getchar(); getchar(); printf("\n手动敲代码实践了没?(输入y或Y表示敲了,输入n或N表示木有敲):"); ans2 = getchar(); if(ans1=='y将程序task5.c补充完整。使得程序实现如下功能: 只有当用户两次回答都是小写y或大写Y时,才会打印输出:罗马不是一天建成的:) 否则,会打印输出:罗马不是一天毁灭的。。。
#include <stdio.h> int main() { char ans1, ans2; printf("第3章认真学完一遍了没? (输入y或Y表示认真学完一遍了,输入n或N表示没有) :"); ans1 = getchar(); // 从键盘输入一个字符,赋值给ans1 getchar(); // 思考这里为什么要加这一行。试着去掉这一行,看看对运行有没有影响。 p(4.4B)出租车费
题目: 样例: 代码: #include<stdio.h> #include<math.h> int main(){ int n; while(1){ scanf("%d",&n); if(n==0){ break; } int ans=0; double ans1=0; //注意只有在答案不是整数的时候才保留一位小数输出 if(n<=4){ ans=10; printf("%dB. Repetitions Decoding 题解(思维+构造)
题目链接 题目思路 如果所有元素出现都是偶数次,那么就有办法,否则就没有办法 这个题目感觉构造方法不是很难想 就是每次假设出现了 \(A B CA\) 那么每次消去两个\(A\)然后中间的字符翻转 如何写很巧妙,我是参考一位大佬的代码 采用从后往前遍历,因为如果从前往后很麻烦 具体实现看代洛谷AT3867 [AGC021A] Digit Sum 2
传送门 题意翻译 给出N,求小于等于N的正整数中用十进制表示各数位数字之和的最大值。 思路: 分两种情况: 1.本身所有数都加起来 2.把第1位-1,剩下来的全部变成9 代码也不难: #include<bits/stdc++.h> using namespace std; char a[20]; int ans1,ans2;//ans1为第一种情况,ans2为第二实验2
任务1 #include<stdio.h> int main(){ int n; scanf("%d",&n); printf("2049%04d\n",n); scanf("%d",&n); printf("2049%04d\n",n); scanf("%d",&n); printf("实验2
#include <stdio.h> #include <stdlib.h> #include <time.h> const int N = 5; int main() { int x,n; srand(time(0)); for(n=1;n<=N;n++) { x=rand() %100; printf("%3d",x); } pric++小数保留(setprecision(n))与浮点型整形运算的相关
测试代码: #include<iostream> using namespace std; #include<iomanip> int main() { double ans1; double ans2; double ans3; int a, b; cin >> a >> b; ans1 = a / b; ans2 = a / b * 1.0; ans3 = a * 1.0 / b; cout << "正常输出:&q实验二2(有错)
#include<stdio.h> #include<stdlib.h> int main() { char ans1,ans2; printf("复习了没?(输入y或Y表示复习了,输入n或N表示没复习):"); ans1=getchar(); getchar(); printf("\n动手敲代码了没?(输入y或Y表示敲了,输入n或N表示木有敲):"); ans2=getchar();P2168 [NOI2015] 荷马史诗
用哈夫曼树的思想,每次取出k小,合成。注意要加些0使得最后成为满k叉树 const int N=1e5+79; lxl n,k; struct node{ lxl w,d; bool operator <(const node &x)const { if(w!=x.w) return w>x.w;else return d>x.d;} }; std::priority_queue<node> q; int main() { read(n);re洛谷p1880 & 圆形石子堆合并 & dp
n堆石子,只能相邻两堆合并,每次合并均计算得分,求最大值和最小值 f[i][j]表示从第i堆到第j堆的得分 因为题中已经说了为圆形操场,故还需要进行分界圆 洛谷p1880 dp for (int len = 2; len <= n; len++) //必须放在dp第一位,确定合并的长度, { for (int i = 1; i + len - 1 < 2 *10.13 深基阅读(昨天体测跑完发烧了,所以鸽了一天owo)
进度: 2.1数据类型看完了,但是由于书上讲得太简略,所以还需要找其他书巩固 总体感受: 果然速成书不太适合我这种“先总体后局部”战士,但是没关系,就当学一种新的学习思路了owo 知识点总结(新增板块): 见下图 易错点(原“所犯错误”): 好像没有,因为我今天状态不是特别好 未解决问题: 1. ch洛谷P1007 独木桥——思维题
遭受了普及-的智商碾压orz 其实就是说 两个人相遇后调头, 和互相穿过 完 全 等 价 啊 !!! 想到这一点就是入门-了吧 #include <iostream> #include <algorithm> using namespace std; const int maxn = 5e3 + 10; int n, l, a[maxn], ans1, ans2; int main() { cin >> l >> n; for[NOIP1999]拦截导弹
题目 思路 就是求最长不上升子序列和最长不上升子序列的最少数量 根据dilworth定理我们知道可划分的最少不上升子序列的数目就是其最长下降子序列的长度。 代码 #include<cmath> #include<vector> #include<string> #include<cstring> #include<iostream> #include<algorithB. Red and Blue【1000 / 思维】
https://codeforces.com/problemset/problem/1469/B 题目的意思就是给了我们两个数组,每一个数组的顺序,在合并后的数组里是不变的。 你会发现俩数组的贡献是没有关系的。 即我们在数组A中取一个最大的前缀和。 B中也去一个最大的前缀和。 输出这两的和即可。 #include<bits/sHash Map
unordered_map<int,int>Hash; for(auto it=Hash.begin();it!=Hash.end();++it) { ans1=max(ans1,it->second); if(it->first==1||it->second%2==0) { ans2+=it->second; } } 声明是unordered_map<int,int>名字。 aut翻转字符串里的单词
变量简洁正确完整思路 left来到一个字符,right来到最后一个字符,如果s[left]不是空格就word+=s[left],遇到空格将单词push_back到双端队列deque ans1,string ans从ans1前部取单词+=并加空格,ans1空了就不要加空格 精确定义 left right ans1 ans word class Solution { publi单词拆分II
变量简洁正确完整思路 一个问题所有具体解用dfs,dfs形参len对字符串进行如图dfs,len==0更新答案ans,dfs常用参数len,逆向枚举分割点i,如果后半段substr在dict中且前半段满足dpi,则加入答案ans1前端(ans1用deque)并dfs枚举前端,或者不要 精确定义 dpi 0到i字符串是否在dict中,dp0是