ICode9

精准搜索请尝试: 精确搜索
  • 矩阵快速幂2022-05-27 21:01:13

    矩阵快速幂其实就是运算的时候将幂优化了,可以近似看为快速幂 快速幂 求\(x^{n}\),当n为奇数时,n的二进制最后一位必定是1,可以将其与1来判断是否为奇数,与结果相乘 n为偶数时,\(x^{2}\) = x * x,然后与结果相乘,最后在除2即可,默认向下取整 #include <iostream> #include <cstring> #in

  • C语言 getchar()2022-05-23 20:01:47

    C语言 getchar() 代码: #include <stdio.h> int main(void) { int a; char b; a = getchar(); b = getchar(); printf("%d,%d\n",a,b);//49,50 printf("%c,%c\n",a,b);//1,2 printf("%d,%d",sizeof(a),sizeof(

  • 快读模板2022-05-20 18:32:55

    #include <bits/stdc++.h> using namespace std; const int MX = 1e5; const long long inf = 0x3f3f3f3f; inline int read() { int res = 0; bool sign = false; char c = getchar(); while(c < '0' || c > '9'){

  • 2046:【例5.15】替换字母2022-05-17 22:04:55

    2046:【例5.15】替换字母 时间限制: 1000 ms         内存限制: 65536 KB提交数: 17987     通过数: 9365 【题目描述】 在应用计算机编辑文档的时候,我们经常遇到替换任务。如把文档中的“电脑”都替换成“计算机”。现在请你编程模拟一下这个操作。 【输入】 输入两

  • [HAOI2008]硬币购物2022-05-16 22:32:20

    link 一开始以为是一道智商税题目,结果发现似乎并没有那么简单。这道题给我提供了许多很有价值的思路。 首先多重背包是肯定会死的,二进制拆分似乎也并不是很有用处 (\(O(QN\log N)\)肯定超时),于是想到整体减空白。 整体是什么?显然会是没有限制,也就是所有硬币随便用时的方案数,此时直接

  • 【CodeForces 613D】Kingdom and its Cities2022-05-10 13:33:20

    链接 洛谷 题目大意 给定一棵树,多组询问,每组询问给定 \(k\) 个点,你可以删掉不同于那 \(k\) 个点的 \(m\) 个点,使得这 \(k\) 个点两两不连通,要求最小化 \(m\),如果不可能输出 \(-1\)。询问之间独立。 思路 虚树板题。 虚树 针对一些有多组特殊点的树上问题。 如果只有一组特殊点,就是

  • 「ZJOI2022」众数2022-05-08 18:32:28

    显然只有原序列中的数有可能成为答案 于是离散化之后每个数独立,枚举每个数 这种问题可以考虑根号分治 \(c_i>B\),我们可以枚举中间那一段的颜色变成了什么,复杂度 \(O(n)\) \(c_i\leq B\),如果中间那一段的 \(c_j>B\),可以在 \(j\) 处类似上面那种方法处理一下,否则中间这一段最多 \(B

  • 关于使用 std::ios::sync_with_stdio(false)出现的问题以及解决方案2022-05-06 08:01:00

    昨天在做杭电1062的时候出现了一个问题: 就是关于使用cin和scanf输入变量n所出现的运行结果不一致,甚至是用了cin之后出现了超时的现象; 今天早上这个问题解决了 我以为是编译器的问题,但是从dev换到codeblock结果是一样的    之后进行了一下实验,发现  使用cin之后出现错误的原因

  • 【题解】【CF2B The least round way】2022-05-04 22:03:31

    我已经菜得连绿题都不会了。。。 Solution 首先要注意矩阵中有可能是0,因此要特判是否有0,最后跟不经过0的最优解进行比较。 要使尾0最少,发现只有质因子2和5的个数有贡献,因此可以设f[i][j][k]表示从(1,1)到(i,j)在有k个质因子2的情况下(若5的质因子多于2,则令k为负数,让下标加上一个M即

  • UVA10815 安迪的第一个字典 Andy's First Dictionary2022-04-29 00:02:26

    凌晨给卡了输入,应该是我少考虑一些情况了 晚上再写卡了一会输出 还是不太明白lrj 老师为什么放在set那里,vector,map也可以做,然后借这个机会学了set vector: // AC one more times #include<iostream> #include<vector> #include<algorithm> #include<string> #include<map> u

  • 洛谷P7167 [eJOI 2020 Day1] Fountain (单调栈+ST)2022-04-22 22:00:39

    开两个数组:to[i][j]表示从i这个位置向下的第2j个圆盘是哪个,f[i][j]表示流满从i这个位置向下的 2j 个圆盘需要多少体积的水。 详情见代码: 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N=1e5+10; 4 int d[N],c[N],r,v; 5 int n,q,f[N][20],to[N][20]; 6

  • 刷题题解(常见优化技巧)2022-04-16 10:02:59

    刷题题解(常见优化技巧) Luogu P1102 A-B数对 传送门 题意 给出一个数列 \(a_n\) 和一个数字 \(c\),需要你计算出所有满足 \(a_i-a_j=c\) 的数对 \((i,j)\) 的个数 其中 \(1\le n\le 2\times10^5,\ a_i\le 2^{30},\ 1\le c\le 2\times10^5\) 题解 先排个序,然后去重再统计一下相同数字

  • #团,构造#洛谷 3524 [POI2011]IMP-Party2022-04-14 21:31:08

    题目 有一个 \(3n\) 个点的无向图,保证有一个大小为 \(2n\) 的团,输出一个大小为 \(n\) 的团 分析 每次选择两个不相连的点删掉,那么剩下的 \(n\) 个点一定是团, 因为每次至少有一个不在大小为 \(2n\) 的团中的点被删除,所以剩下的点一定在团中。 但是只是最多删除 \(n\) 次,所以输出完

  • CTS2019D1T1 随机立方体2022-04-12 16:33:32

    做题时:难题啊,我不会啊 看题解:woc,简单题啊,我咋不会啊 讲一下卡住的步骤吧,就是在钦定了极大值的位置和选完数之后,如何算一个类似于十字架的方案。 我们考虑最大值,好的,我们递归到了一个子问题,做完了。 CTS2019 都是些什么神仙题啊! #include<bits/stdc++.h> using namespace std; #def

  • AtCoder Grand Contest 037(without F)2022-04-11 09:32:34

    AGC037 A - Dividing a String 洛谷传送门 AGC037A 分析 考虑每一段长度只可能是一或二,设 \(dp[i]\) 表示以 \(i\) 为结尾的前缀最多可以分成多少段。 如果 \(s[i]\) 和 \(s[i-1]\) 不同,那么 \(dp[i]=dp[i-1]+1\), 否则可以将 \(s[i-2,i-1]\) 分成一段,把 \(s[i]\) 分成一段,那么 \(

  • 中国剩余定理 P1495 【模板】中国剩余定理(CRT)/曹冲养猪2022-04-07 22:00:25

    1 #include<bits/stdc++.h> 2 using namespace std; 3 typedef long long ll; 4 const int N=1e5+5; 5 ll a[N],mod[N],ans,n,mulsum=1; 6 ll read() 7 { 8 ll x=0,f=1;char ch=getchar(); 9 while(ch<'0'||ch>'9'){if(ch=

  • BZOJ3732 Network(Kruskal重构树)2022-04-04 15:33:18

    Kruskal重构树的模板题。 给你N个点的无向图 (1 <= N <= 15,000),记为:1…N。图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: d_j ( 1 < = d_j < = 1,000,000,000). 现在有 K个询问 (1 < = K < = 20,000)。每个询问的格式是:A B,表示询问从A点走到B点的所有路径中,最长的边最小值是多

  • 2022/4/3 DP专场总结2022-04-03 20:35:23

    虽然现在是清明节假期期间,但架不住竞赛集训啊…… 懒得一道一道贴了,所以:比赛链接 A.饭卡 一道极其浅显易懂易做的线性DP; 虽然但是,还是由于没有取 \(|\) 而吃了两发罚时; AC code #include<iostream> #include<cstring> #include<cmath> #include<algorithm> using namespac

  • 反悔贪心2022-03-30 11:01:13

    参考好文 就是说反悔贪心有两种,一种反悔堆是需要你手动去把之前的劣解换出来,一种反悔自动机是通过类似网络流反向边一样的办法让你的贪心自动实现反悔。 P2949 贪心的选取大的,如果插不进去就把时间在它前面并且价值在它后面的换出来。为了手动换需要按时间顺序选,同时维护一个小根

  • ARC130 题解2022-03-30 06:00:06

    A. Remove One Character 容易发现 \(i,j\) 产生贡献当且仅当 \(\forall k\in[i,j],a_i=a_k=a_j\),于是对于每个连通块分别计算贡献即可。 #include<bits/stdc++.h> using namespace std; #define inf 1e9 const int maxn=2e5+10; const int mod=1e9+7; inline int read(){ int x=

  • NOIO2022 题解2022-03-28 15:00:40

    T1 丹钓战 对于 \((a_i,b_i)_n(n\le 200000)\),\(q(q\le 200000)\) 次询问子段 \([l,r]\) 中的 \((a_i,b_i)\) 依次加入栈,弹出 \(a_j=a_i\) 或 \(b_j\le b_i\) 的栈顶 \((a_j,b_j)\),并将 \((a_i,b_i)\) 放到栈顶,这 \(r-l+1\) 个数有多少个操作完后栈中只有 \((a_i,b_i)\)? 我的方

  • task5.c2022-03-27 18:33:42

    #include<stdio.h> int main() { char ans1,ans2; printf("第3章认真学完一遍了没?(输入y或Y表示认真学完一边了,输入n或N表示没有):"); ans1 = getchar(); getchar(); printf("\n动手敲代码实践了没?(输入y或Y表示敲了,输入n或N表示木有敲:");

  • task6.c2022-03-27 18:32:39

    #include <stdio.h> int main() { int answer; char words[5000]; printf("网课学习让一些人欢喜一些人忧.\n"); printf("1.作为喜欢学习且自律的人,觉得这样很好,有网络,自主学习,很ok.\n"); printf("2.不喜,不喜,很不喜.眼睛快瞎了,脑壳有点卡...\n"); p

  • task.5 c2022-03-27 16:31:09

    #include <stdio.h> int main() { char ans1, ans2; printf("第3章认真学完一遍了没? (输入y或Y表示认真学完一遍了,输入n或N表示没有) :"); ans1 = getchar(); getchar(); printf("\n动手敲代码实践了没? (输入y或Y表示敲了,输入n或N表示木有敲) : "); a

  • 实验52022-03-26 21:01:09

    #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

专注分享技术,共同学习,共同进步。侵权联系[admin#icode9.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有