A - Score

UVA - 1585

#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin>>n;
while(n--){
int sum=;
string s;
cin>>s;
int len=s.size();
int tmp=;
for(int i=;i<len;i++){
if(s[i]=='O')sum+=tmp,tmp++;
else {
sum+=tmp;
tmp=;
}
}
sum+=tmp;
cout<<sum<<endl;
}
return ;
}

B - Tetrahedron

CodeForces - 166E

题意:四面体,从D走n-1步回到D点,问你有多少种走法,数据量1e7;

标准错误解法:广搜:

#include<iostream>
#include<queue>
using namespace std;
#define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
#define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
#define pb push_back
#define pf push_front
#define fi first
#define se second 11
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
typedef double db;
// const db PI=acos(-1.0);
const ll INF=0x3f3f3f3f3f3f3f3fLL;
const int inf=0x3f3f3f3f;//0x7fffffff;
const double eps=1e-;
const ll MOD=1e9+;
const int maxn=1e3+;
ll n,ans;
struct node{int id;ll step;node(int x,ll y){id=x,step=y;}};
void bfs(){
queue<node>Q;
Q.push(node(,));
while(!Q.empty()){
node tmp=Q.front();
Q.pop();
if(tmp.step==n&&tmp.id==){
ans++;
}
if(tmp.id==&&tmp.step<n){
int t=(tmp.step+)%MOD;
Q.push(node(,t));
Q.push(node(,t));
Q.push(node(,t));
}
if(tmp.id==&&tmp.step<n){
int t=(tmp.step+)%MOD;
Q.push(node(,t));
Q.push(node(,t));
Q.push(node(,t));
}
if(tmp.id==&&tmp.step<n){
int t=(tmp.step+)%MOD;
Q.push(node(,t));
Q.push(node(,t));
Q.push(node(,t)); } if(tmp.id==&&tmp.step<n){
int t=(tmp.step+)%MOD;
Q.push(node(,t));
Q.push(node(,t));
Q.push(node(,t));
}
}
}
int main(){
cin>>n;
ans=;
bfs();
cout<<ans<<endl;
// system("pause");
return ;
}

fyh正解:dp;

这个很像dp,定义状态:  dp(i,j)为走i步,到了 j 点 ;

每走一步都受前面状态影响:转移方程为:    dp[i][j]+=dp[i-1][k];

#include<bits/stdc++.h>
using namespace std;
#define rep(i,j,k) for(int i=(int)j;i<=(int)k;i++)
#define per(i,j,k) for(int i=(int)k;i>=(int)j;i--)
#define pb push_back
#define pf push_front
#define fi first
#define se second 11
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
typedef double db;
// const db PI=acos(-1.0);
const ll INF=0x3f3f3f3f3f3f3f3fLL;
const int inf=0x3f3f3f3f;//0x7fffffff;
const double eps=1e-;
const ll MOD=1e9+;
const int maxn=1e7+;
int dp[maxn][];
int main(){
int n;
cin>>n;
dp[][]=;
dp[][]=;
dp[][]=;
dp[][]=;
for(int i=;i<=n;i++)
for(int j=;j<=;j++){
for(int k=;k<=;k++){
if(j==k)continue;
dp[i][j]+=dp[i-][k];
// else dp[i][j]=
dp[i][j]%=MOD;
}
}
cout<<dp[n][]<<endl;
return ;
}

G - Jumping Jack

CodeForces - 11B

题意:给你一个x   小于1e9;问你从0走到x要走几步;

解法:这题本来想广搜,问题和抓住那头牛很像,但数据量太大,搜索爆炸,本来想优化,但怎么搞呢?

正解:你想他 想左走向右走,在第n步,本来走  n+n+1,但现在变成了   -n+n+1,相差  2*n  步,这是个微调;

那你直接一直跳,超过的步数如果是偶数,就n/2步,是奇数肯定不能这样微调的,只能继续走。

和抓住这头牛 不一样,这题向左再向右是有策略的 ,可以微调的;

#include<bits/stdc++.h>
using namespace std;
int main(){
int x;
cin>>x;
if(x<)x=-x;
int sum=;
int i;
for(i=; ;i++){
sum+=i;
if(sum==x)break;
else if(sum>x&&(sum-x)%==)break; }
cout<<i<<endl;
return ;
}

D - Ehab and a 2-operation task

CodeForces - 1088C

这题傻眼了:

题意:让你对一个序列进行n+1次操作。怎么把它变成严格单增的序列;

做法:先模1,这样全都清空为0,然后都变成2*n,一步步取余,最后就是单增得了;

但是为什么不是2n呢,手算一下就知道了,后面会重合;

