首页 > TAG信息列表 > kase
P1980 [NOIP2013 普及组] 计数问题
#include<stdio.h> #include<string.h> #include<stdlib.h> char num[10]; int main() { int n, x; while(scanf("%d %d", &n, &x) != EOF) { int kase = 0; for(int i = 1; i <= n; i++) {P1150 Peter的烟
#include<stdio.h> int main() { int n, k; while(scanf("%d %d", &n, &k) != EOF) { int kase = 0; int i = 0; while(n > 0) { n--; kase++; i++;poj 1953(斐波那契通项公式解法)
#include<iostream> #include<cmath> #include<cstdio> using namespace std; int main(){ int t,i,kase; long long n; double ans; scanf("%d",&t); kase = 1; while(kase<=t){ scanf("%lld"poj 2924(水题)
#include<iostream> #include<cstdio> using namespace std; int main(){ long long n,m,i,ans; scanf("%lld",&i); for(int kase=1;kase<=i;kase++){ scanf("%lld%lld",&n,&m); printf("Sc调和级数
公式:f(n)=ln(n)+C+1/(2*n) 当n < 10000时,直接算,大于10000时用公式,其中C≈0.57721566490153286060651209 #include<bits/stdc++.h> using namespace std; const double r = 0.57721566490153286060651209; double a[10000]; int main() { a[1] = 1; for (int i = 2; i &cf1486 D. Max Median - 判断是否存在一个区间和大于0
给出一个数组,长度是n,对于区间,长度至少为k 求最大区间中位数 传送门 用二分去求。 对于某个数字判断是否是中位数: 首先肯定的是大于等于中位数数的数的数字比小于中位数的数字要来的大。 那么就求出前缀和 如果这个数字比中位数小,那么权值就是-1,否则就是1 然后只需要去判断是否存在例题 9-5 劲歌金曲(Jin Ge Jin Qu [h]ao Rujia Liu‘s Present 6, UVa 12563)
原题链接:https://vjudge.net/problem/UVA-12563 分类:背包问题 备注:0-1背包变形 注意:千万不要包括给的时间t,因为劲歌金曲是必须要唱的! #include<bits/stdc++.h> using namespace std; const int maxt=50*180+678; int T,t,n,a[55],dp[55][maxt+5]; int main(void){ // frehdu4632(区间dp)
题意: 给定字符串,求不同回文子序列的个数(不同表示小标不同即可)。 题解: 考虑区间dp做法 dp[i][j]表示从i到j的不同子序列的个数,包含一点容斥思想。 if a[i] 和a[j]不等 dp[i][j]=dp[i][j-1]+dp[i+1][j]-dp[i+1][j-1] (表示取i到j-1和i+1到减掉i+1到j-1的部分,因为中间加了两次) else大理石问题(STL)
如何从N个大理石中找到特定数,先输入N,再输入Q,输入大理石的编号,再输入问题; for example: 4 1 2 3 5 1 5 #include<cstdio>#include<algorithm> using namespace std;const int maxn = 10000;int a[maxn]; int main(){ int n, q, x; int kase = 0; while(scanf("%d%d", &n, &amUVA - 11536 Smallest Sub-Array(尺取法)
题目: 思路: 读完题之后第一时间想到的是尺取法来做这个题,结果让自己写写崩了,还是练得少!! 到网上搜了一下学习了大佬的标记方法,用一个变量来判断是不是都已经出现,要比每次都判断一下快超多。 代码: #include <bits/stdc++.h> #define inf 0x3f3f3f3f #define MAX 1e3 #define FRE(UVA - 1620 Lazy Susan(逆序数)
题目: 把1~n(n≤500)放到一个圆盘里,每个数恰好出现一次。每次可以选4个连续的数字翻转顺序。问能不能变成1.2.3....n的顺序。 思路: 这样的题的规律真的是一点都不好推,看了网上的博客知道只有n为奇数且给出的序列的逆序数为奇数的时候,这种情况下是不能完成的,其余的情况都可以。 如果nDividing POJ - 1014 多重背包二进制优化
多重背包模型 写的时候漏了一个等号找了半天 i<<=1 !!!!!! 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 int a[500]; 6 int dp[120006]; 7 int m[120006]; 8 int main(){ 9 int n=6; 10 int kase=1; 11 while(