- 博客(117)
- 资源 (1)
- 收藏
- 关注
原创 B. Blocks
题意:每次翻转相邻的方格,问你翻转多少次使得颜色相同,求最少操作数虽然代码乱点,但思想还是蛮简单的,就是一个暴力反转问题 int main(){ IOS; while(cin>>n){ vector<int> w,b; //存储全为 白/黑 的答案 string s; cin>>s; string tmp=s; bool fb=0,fw=0; //判断全为
2020-06-30 19:50:56 298 1
原创 C. Shawarma Tent(思维)
题意:给你一个学校坐标和学生坐标,问你把帐篷放到哪学生到学校会经过它, 这个坐标使得经过它的学生人数最多,当然不能放到学校哪里int main(){ IOS; while(cin>>k){ int nx,ny; cin>>nx>>ny; int s=0,w=0,e=0,n=0; for(i=0;i<k;i++){ int x,y;...
2020-06-30 19:03:44 335
原创 1572:括号配对
const int N=400+5; int n,m,t; int i,j,k; //int a[N]; char ch[N]; int dp[N][N]; int main(){ IOS; while(cin>>ch+1){ n=strlen(ch+1); for(int len=2;len<=n;len++){ for(int i=1;i+len-1&l...
2020-06-30 17:13:20 487
原创 1570:能量项链
【题目描述】题做多了总会遇到重复的:原博客点击这里const int N=400+5; int n,m,t; int i,j,k; int a[N]; int head[N],tail[N]; int dp[N][N]; int main(){ IOS; while(cin>>n){ for(i=1;i<=n;i++) cin>>head[i],head[i+n]=head[i.
2020-06-30 16:58:10 428
原创 1569:石子合并
方程:dp[i][j]=dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]环形 dp 模板题const int N=400+5; int n,m,t; int i,j,k; int a[N]; int sum[N],dp_max[N][N],dp_min[N][N]; int main(){ IOS; while(cin>>n){ for(i=1;i<=n;i++){ ...
2020-06-30 16:40:12 585
原创 1068:和为 k 的组合
const int N=1e5+5; int n,m,t; int i,j,k; int a[N]; bool flag; bool vis[N]; void DFS(int cur,int sum){ if(sum>k) return ; if(sum==k){ flag=0; return ; } for(int i=cur+1;i<=n;i++){ //剪枝,从 cur 之前的数开始搜索的都没有结果 ...
2020-06-30 15:12:03 262
原创 1001:Hello,World!
#include <iostream>using namespace std;int main(){ cout<<"Hello,World!"; return 0;}
2020-06-29 23:55:11 225
原创 1005:地球人口承载力估计
#include <iostream>#include <cstdio>using namespace std;int main(){ int x,a,y,b; cin>>x>>a>>y>>b; printf("%.2lf\n",1.0*( ( x*a-y*b ) / (a-b) ) ); return 0;}
2020-06-29 23:54:15 1572 2
原创 1003:对齐输出
#include <iostream>#include <cstdio>using namespace std;int main(){ int a,b,c; cin>>a>>b>>c; printf("%8d %8d %8d\n",a,b,c); //system("pause"); return 0;}
2020-06-29 23:49:53 362
原创 B. Approximating a Constant Range(尺取+set)
给出一个长度为 n 的序列,保证任意两个相邻的数差值不超过1,问该序列中极差不超过 1 的最长子段长度const int N=1e5+5; int n,m,t; int i,j,k; int a[N]; multiset<int> all;int main(){ IOS; while(cin>>n){ for(i=0;i<n;i++) cin>>a[i]; all.c...
2020-06-29 23:44:01 345
原创 B. Azamon Web Services(思维)
字符串a,b 如果将字符串 a中的任意两个字符交换位置,交换后的字符串 a小于 b,输出交换后的字符串 a, 否则输出 ---一开始暴力了一发,T 了最有贪心策略:用 a 排好序的最小字典序与 a 本身比较,如果 a 的后面有着与最优字符串相同的字符,交换判断即可 string a,b;void go(){ string tmp=a; sort(tmp.begin(),tmp.end()); if(tmp>=b){ co...
2020-06-29 23:16:58 270
原创 1004:字符三角形
#include <iostream>using namespace std;int main(){ char ch; cin>>ch; cout<<" "<<ch<<endl; cout<<" "<<ch<<ch<<ch<<endl; cout<<ch<<ch<<ch<<ch<&...
2020-06-28 22:36:42 288
原创 1002:输出第二个整数
#include <iostream>using namespace std;int main(){ int a,b,c; cin>>a>>b>>c; cout<<b<<endl; return 0;}
2020-06-28 22:33:44 535
原创 H. The Longest Good Substring(尺取的另一种姿势)
给出一个字符串,求字符串所有子串中(出现的不同字母数不超过k)的最长的一个子串的起始位置和终止位置 map<int,int> mp;int main(){ IOS; freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); while(cin>>k){ string s; cin>>s; int ...
2020-06-28 22:23:30 1978
原创 1447:靶形数独(可行性剪枝 ~好题)
【题目描述】const int N=11+5;const int grade[10][10]{{0,0,0,0,0,0,0,0,0,0},{0,6,6,6,6,6,6,6,6,6},{0,6,7,7,7,7,7,7,7,6},{0,6,7,8,8,8,8,8,7,6},{0,6,7,8,9,9,9,8,7,6},{0,6,7,8,9,10,9,8,7,6},{0,6,7,8,9,9,9,8,7,6},{0,6,7,8,8,8,8,8,7,6},{0,6,7,7,7,7,..
2020-06-28 20:27:00 382
原创 P1118 [USACO06FEB]Backward Digit Sums G/S(杨辉三角)
这个数字三角形就是著名的杨辉三角这样我们与处理好杨辉三角的系数一步步递归求解 a,b,c,d,e 的字典序最小即可,即最先搜索到的const int N=22+5; int n,m,t; int i,j,k; int minn; bool vis[N]; int triangle[N][N]; //杨辉三角的系数 int a[N]; //记录答案void DFS(int step,int sum) //第一层中的第 step...
2020-06-28 17:36:39 475
原创 洛谷 P1433 吃奶酪
#define fr first#define sc secondconst int N=222+5; int n,m,t; int i,j,k; double minn; pair<double,double> p[N]; double dis[N][N]; bool vis[N];void DFS(int num,int now,double len) //已经吃过 num 块奶酪,当前处于 now 的位置及本次搜索的答案{...
2020-06-28 16:12:24 247
原创 C. As Simple as One and Two
input10onetwonetwooneooonetwoootwoonetwooooottttwottwwoooooneonnneoneeeeeoneeeeeeetwooooooutput618 11 12 1 6 21 11 13 12 16 014 011 21 11 one,删除n/e。 two,删除 t/w 。 twone,删除 o 。 避免出现two…o…onecon...
2020-06-28 10:31:13 301
原创 HDU NanoApe Loves Sequence Ⅱ(尺取模板)
退役的狗NanoApe已经回来准备参加国家高等教育入学考试!在数学课上,NanoApe再次获取序列。他写下了一个序列ñ数字和一个数字 m在纸上。现在他想知道序列的连续子序列中的第 k 个最大数字不小于m。注意:子序列的长度不得小于k。const int N=2e5+5; int n,m,t; int i,j,k; int a[N];int main(){ //IOS; rush(){ sd(n); sd(m); sd(k...
2020-06-26 23:18:32 235
原创 1443:Addition Chains
const int N=1e5+5; int n,m,t; int i,j,k; int minn=inf; int a[N],ans[N],len;void DFS(int step){ if(step>len) return ; if(a[step]>n) return ; if(a[step]==n){ if(step>=len) return ; len=step; ...
2020-06-26 22:38:37 288
原创 1441:生日蛋糕
int n,m,t; int i,j,k; int minn=inf;void DFS(int num,int volume,int area,int r,int h){ if(num==m){ if(volume==n) minn=min(minn,area); return ; } if(volume+(r-1)*(r-1)*(h-1)*(m-num) < n) return ; if(vol...
2020-06-26 21:38:20 424
原创 HDU 5289 Assignment(集合+尺取)
按题目要求即,一个子段上 最大值-最小值<k , ans++,在判断题目要求时有: abs(minn-a[r])<k && abs(maxx-a[r]<k)当判断 a[r]与集合中所有元素判断时有: a[r] 比最小值还小,只需要比较 maxx-a[r]<k a[r] 比最大值还大,只需要比较 a[r]-minn<k 当位于两者之间时,因为之前放入集合中的元素都满足 minn<=x<=maxx,...
2020-06-26 16:28:03 258
原创 D. Maximum Sum on Even Positions(最大字段和边形)
要想获得最大的偶数位置的值之和,我们只能反转一个字段,只能反转字段长度为偶数的字段,这样才使得操作有效。这样就变成了求最大字段和的问题,不过下标有了限制,回想一下,当时求最大字段和的时候,如果到 i 位置,字段和变为 0 ,那么我们将 字段和置为0当我们从奇数 i 位置开始反转时,所产生的价值为 a[i]-a[i-1]+sum;(sum是之前产生的价值)当从偶数 i 位置开始反转时,所产生的价值为 a[i-1]-a[i]+sumconst int N=2e5+5; i...
2020-06-26 15:23:05 794
原创 A. Donut Shops
int main() { IOS; rush(){ ll a,b,c; cin>>a>>b>>c; if(a>=c) cout<<-1<<" "<<b<<endl; else{ cout<<1<<" "; ...
2020-06-26 14:24:35 370
原创 C. Pluses and Minuses(思维)
当然像蒟蒻的我会在这个题上模拟一边伪代码,如果程序没有跳出的话,说明当前 cur 没有跑遍 s 数组就已经变成了负数,所以在下一次循环中 ,也就是 cur+1 的值仍能跑到当时 cur 跑到的地方,我们记下 cur 跑到的位置,以及在 cur 遍历数组过程中 res 增长的值 即可,思想类似于剪枝const int N=1e6+5; int n,m,t; int i,j,k; char s[N]; int main(){ IOS; rus...
2020-06-26 14:20:42 618
原创 Duathlon
const int N=1e6+5; int n; double m,t; int i,j,k; pair<double,double> p[N]; double C(double x){ //计算第 n 位与其余选手的耗时之差 double ans=inf; double t1=x/p[n-1].first+(m-x)/p[n-1].second; for(i=0;i<n-1;i++){ doub...
2020-06-26 11:10:11 259
原创 P1359 租用游艇
题目描述长江游艇俱乐部在长江上设置了n 个游艇出租站1,2,…,n。游客可在这些游艇出租站租用游艇,并在下游的任何一个游艇出租站归还游艇。游艇出租站i 到游艇出租站j 之间的租金为r(i,j),1<=i<=j<=n。试设计一个算法,计算出从游艇出租站1 到游艇出租站n 所需的最少租金。对于给定的游艇出租站i 到游艇出租站j 之间的租金为r(i,j),1<=i<...
2020-06-25 22:30:07 249
原创 1279:橱窗布置(flower)
//Created on 2020/2/22#include <iostream>#include <bits/stdc++.h>using namespace std;typedef long long ll;const int inf=0x3f3f3f3f;const int idata=500+5;int dp[idata][idata];in...
2020-06-25 22:25:49 687
原创 UmBasketella(三分裸题)
#define E 1e-11const double pi=acos(-1.0); int n,m,t; int i,j,k; double S;double C(double r) //计算体积{ double tmp=S-pi*r*r; double L=tmp/pi/r; //母线 double h=sqrt(L*L-r*r); return pi*r*r*h/3.0;}double get_high(double r)...
2020-06-25 22:12:21 244
原创 C1. Simple Polygon Embedding(几何)
已知边长为 1 ,给出偶数 n,求一个最小正方形将 2*n 边形包含起来的面积已知有一个正 n 边形,我们可以轻松求出 角度α,为 360/(2*n),因为 n 一定可以被四整除,所以一定有四条边在相互垂直,进而落在正方形上,所以边 AB 记为正方形的边长1/AB=tan(α),又知道pi=180°,所以 AB=1/tan(pi/n) int n,m,t; int i,j,k; string s; int main(){ //IOS;...
2020-06-25 20:33:59 431
原创 B. Ternary String
int n,m,t; int i,j,k; string s; int main(){ IOS; rush(){ cin>>s; int len=s.size(); int num[4]={0}; int l=0,ans=inf; for(i=0;i<len;i++){ num[s[i]-'0']++; wh...
2020-06-25 19:26:11 226
原创 1435:曲线
#define E 1e-11const int N=1e4+5; int n,m,t; int i,j,k; double a[N],b[N],c[N];double H,h,D;double C(double x){ double maxx=-1; for(i=0;i<n;i++){ maxx=max(a[i]*x*x+b[i]*x+c[i],maxx); } return maxx;}int main(...
2020-06-25 17:38:49 362
原创 1438:灯泡
#define E 1e-6 double H,h,D;double C(double x){ return x+D*(h-x)/(H-x);}int main(){ IOS; rush(){ cin>>H>>h>>D; double l=0,r=h; while(r-l>E){ double mid=(r+l)/2.0; do...
2020-06-25 17:18:58 382
原创 D. Walking Robot(贪心)
const int N=2e5+5; int n,m,t; int i,j,k; int a[N]; int main(){ while(~sd(n)){ int x,y; sdd(x,y); for(i=0;i<n;i++) sd(a[i]); int ans=0,maxx=y; for(i=0;i<n;i++){ if(a[i]==0){ ...
2020-06-24 23:59:15 698
原创 1434:Best Cow Fences
const int N=1e5+5; int n,m,t; int i,j,k; double a[N],b[N],sum[N];int main(){ cin>>n>>k; double maxx=0; for(int i=1;i<=n;i++) { sf(a[i]); maxx=max(maxx,a[i]); } double eps=1e-4; double l=0,r=maxx; while(r-l>...
2020-06-24 18:42:26 269
原创 Symmetry UVA - 1595( set+pair )
YESNOYES我们假设对称轴坐标为 x ,那么这 n 个点中每两个对称的点的横坐标 <X1, Xn> <X2,Xn-1> 满足X1+Xn=2*x或者是位于对称轴上的数 <Xm> (Xm*2 = x*2)所有数的横坐标相加则为 n*x,假设我们要判断 Xn 是否有对称点,只需要证明 2*x-Xn=X1即可,我们在等式两边 同 ×n,即可避免除法运算计算对称轴 Pair p[N]; set<Pair> all;...
2020-06-24 14:49:53 178
原创 Codeforces Round #652 (Div. 2)
A. FashionabLee#include <iostream>using namespace std;int main(){ int t; cin>>t; while(t--){ int n; cin>>n; if(n%4) cout<<"no"<<endl; else cout<<"yes"<<endl; }.
2020-06-24 10:28:15 228
原创 Compound Words
#include<iostream>#include<cstring>#include<algorithm>#include<map>#include<set>using namespace std;const int maxn = 120010;int main(){ set<string> s; string str; while(cin>>str) { s.insert(str); ...
2020-06-23 23:52:14 391
原创 substr() 函数
包含头文件 <string>s . substr( pos , len ) ;从初始位置 pos 开始读取长度为 len 个字符#include <iostream>#include <iostream>int main(){ std::string s="12345 abc"; std::cout << s.substr(0,5) << std::endl; std::cout << s.s
2020-06-23 23:50:12 10620
原创 Foreign Exchange(map)
Sample Input101 22 13 44 3100 200200 10057 22 571 22 1101 23 45 67 89 1011 1213 1415 1617 1819 200Sample OutputYESNO int n,m,t; int i,j,k; map<Pair,int> mp;int main(){ //IOS; while(~sd(n)...
2020-06-23 21:40:28 192
codeblocks17.12安装包.zip
2020-07-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人