#include<bits/stdc++.h>
using namespace std;
int main(){
int n,k;
cin>>n;
for(int i=;i<=n;i++)scanf("%d",&k);
printf("%d\n",n+);
printf("2 %d 1\n",n);
printf("1 %d %d\n",n,*n);
for(int i=;i<n;i++){
printf("2 %d %d\n",i,*n-i);
} return ;
}

C - Permute Digits

CodeForces - 915C

题意:给你a,b,让你把a变成小于b的最大数。
解法:开始大模拟:
但一直wa,后来又mqf给了这样一组数据;3517 3503,
开始没有考虑取不到解的情况。
就是你一直取大于小于的,如果后面无解呢?只能回退,让前面的变小。
这点没考虑到。
然后模拟一直崩,有时间再来调一下。

错误解法:

#pragma comment(linker, "/STACK:102400000,102400000")
#include<bits/stdc++.h>
using namespace std;
#define pb push_back
#define pf push_front
#define fi first
#define se second 11
typedef long long ll;
typedef unsigned long long ull;
typedef long double ldb;
typedef double db;
const db PI=acos(-1.0);
const ll INF=0x3f3f3f3f3f3f3f3fLL;
const int inf=0x3f3f3f3f;//0x7fffffff;
const double eps=1e-;
const ll MOD=1e9+;
const int maxn=1e7+;
int vis[];
bool flag;
int find(int x){
for(int j=;j>=;j--){
if(!flag&&vis[j]>&&j<=x){
if(j<x)flag=;
vis[j]--;
return j;
} else if(flag&&vis[j]>){
vis[j]--;
return j; }
}
return -;
}
int main(){ flag=;
string sa,sb;
cin>>sa>>sb;
if(sa.size()<sb.size()){
sort(sa.begin(),sa.end());
int len=sa.size();
for(int i=len-;i>=;i--)//逆序输出
cout<<sa[i];
} else {
memset(vis,,sizeof vis);
// vector<int>ans;
int ans[];
int len=sa.size();
for(int i=;i<len;i++){
int tmp=sa[i]-'';
vis[tmp]++;
} len=sb.size();
int i;
for( i=;i<len;i++){
int t=sb[i]-'';
int tmp=find(t);
if(tmp!=-)ans[i]=tmp;
else { while(tmp==-){
i--;
vis[ans[i]]++;
t=sb[i]-''-;
tmp=find(t);
}
ans[i]=tmp;
vis[tmp]--;
flag=;
} }
// int p=0;
// while(ans[p]==0&&p!=len-1)p++; for(int i=;i<len;i++)
cout<<ans[i];
}
return ;
}
//

正确解法:用string里的大小比较,默认最小,然后每次从最高位开始找,能替换就替换掉。
如果替换后大于b,就退回来,确实很巧妙。

#include<bits/stdc++.h>
using namespace std;
int main(){
string t,a,b;
cin>>a>>b;
sort(a.begin(),a.end());
if(a.size()<b.size()){
reverse(a.begin(),a.end());
}
else {
int len=a.size();
int L,R;
for(L=;L<len;L++){
R=len-;
t=a;
while(L<R){
swap(a[L],a[R--]);
sort(a.begin()+L+,a.end());
if(a>b)a=t;
else break;
} } }
cout<<a<<endl;
return ;
}

E - System Administrator

英语吓得不轻;

#include<bits/stdc++.h>
using namespace std;
int main(){
int suma=,sumb=,oka=,okb=;
int n,t,x,y;
cin>>n;
while(n--){
cin>>t>>x>>y;
if(t==){
suma+=;
oka+=x;
}
else {
sumb+=;
okb+=x;
}
}
if(oka>=suma/)cout<<"LIVE"<<endl;
else cout<<"DEAD"<<endl;
if(okb>=sumb/)cout<<"LIVE"<<endl;
else cout<<"DEAD"<<endl; return ;
}

F - Squares

CodeForces - 263B

看清题意就好了,站在边上的不算属于这个空间;

#include<bits/stdc++.h>
using namespace std;
int a[];
int main(){
int n,k;
cin>>n>>k;
for(int i=;i<=n;i++)scanf("%d",&a[i]);
sort(a+,a++n);
if(k>n)cout<<"-1"<<endl;
else {
cout<<a[n-k+]<<" "<<a[n-k+]<<endl;
}
return ;
}

