P2077 红绿灯
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int dis[N];
int n, m;
int r[N];
int g[N];
int answer;
inline int read()
{
char c=getchar();
int x=0;
while(c<'0'||c>'9')c=getchar();
while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();
return x;
}
int main()
{
cin >> n >> m;
for(int i = 1; i <= n - 1; i ++)
cin >> dis[i];
for(int i = 1; i <= n; i ++)
r[i] = read();
for(int i = 1; i <= n; i ++)
g[i] = read();
answer += m;
for(int i = 1; i < n; i ++)
{
int lgj = answer % (g[i] + r[i]);
if(lgj > g[i])
answer += (r[i] + g[i] - lgj);
printf("%d\n", answer);
answer += dis[i];
}
int lgj = answer % (g[n] + r[n]);
if(lgj > g[n])
answer += (r[n] + g[n] - lgj);
printf("%d\n", answer);
return 0;
}
P1888 三角函数
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
using namespace std;
int GCD(int a, int b){
return b == 0 ? a : GCD(b, a % b);
}
int main(){
int n, m, b;
cin >> n >> m >> b;
int fz = min(min(n, m), b);
int fm = max(max(n, m), b);
int gcd = GCD(fz, fm);
printf("%d/%d", fz / gcd, fm / gcd);
}
P2181 对角线
#include<cstdio>
#include<iostream>
using namespace std;
unsigned long long n;
int main()
{
for(int i = 1; i <= -1; i ++) cout << "lgjsb";
cin>>n;
cout<<(n*(n-1)/2*(n-2)/3*(n-3)/4)<<endl;
return 0;
}
P1976 鸡蛋饼
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
long long f[100001];
int main()
{
int n;
scanf("%d",&n);
f[0]=1; f[1]=1;
for(int i=2;i<=n;i++)
for(int j=1;j<=i;j++)
f[i]=(f[i]+f[j-1]*f[i-j])%100000007;
printf("%lld",f[n]);
}
P3150 pb的游戏(1)
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i ++)
{
int m;
cin >> m;
if(m % 2) printf("zs wins\n");
else printf("pb wins\n");
}
return 0;
}
P1838 三子棋I
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
using namespace std;
int vis[4][4];//模拟棋盘
char s[10];//棋谱
int main()
{
scanf("%s",s+1);//输入字符串
int len=strlen(s+1);
int flag=1;
for(int i=1;i<=len;i++)
{
flag=-flag;//每次将flag变成相反数,代表更换执棋者
if(s[i]=='1')
vis[1][1]=flag;
if(s[i]=='2')
vis[1][2]=flag;
if(s[i]=='3')
vis[1][3]=flag;
if(s[i]=='4')
vis[2][1]=flag;
if(s[i]=='5')
vis[2][2]=flag;
if(s[i]=='6')
vis[2][3]=flag;
if(s[i]=='7')
vis[3][1]=flag;
if(s[i]=='8')
vis[3][2]=flag;
if(s[i]=='9')
vis[3][3]=flag;
}
if((vis[1][1]==1&&vis[1][2]==1&&vis[1][3]==1)||(vis[2][1]==1&&vis[2][2]==1&&vis[2][3]==1)||(vis[3][1]==1&&vis[3][2]==1&&vis[3][3]==1)||(vis[3][3]==1&&vis[1][1]==1&&vis[2][2]==1)||(vis[3][1]==1&&vis[2][2]==1&&vis[1][3]==1)||(vis[1][1]==1&&vis[2][1]==1&&vis[3][1]==1)||(vis[1][1]==1&&vis[1][2]==1&&vis[1][3]==1)||(vis[1][2]==1&&vis[2][2]==1&&vis[3][2]==1)||(vis[1][3]==1&&vis[2][3]==1&&vis[3][3]==1))//枚举8种情况
printf("uim wins.");
else if((vis[1][1]==-1&&vis[1][2]==-1&&vis[1][3]==-1)||(vis[2][1]==-1&&vis[2][2]==-1&&vis[2][3]==-1)||(vis[3][1]==-1&&vis[3][2]==-1&&vis[3][3]==-1)||(vis[3][3]==-1&&vis[1][1]==-1&&vis[2][2]==-1)||(vis[3][1]==-1&&vis[2][2]==-1&&vis[1][3]==-1)||(vis[1][1]==-1&&vis[2][1]==-1&&vis[3][1]==-1)||(vis[1][1]==-1&&vis[1][2]==-1&&vis[1][3]==-1)||(vis[1][2]==-1&&vis[2][2]==-1&&vis[3][2]==-1)||(vis[1][3]==-1&&vis[2][3]==-1&&vis[3][3]==-1))////枚举8种情况
printf("xiaoa wins.");
else printf("drew.");
}
P2043 质因子分解
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int sum[10001];
void fenjie(int x);
bool pz(int x);
int main()
{
int a,b,c,d,e;
int l,m,n,s,q;
cin>>n;
for (a=2;a<=n;a++)
if (!pz(a)) fenjie(a);
else sum[a]++;
for (a=2;a<=n;a++)
if (sum[a])
cout<<a<<' '<<sum[a]<<endl;
return 0;
}
bool pz(int x)
{
int a,b=sqrt(x)+1;
for (a=2;a<=b;a++)
if (x%a==0) return 0;
return 1;
}
void fenjie(int x)
{
int a;
for (a=2;;a++)
{
if (x%a==0)
{
sum[a]++;
x/=a;
a--;
}
if (x<=1) break;
}
}
P1424 小鱼的航程(改进版)
#include <bits/stdc++.h>
#define LL long long
using namespace std;
int main()
{
LL n, m, answer = 0;
cin >> n >> m;
if(n < 6) answer += 5 - n + 1;
m -= (7 - n + 1);
answer += (m / 7) * 5;
if(m % 7 < 6 && m % 7 != 0) answer += m % 7;
else if(m % 7 != 0 && m % 7 >= 6) answer += 5;
cout << answer * 250;
return 0;
}
P1909 买铅笔
#include <bits/stdc++.h>
using namespace std;
struct Node{
int baoshuliang;
int baojiage;
int xvyaomaijibao;
}jiegouti[4];
int yigongxvyaomaijizhi;
int main()
{
int answer = 999999999;
cin >> yigongxvyaomaijizhi;
for(int i = 1; i <= 3; i ++)
{
cin >> jiegouti[i].baoshuliang >> jiegouti[i].baojiage;
jiegouti[i].xvyaomaijibao = yigongxvyaomaijizhi % jiegouti[i].baoshuliang == 0 ? yigongxvyaomaijizhi / jiegouti[i].baoshuliang : yigongxvyaomaijizhi / jiegouti[i].baoshuliang + 1;
answer = min(answer, jiegouti[i].xvyaomaijibao * jiegouti[i].baojiage);
}
printf("%d", answer);
return 0;
}
P1319 压缩技术
#include <bits/stdc++.h>
using namespace std;
int a[40010];
int main()
{
int n;
cin >> n;
int sb;
int js = 0;
int how = 0;
while(scanf("%d", &sb) == 1)
{
how ++;
if(how % 2)//1
{
for(int i = js + 1; i <= js + sb; i ++) a[i] = 0;
js += sb;
}
else
{
for(int i = js + 1; i <= js + sb; i ++) a[i] = 1;
js += sb;
}
}
int tot = 0;
for(int i = 1; i <= n * n; i ++)
{
cout<<a[i];
tot ++;
if(!(tot % n))
{
tot = 0;
cout << endl;
}
}
return 0;
}
P1320 压缩技术(续集版)
#include <bits/stdc++.h>
using namespace std;
string s;
int main()
{
cin >> s;
int len = s.length();
for(int i = 1; i < len; i ++)
{
string ss;
cin >> ss;
s +=ss;
}
cout << len << " ";
int lenn = len * len;
if(s[0] != '0') cout << 0 << " ";
for(int i = 0; i < lenn; i ++)
{
int js = 0;
while(s[i + 1] == s[i]) js ++, i ++;
cout << js + 1 << " ";
}
return 0;
}
P2907 [USACO08OPEN]农场周围的道路Roads Around The Farm
#include<bits/stdc++.h>
using namespace std;
long long ans,sum;
long long n,k;
void dfs(int x)
{
if(x-k<=0) {
sum++;return;//这条路走到头了,结果++
}
if((x+k)%2==0)
{
dfs((x+k)/2);
dfs(x-(x+k)/2);//继续走,分两半递归
}
else sum++;
}
int main()
{
cin>>n>>k;
dfs(n);
cout<<sum;
}
P1496 火烧赤壁
#include<iostream>
#include<cstdio>
#include<algorithm>
#define maxn 20010
using namespace std;
int n;
int xx, yy, answer;
struct node {
int x, y;
} a[maxn];
struct Node {
inline int read() {
int x = 0, f = 1;
char c = getchar();
while(c < '0' || c > '9') {
if(c == '-') f = -1;
c = getchar();
}
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x * f;
}
}r;
int cmp(node u, node v) {
return u.x < v.x;
}
int main() {
n = r.read();
for(int i = 1; i <= n; i ++) a[i].x = r.read(), a[i].y = r.read();
sort(a + 1, a + n + 1, cmp);
xx = a[1].x;
yy = a[1].y;
answer += a[1].y - a[1].x;
for(int i = 2; i <= n; i ++)
{
if(a[i].x <= yy)
{
if(a[i].y < yy) continue;
else
{
xx = yy;
yy = a[i].y;
answer += yy - xx;
}
}
if(a[i].x > yy)
{
xx = a[i].x;
yy = a[i].y;
answer += yy - xx;
}
}
printf("%d", answer);
return 0;
}
P1789 【Mc生存】插火把
#include <bits/stdc++.h>
using namespace std;
const int N = 1000;
int n, m, k;
bool a[N][N];
inline int read()
{
int x = 0; char c = getchar();
while(c < '0' || c > '9') c = getchar();
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x;
}
int main()
{
n = read();
m = read();
k = read();
for(int i = 1; i <= m; i ++)
{
int x = read();
int y = read();
x += 2;
y += 2;
a[x][y] = a[x][y - 1] = a[x][y - 2] = a[x - 1][y] = a[x - 2][y] = a[x][y + 1] = a[x][y + 2] = a[x + 1][y] = a[x + 2][y] = 1;
a[x - 1][y - 1] = a[x - 1][y + 1] = a[x + 1][y - 1] = a[x + 1][y + 1] = 1;
}
for(int i = 1; i <= k; i ++)
{
int x = read();
int y = read();
for(int l = x; l <= x + 4; l ++)
for(int r = y; r <= y + 4; r ++)
a[l][r] = 1;
}
int answer = 0;
for(int i = 3; i <= n + 2; i ++)
for(int j = 3; j <= n + 2; j ++)
if(!a[i][j]) answer ++;
printf("%d", answer);
return 0;
}
P1138 第k小整数
#include <bits/stdc++.h>
int n, k;
bool tong[300001];
inline int read()
{
int x = 0; char c = getchar();
while(c < '0' || c > '9') c = getchar();
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x;
}
int main()
{
n = read();
k = read();
for(int i = 1; i <= n; i ++)
tong[read()] = 1;
int js = 0;
for(int i = 0; i <= 300000; i ++)
{
if(tong[i]) js ++;
if(js == k)
{
printf("%d", i);
return 0;
}
}
printf("NO RESULT");
return 0;
}
P2550 [AHOI2001]彩票摇奖
#include <bits/stdc++.h>
bool tong[40];
int jl[8];
inline int read()
{
int x = 0; char c = getchar();
while(c < '0' || c > '9') c = getchar();
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x;
}
int main()
{
int n = read();
for(int i = 1; i <= 7; i ++)
tong[read()] = 1;
for(int i = 1; i <= n; i ++)
{
int js = 0;
for(int j = 1; j <= 7; j ++) if(tong[read()]) js ++;
jl[7 - js] ++;
}
for(int i = 0; i < 7; i ++)
printf("%d ", jl[i]);
return 0;
}
P1597 语句解析
#include <bits/stdc++.h>
using namespace std;
string ss;
char s[250];
int main()
{
int a = 0, b = 0, c = 0;
cin >> ss;
int len = ss.length();
for(int i = 0; i < len; i ++) s[i + 1] = ss[i];
for(int i = 1; i <= len; i += 5)
{
if(s[i] >= 'a' && s[i] <= 'z' && s[i + 3] >= '0' && s[i + 3] <= '9')//zi mu shu zi
{
if(s[i] == 'a') a = s[i + 3] - '0';
if(s[i] == 'b') b = s[i + 3] - '0';
if(s[i] == 'c') c = s[i + 3] - '0';
}
else
{
if(s[i] == 'a' && s[i + 3] == 'b') a = b;
if(s[i] == 'a' && s[i + 3] == 'c') a = c;
if(s[i] == 'b' && s[i + 3] == 'a') b = a;
if(s[i] == 'b' && s[i + 3] == 'c') b = c;
if(s[i] == 'c' && s[i + 3] == 'a') c = a;
if(s[i] == 'c' && s[i + 3] == 'b') c = b;
}
}
printf("%d %d %d", a, b, c);
return 0;
}
P1847 轰炸II
#include <bits/stdc++.h>
using namespace std;
const int N = 2e3 + 10;
int m, n;
struct Node{
int x, y, xx, yy;
}E[N];
struct node{
int x, y, js, last;
}Z[N];
inline int read()
{
char c=getchar();
int x=0;
while(c<'0'||c>'9')c=getchar();
while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();
return x;
}
int main()
{
m = read();
n = read();
for(int i = 1; i <= m; i ++)
{
E[i].x = read();
E[i].y = read();
E[i].xx = read();
E[i].yy = read();
}
for(int i = 1; i <= n; i ++)
{
Z[i].x = read();
Z[i].y = read();
}
for(int i = 1; i <= n; i ++)
{
for(int j = 1; j <= m; j ++)
{
if(Z[i].x >= E[j].x && Z[i].x <= E[j].xx && Z[i].y >= E[j].y && Z[i].y <= E[j].yy)
Z[i].js ++, Z[i].last = j;
}
}
for(int i = 1; i <= n; i ++)
{
if(!Z[i].js) printf("NO\n");
else printf("YES %d %d\n", Z[i].js, Z[i].last);
}
return 0;
}
P1590 失踪的7
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cin >> n;
for(int i = 1; i <= n; i ++)
{
long long a;
cin >> a;
int answer = a;
for(int j = 1; j <= a; j ++)
{
int tmp = j;
bool flag = 1;
while(tmp && flag)
{
if(tmp % 10 == 7)
{
answer --;
flag = 0;
}
tmp /= 10;
}
}
printf("%lld\n", answer);
}
return 0;
}
P1936 水晶灯火灵
#include<iostream>
using namespace std;
long long f[1001],m,i(3);
int main(){
cin>>m;
f[1]=1;f[2]=1;//赋值前两个
while(f[i]+f[i-1]<=m){
f[i]=f[i-1]+f[i-2];//将斐波那契数列存储到f数组里
i++;
}
cout<<"m="<<f[i-3]<<endl;//这个地方i多加了一次
cout<<"n="<<f[i-2];
return 0;
//perfect!
}
P3741 honoka的键盘
#include <bits/stdc++.h>
using namespace std;
int n;
char a[110];
int answer;
int main()
{
bool flag = 1;
cin >> n;
scanf("%s", a + 1);
for(int i = 1; i < n; i ++)
if(a[i] == 'V' && a[i + 1] == 'K') answer ++, a[i] = a[i + 1] = '#';
for(int i = 2; i < n && flag; i ++)
{
if(a[i] == 'V' && a[i + 1] != '#') answer ++, flag = 0;
else if(a[i] =='K' && a[i - 1] != '#') answer ++, flag = 0;
}
printf("%d", answer);
return 0;
}
P2911 [USACO08OCT]牛骨头Bovine Bones
#include <bits/stdc++.h>
using namespace std;
int s1, s2, s3;
struct Node{
int js, who;
}a[1000000];
bool cmp(Node aa, Node b)
{
if(aa.js == b.js) return aa.who < b.who;
return aa.js > b.js;
}
int main()
{
cin >> s1 >> s2 >> s3;
for(int i = 1; i <= s1; i ++)
for(int j = 1; j <= s2; j ++)
for(int k = 1; k <= s3; k ++)
a[i + j + k].js ++, a[i + j + k].who = i + j + k;
sort(a + 1, a + s1 * s2 * s3 + 1, cmp);
printf("%d",a[1].who);
return 0;
}
P1765 手机_NOI导刊2010普及(10)
#include <bits/stdc++.h>
using namespace std;
char c[250];
int js;
int ans[] = {1, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 4, 1, 2, 3, 1, 2, 3, 4, 0};
int main()
{
int answer = 0;
char ch;
js = 0;
while((ch = getchar()) != '\n')
c[++ js] = ch;
for(int i = 1; i <= js; i ++)
if(c[i] == ' ') answer += ans[0];
else answer += ans[c[i] - 'a' + 1];
printf("%d", answer);
return 0;
}
P1482 Cantor表(升级版)
#include <bits/stdc++.h>
using namespace std;
inline int read()
{
int x = 0; char c = getchar();
while(c < '0' || c > '9') c = getchar();
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c = getchar();
return x;
}
int gcd(int a, int b)
{
return b == 0 ? a : gcd(b, a % b);
}
int main()
{
int xx, yy, aa, bb;
xx = read();
yy = read();
aa = read();
bb = read();
int xy = gcd(xx, yy);
xx /= xy; yy /= xy;
int ab = gcd(aa, bb);
aa /= ab; bb /= ab;
int fz = xx * aa;
int fm = yy * bb;
int f = gcd(fz, fm);
fz /= f; fm /= f;
printf("%d %d", fm, fz);
return 0;
}
P2369 EXCEEDED WARNING A
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
#define LL long long
int n, m;
LL a[N];
inline LL read()
{
char c=getchar();
LL x=0;
while(c<'0'||c>'9')c=getchar();
while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();
return x;
}
int main()
{
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i ++) a[i] = read();
sort(a + 1, a + n + 1);
for(int i = 1; i <= m; i ++) printf("%d\n", a[i]);
return 0;
}
P3879 [TJOI2010]阅读理解
#include <bits/stdc++.h>
using namespace std;
map <string, bool> mp[110];
inline int read()
{
int x = 0; char c = getchar();
while(c < '0' || c > '9') c = getchar();
while(c >= '0' && c <= '9') x = x * 10 + c - '0', c =getchar();
return x;
}
int main()
{
ios::sync_with_stdio(false);
int n;
cin>>n;
for(int i = 1; i <= n; i ++)
{
int l;
cin>>l;
for(int j = 1; j <= l; j ++)
{
string ls;
cin >> ls;
mp[i][ls] = 1;
}
}
int m;
cin>>m;
for(int i = 1; i <= m; i ++)
{
string s;
cin >> s;
for(int j = 1; j <= n; j ++)
if(mp[j][s])
{
printf("%d ", j);
continue ;
}
printf("\n");
}
return 0;
}