ICode9

精准搜索请尝试: 精确搜索
  • [JOISC2014] 挂饰2021-11-05 13:02:22

    Rose 不是一般的01背包 因为有后效性,也就是因为重量可以是负的(钩子越放越多) 为了抵消这种影响,按照钩子数量从大到小排序 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<stack> #include<algorithm> using namespace std; te

  • CF1322B Present2021-11-05 07:00:06

    Jinnie 看到莫名其妙的异或题,应该考虑按照位数处理。 这样我们分别考虑每一位的答案,需要先取模。 排序,让序列有了单调性,并且可以观察到,对于第k位只有两个数的和属于 \([2^k,2^{k+1}-1]\cap[2^{k+1}+2^k,2^{k+2}-2]\)才行 最后的右边界是什么东西?我们取模了啊. 双指针解决。 #inclu

  • Snowflake Snow Snowflakes2021-10-31 12:34:37

    Miku hash一波 然后拉链法散列表 #include<iostream> #include<cstdio> #include<cmath> #include<vector> #include<algorithm> using namespace std; template<class T>inline void read(T &x) { x=0;register char c=getchar();register

  • codeforces108A2021-10-27 23:02:53

    sol:暴力每次加一分钟 printf(“%02d",a) 表示不到两位左边补0 #include <bits/stdc++.h> using namespace std; typedef int ll; inline ll read() { ll s=0; bool f=0; char ch=' '; while(!isdigit(ch)) {f|=(ch=='-'); ch=getchar();} while(i

  • codeforces600B2021-10-25 01:04:06

    sol:简单题,复习一下upper_bound #include <bits/stdc++.h> using namespace std; typedef int ll; inline ll read() { ll s=0; bool f=0; char ch=' '; while(!isdigit(ch)) {f|=(ch=='-'); ch=getchar();} while(isdigit(ch)) {s=(s<&

  • codeforces689A2021-10-23 13:00:40

    div2A 用四个二进制位记每个点状态,O(n)判断一下即可 #include <bits/stdc++.h> using namespace std; typedef int ll; inline ll read() { ll s=0; bool f=0; char ch=' '; while(!isdigit(ch)) {f|=(ch=='-'); ch=getchar();} while(isdigit(ch)) {s=

  • codeforces553A2021-10-22 01:02:40

    sol:很显然的组合数,就是把当前的ai个塞进前面里去 模数是质数也很行 #include <bits/stdc++.h> using namespace std; #define int long long typedef int ll; inline ll read() { ll s=0; bool f=0; char ch=' '; while(!isdigit(ch)) {f|=(ch=='-'); ch=getchar();

  • codeforces222A2021-10-22 01:00:07

    sol:显然只有后面一串相同才行,因为只能删除前面的元素 #include <bits/stdc++.h> using namespace std; typedef int ll; inline ll read() { ll s=0; bool f=0; char ch=' '; while(!isdigit(ch)) {f|=(ch=='-'); ch=getchar();} while(isdigit(ch)) {s=(s

  • P3857 [TJOI2008]彩灯2021-10-21 11:32:50

    Jinnie 显然是一个线性基的问题,那么很显然要用线性基 想要知道所有的方案数,线性基的性质就是用其中的元素\(xor\) 出来的元素保证互不相等 这样的话只要知道线性基内元素的数量就可以了 #include<bits/stdc++.h> #define int long long using namespace std; template<class T>inl

  • #随机#CF1198F GCD Groups 22021-10-19 12:03:26

    题目 将 \(n\) 个数分为两组,使得两组的GCD都为1,求具体的分组情况 分析 考虑直接打乱 \(n\) 个数,如果能使第一组GCD减小就减小,否则丢到第二组, 由于打乱后出错的概率会减小,所以random_shuffle一百多次就很难出错 要不然就直接记结论吧/doge 代码 #include <cstdio> #include <ccty

  • [省选联考 2021 B 卷] 取模2021-10-17 11:34:22

    题目链接 [P7521 省选联考 2021 B 卷] 取模 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题解 想了半天一看竟然是个暴力题。。。 我们可以把所有的情况分为两类:\(a_i+a_j< a_k\)和\(a_i+a_j\geq a_k\) 对于第二种情况,可以证明只能从\((a_{i-2}+a_{i-1})\%a_i\)中取得,如果有一

  • [题解]P12802021-10-16 22:06:15

    题目描述: P1280 思路: (本时刻无任务)f[i]=f[i+1]+1;//继承上一个时刻的最大空闲时间后+1 (本时刻有任务)f[i]=max(f[i],f[i+a[sum])//a[sum]表示在这个时刻的任务的持续时间,找出选择哪一个本时刻任务使空闲时间最大化 很简单的事了,用vector防爆。 代码: 本代码自带快读。 #include

  • #贪心#CF840A Leha and Function2021-10-15 09:31:37

    题目 设 \(f(n,k)\) 表示 区间 \([1,n]\) 选出 \(k\) 个元素的集合的期望最小值, 现在需要重排 \(a\) 数组,使得 \(\sum_{i=1}^mf(a_i,b_i)\) 最大 分析 \[f(n,k)=\frac{\sum_{i=1}^ni*C(n-i,k-1)}{C(n,k)} \]这个式子可以推出来答案是 \(\frac{n+1}{k+1}\) 还可以通过模型转换, 期

  • CF148E Porcelain2021-10-12 16:04:05

    LIsa 就是一个背包 #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<algorithm> #define int long long using namespace std; template<class T>inline void read(T &x) {

  • CF1200E Compress Words2021-10-12 16:02:45

    LIsa 只要理解kmp,就会知道应该找前缀和后缀了 把当前输入的串和已知的答案串拼起来,然后中间加上一个小小的不存在字符,跑kmp #include<cstdio> #include<iostream> #include<cstring> #include<iomanip> #include<cmath> #include<algorithm> using namespace std; string s,ans; s

  • codeforces603A2021-10-10 22:02:45

    sol: 手玩之后发现,一个00(11)可以使答案+1 一个000(111)可以使答案+2 两个00(11)可以使答案+2 三个00(11)还是+2   #include <bits/stdc++.h> using namespace std; typedef int ll; inline ll read() { ll s=0; bool f=0; char ch=' '; while(!isdigit(ch)) {f|=(ch=='-&

  • 洛谷 CF1107E Vasya and Binary String(区间dp)2021-10-10 17:03:44

    传送门 解题思路 看出是区间dp,但是就是不会设计状态,不会写状态转移方程/kk/kk 设dp[i][j][k]表示区间i到j加上左面连续k个a[i]的答案。 最后答案即为dp[1][n][0]。 状态转移分为两种情况: 让前k个和第i位连起来处理:dp[i+1][j][0]+w[k+1] 枚举断点p,让i+1到p-1先单独处理完,相当于把

  • Python:判断是否是闰年2021-10-10 10:02:19

    #判断是否是闰年 while True: year_str= input("请输入年份:") if year_str.isdigit(): #str.isdigit 判断字符串是否为数字 year=int(year_str) if (year % 4==0 and year %100 != 0) or year % 400 ==0: print("这是闰年!") e

  • codeforces498A2021-10-10 01:04:36

    sol:很显然答案就是两个坐标之间的线段数量 O(n)判断一下就行了 #include <bits/stdc++.h> using namespace std; typedef int ll; inline ll read() { ll s=0; bool f=0; char ch=' '; while(!isdigit(ch)) {f|=(ch=='-'); ch=getchar();} while(isdigit(c

  • 洛谷 P3370 【模板】字符串哈希2021-10-08 08:00:26

    传送门 解题思路 可以自己取一个大质数当做模数,或者直接利用unsigned long long的溢出。 进制也可以选择一个较小的质数,如13131或者15151等。 AC代码 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<iomanip> #include<vector> #include<ctime

  • 快读模板2021-10-07 12:04:20

    namespace fdata { inline char nextchar() { static const int BS = 1 << 21; static char buf[BS], *st, *ed; if (st == ed) ed = buf + fread(st = buf, 1, BS, stdin); return st == ed ? -1 : *st++; } #ifdef lky233 #define nextchar g

  • 「POI2012」字母 Letters2021-10-02 15:03:08

    RT。一道很有意思的BIT题。 首先给出两个串。 我们发现,在同一个串中相同的字符是不会交换的。 故,我们可以将一个串中的字符给予另一个串中的位置。 即: a[i] = v[id(c)][nk[id(c)] ++]; 这样,对于每个\(a_i\), 都有一个比他或大或小的位置,那么,类比权值计算逆序对即可。 #include

  • 计算机二级:二进制的字符串转十进制;四种格式化输出方法replace,join,isdigit,isalpha,isalnum,split,splitlines的用法2021-10-01 22:04:50

    计算机二级:二进制的字符串转十进制:  运行结果: 四种格式化输出方法:  运行结果:   replace,join,isdigit,isalpha,isalnum,split,splitlines的用法: 运行结果:              

  • #结论#洛谷 3199 [HNOI2009]最小圈2021-09-28 16:32:13

    题目 求有向图最小平均权值回路。 \(n\leq 3*10^3,m\leq 10^4\) 分析 设 \(f_k(x)\) 表示从点 \(x\) 出发恰好走 \(k\) 条边的最短路, 那么答案就是 \(\min_{x=1}^n\max_{k=0}^{n-1}\frac{f_n(x)-f_k(x)}{n-k}\) 所以直接 \(O(nm)\) 就可以了,证明见_rqy dalao的博客 0/1分数规划的

  • 洛谷 P1799 数列(dp)2021-09-26 17:00:49

    传送门 解题思路 我们发现到某一位时,前面擦去那些数字并不影响当前位,影响的只有前面擦去的数量。 设dp[i][j]表示到第i个数共擦去j个数的答案。 则dp[i][j]=max(dp[i-1][j-1],dp[i-1][j]+(i-j==a[i])); 最后答案就是max(dp[n][j])。 AC代码 #include<cstdio> #include<iostream>

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

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

ICode9版权所有