苏州大学ICPC集训队新生赛第二场的更多相关文章

  1. Xeon 第一次训练赛 苏州大学ICPC集训队新生赛第二场(同步赛) [Cloned]

    A.给出一个字符串,求出连续的权值递增和,断开以后权值重新计数,水题 #include<iostream> #include<string> #include<cmath ...

  2. Contest1592 - 2018-2019赛季多校联合新生训练赛第二场(部分题解)

    Contest1592 - 2018-2019赛季多校联合新生训练赛第二场 D 10248 修建高楼(模拟优化) H 10252 组装玩具(贪心+二分) D 传送门 题干 题目描述 C 市有一条东西走 ...

  3. NOI.AC NOIP模拟赛 第二场 补记

    NOI.AC NOIP模拟赛 第二场 补记 palindrome 题目大意: 同[CEOI2017]Palindromic Partitions string 同[TC11326]Impossible ...

  4. 可持久化线段树的学习(区间第k大和查询历史版本的数据)(杭电多校赛第二场1011)

    以前我们学习了线段树可以知道,线段树的每一个节点都储存的是一段区间,所以线段树可以做简单的区间查询,更改等简单的操作. 而后面再做有些题目,就可能会碰到一种回退的操作.这里的回退是指回到未做各种操作之 ...

  5. SCNU省选校赛第二场B题题解

    今晚的校赛又告一段落啦,终于"开斋"了! AC了两题,还算是满意的,英语还是硬伤. 来看题目吧! B. Array time limit per test 2 seconds me ...

  6. 【CQ18阶梯赛第二场】题解

    [A-H国的身份证号码I] 用N个for语句可以搞定,但是写起来不方便,所以搜索. dfs(w,num,p)表示搜索完前w位,前面x组成的数位num,最后以为为p. 如果搜索到第N位,则表示num满足 ...

  7. 2019.10.24 CSP%你赛第二场d1t3

    题目描述 Description 精灵心目中亘古永恒的能量核心崩溃的那一刻,Bzeroth 大陆的每个精灵都明白,他们的家园已经到了最后的时刻.就在这危难关头,诸神天降神谕,传下最终兵器——潘少拉魔盒 ...

  8. 暑假集训单切赛第二场 UVA 11988 Broken Keyboard (a.k.a. Beiju Text)(字符串处理)

    一开始不懂啊,什么Home键,什么End键,还以为相当于括号,[]里的东西先打印出来呢.后来果断百度了一下. 悲催啊... 题意:给定一个字符串,内部含有'['和']'光标转移指令,'['代表光标移向 ...

  9. 暑假集训单切赛第二场 UVA 10982 Troublemakers

    题意:将点放在两个集合,同一个集合的边保留,不同集合的边删去,使得边至少减少一半.  输出任何一种方案即可.如果不能,输出Impossible 思路:设如果两个人为一对捣蛋鬼,则two[i][j]=t ...

随机推荐

  1. python学习 第一章 one day(补)

    python入门 一.编写Hello,World 方法一. 进入解释器,实施输入并获取到执行结果 C:\Users\84535>python Python 3.7.4 (tags/v3.7.4: ...

  2. Linux --xrandr command

    Source: https://www.x.org/archive/current/doc/man/man1/xrandr.1.xhtml https://blog.csdn.net/syh_486_ ...

  3. mybatis官方中文文档

    http://www.mybatis.org/mybatis-3/zh/index.html

  4. vue移动端transition兼容

    vue移动端transition兼容 .face-recognition .wrapper(:style="{height: viewHeight+'px'}") .face-re ...

  5. ch8 faux列

    在一个布局中,假设有导航元素和内容元素,切给他们都分别应用了背景,理想情况下,背景应该拉长到整个布局的最大高度,从而形成列的效果,但是实际上,因为导航元素没有扩展到最大高度,所以它们的背景不会拉长,如 ...

  6. 如果不想在django 的settings中保存mysql数据库的密码

    如题,你可以编写一个配置文件,用'OPTIONS' 将该配置文件导入进来,这样你发布到git上的源码上就没有你的数据库密码了. 这是django推荐的方法. # settings.py DATABAS ...

  7. python默认参数问题

    我们在定义默认参数时,有时会遇到一写似乎难以理解的问题.比如,在第二次调用函数时,默认参数记住了上一次执行的结果: >>> def test(L=[3,]): ... L.appen ...

  8. Jmeter插件解释

    Jmeter插件解释 1.jp@gc - Actiive Threads Over Time:不同时间活动用户数量展示(图表)  2.jp@gc - AutoStop Listener :自动停止监听 ...

  9. 基于Python的大数据的分页模型代码

    最近在写一个cmdb系统的分页,尽管Django本身有分页的模块儿,但是还是想实现一下自己心中想的分页的一种逻辑 因为,在我们工作当中,当我们的数据量超级大的时候,其实我们每次分页查询都不必将所有的数 ...

  10. vs2010编译C++ 指向指针的指针

    #include "stdafx.h" #include <iostream> using namespace std; int _tmain(int argc, _T ...